社区计算机视觉课程文档

图像分类中视觉Transformer的迁移学习和微调

Hugging Face's logo
加入Hugging Face社区

并获得增强型文档体验

开始使用

图像分类中视觉Transformer的迁移学习和微调

简介

随着Transformer架构在自然语言处理中取得良好的扩展性,同样的架构通过创建图像的小块并将其视为标记而被应用于图像。结果是视觉Transformer (Vision Transformers)。在我们开始迁移学习/微调概念之前,让我们比较一下卷积神经网络 (CNN) 和视觉Transformer。

CNN与视觉Transformer:归纳偏置

归纳偏置是机器学习中用来描述学习算法用来进行预测的一组假设的术语。简单来说,归纳偏置就像一个捷径,可以帮助机器学习模型根据它迄今为止所看到的信息进行有根据的猜测。

以下是在CNN中观察到的一些归纳偏置

  • 平移等变性:一个物体可以出现在图像的任何位置,而CNN可以检测其特征。
  • 局部性:图像中的像素主要与其周围的像素相互作用以形成特征。

视觉Transformer中缺乏这些特性。那么它们是如何表现如此出色的呢?这是因为它们具有高度的可扩展性,并且在海量的图像上进行了训练。因此,它们克服了对这些归纳偏置的需求。

使用预训练的视觉Transformer

并非每个人都能在数百万张图像上训练视觉Transformer以获得良好的性能。相反,人们可以使用来自Hugging Face Hub等地方的公开可用模型。

如何使用预训练模型?您可以应用迁移学习并对其进行微调!

图像分类的迁移学习和微调

迁移学习的思想是,我们可以利用在非常大的数据集上训练的视觉Transformer学习到的特征,并将这些特征应用到我们的数据集上。这可以显著提高模型性能,尤其是在我们的数据集只有有限的训练数据可用时。

由于我们正在利用学习到的特征,因此我们也不需要更新整个模型。通过冻结大部分权重,我们只需训练某些层,即可在较短的训练时间和较低的GPU消耗下获得出色的性能。

多类别图像分类

您可以通过此notebook中的图像分类视觉Transformer迁移学习教程。

Open In Colab

我们将构建以下内容:一个用于区分猫狗品种的图像分类器。


您的数据集的领域可能与预训练模型的数据集不太相似。但是,与其从头开始训练视觉Transformer,不如选择更新整个预训练模型的权重,尽管学习率较低,但这将“微调”模型以使其能够很好地处理我们的数据。

然而,在大多数情况下,对于视觉Transformer,应用迁移学习就足够了。

多标签图像分类

上面的教程讲解了多类别图像分类,其中每张图像只分配一个类别。那么,对于多类别数据集中的每张图像具有多个标签的情况该怎么办呢?

本笔记本将引导您完成使用 Vision Transformer 进行多标签图像分类的微调教程。

Open In Colab

我们还将学习如何使用Hugging Face Accelerate编写自定义训练循环。这是您在多标签分类教程中可以期待看到的结果。


其他资源

  • 原始 Vision Transformers 论文:一张图像值 16x16 个单词:用于大规模图像识别的 Transformer 论文
  • Swin Transformers 论文:Swin Transformer:使用移位窗口的分层视觉 Transformer 论文
  • 一项系统性的实证研究,旨在更好地理解视觉 Transformer 的训练数据量、正则化、增强、模型大小和计算预算之间的相互作用:如何训练你的视觉 Transformer?视觉 Transformer 中的数据、增强和正则化 论文
< > 在 GitHub 上更新