图像分类
学习使用 Hugging Face 模型进行图像分类。
人们普遍误以为 Hugging Face 仅限于自然语言处理(NLP)任务。然而,Hugging Face 实际上提供远不止这些功能。本章将介绍如何使用 Hugging Face 模型完成计算机视觉任务。
视觉 Transformer
Transformer 模型在自然语言处理领域取得了惊人的流行度和令人难以置信的效果,这使得计算机视觉领域的研究人员开始思考:Transformer 是否也能应用于图像分类(识别图像中的物体,通常为单个物体)任务中。
尽管此前已有一些间接且效果有限的方案(例如将 CNN 与 Transformer 结合使用),但研究者们仍迫切希望直接在图像上应用 Transformer。
在ICLR 2021(人工智能与机器学习领域顶级会议之一,按 h-index 排名位居前列)上,来自 Google Brain 的研究团队发布了他们的研究,首次展示了将 Transformer 应用于图像分类任务的方法。该方法不仅取得了良好效果,还对计算资源的需求更少。
如今,使用 Transformer 进行图像分类及其他计算机视觉任务已成为常态。仅在 2022 年 7 月,Hugging Face 上的 Google Vision Transformer 模型就被下载了 138,000 次,而这还只是 Hugging Face 提供的众多视觉 Transformer 模型之一。
推理
图像分类有许多实际应用场景。例如,我们可以用它来从相册中找出所有包含猫的照片。许多照片管理应用都使用该技术实现自动打标签。
要使用视觉 Transformer 进行分类,我们将采用 image-classification 管道:
1imageClassifier = pipeline("image-classification")
初始化后,该分类器只需传入图像路径,即可返回按概率排序的可能类别列表。我们也可以直接传入图像的 URL 链接:
1from transformers import pipeline 2imageClassifier = pipeline("image-classification") 3# 对给定图像(如下图所示)调用分类器,将返回最可能的类别列表。 4imageClassifier("https://images.unsplash.com/photo-1604675223954-b1aabd668078")
在图像分类任务中,我们通常假设图像中只包含一个主要物体。因此,当图像中存在多个物体时,模型可能会返回不同的结果。
示例
请参考以下笔记本中的示例: