How to train your VIT? Data, Augmentation, and Regularization in Vision Transformers
一、Introduction
这篇文章主要是为了探究Vision Transformer(ViT)模型在图像分类任务中的性能和可解释性,并且比较它们与其他图像分类模型的性能。具体来说,作者通过实验研究了不同规模和参数设置的ViT模型在ImageNet数据集上的性能,并分析了它们在各种任务上的表现。此外,作者还探讨了ViT模型中注意力机制的作用和可解释性,并提出了一些改进方法来提高模型性能。总之,这篇文章旨在为研究人员提供有关ViT模型的详细信息,并促进该领域的发展。
二、实验相关配置
2.1、数据集
作者使用了多个数据集和评价指标来评估ViT模型的性能。具体来说,作者使用了以下数据集:
- ImageNet-1k:一个包含1000个类别的图像分类数据集。
- ImageNet-21k:一个包含超过20000个类别的图像分类数据集。
- CIFAR-100:一个包含100个类别的小规模图像分类数据集。
- Oxford IIIT Pets(或Pets37):一个包含37个宠物品种的图像分类数据集。
- Resisc45:一个用于遥感图像分类的数据集,包含45个类别。
- Kitti-distance:一个用于视觉测距任务的数据集。
此外,作者还使用了VTAB基准测试套件来评估ViT模型在各种任务上的性能。VTAB基准测试套件包括19个不同的任务和数据集,涵盖了图像分类、目标检测、语义分割等多种任务。
2.2、评价指标
作者使用了多种常见指标来评估ViT模型在各种任务上的性能。例如,在图像分类任务中,作者使用了top-1和top-5准确率作为评价指标;在目标检测任务中,作者使用了mAP(平均精度)和Minival accuracy作为评价指标;在语义分割任务中,作者使用了**mIoU(平均交并比)**作为评价指标。
2.3、使用的模型
文章中,作者使用了多个ViT模型和ResNet与ViT的混合模型来评估其性能和可解释性。
ViT模型如下:
- ViT-Ti:一种较小的ViT模型,具有12个Transformer block、3个attention head和5.8M个参数.
- ViT-S:一种中等规模的ViT模型,具有12个Transformer block、6个attention head和22.2M个参数。
- ViT-B:一种较大的ViT模型,具有12个Transformer block、12个attention head和86M个参数。
- ViT-L:一种更大的ViT模型,具有24个Transformer block、16个attention head和307M个参数。
混合模型如下:
- R+Ti/16:一种ResNet和ViT的混合模型,由ResNet-50和ViT-Ti/16组成。
- R26+S/32:一种ResNet和ViT的混合模型,由ResNet-26和ViT-S/32组成。
- R50+L/32:一种ResNet和ViT的混合模型,由ResNet-50和ViT-L/32组成。(32表示的是patch_size的大小)
三、实验主要内容
3.1 通过图像增强和模型正则化来扩展数据集规模
从图中可以发现,通过适当的增加正则化和图像增强可以训练出与将数据集大小增加一个数量级相当的准确度的模型。在ImageNet-1k数据集上使用AugReg训练出来的模型精度与在IamgeNet-21k数据数据集上训练出来的模型精度相当。
但是,作者也说明了这个结论并不能有效的在任意小数据集上保持效果。例如:使用ImageNet-1k中10%的数据并使用大量的数据增强来训练ResNet-50,可以提升精度,但是不如在完整数据上训练的结果。
3.2 使用预训练是更好的选择
作者在本章节从成本和效益阐述了是从头训练模型还是使用预训练模型的问题。从左图可以明显的看出来,使用预训练模型和AugReg的方法结果更好并且能够有效的节约时间成本。从右图则可以明显看出使用预训练模型可以节约计算开销并拥有更好的性能。
3.3 更多数据生产出更多通用模型
上图是作者在三个类别十九项任务的VTAB上进行。更大模型在三种任务中的推理速度远慢于小模型的。模型在大数据集上的表现也是优于小数据集的。使用更多的数据能够产生更多的通用模型,这种趋势适用于非常多样化的任务。
3.4 使用增强来代替正则化
上图表明的是不同量级的模型在使用了正则化和不使用正则化之间的区别,最右侧一列表示的是使用正则化最佳得分减去不使用正则化最佳得分的差值。在大多数情况下,添加数据增强比添加正则化方式更有效。在中等数据集或大型的数据集上,使用正则化并不能有效的提高模型性能,甚至可能对性能有害。
3.5 选择最佳预训练模型
在3.2中,使用预训练模型能够有效的节约时间和计算资源并得到更好效果。在本节中,作者主要阐述了如何选择预训练模型的问题。作者主要分析了两种方法的权衡:选择最佳预训练模型这种成本较低的策略还是选取所有模型然后进行微调这种成本较高的策略,作者在五个不同的数据集上进行了比较。得出了在通常情况下,选择单个模型是一种能够节约计算资源的实用策略。当有额外的计算资源可用时,我们可以对其余的模型进行微调来提高模型的性能。左图是两种方案的结果对比,右图中圈出来的代表最优模型的验证分数。
3.6 增加patch_size而不是去缩减模型的大小
本节主要是阐述的是Patch_size大小对模型的影响。patch的数量会影响到执行自注意力的token的数量,因此,patch_size的大小会对模型的容量产生影响,而不是由模型参数反映出来的。上图表明了采用更大的patch_size能够有效的提升模型的精度。
四、总结
- 作者建议使用在上游数据(用于训练预训练模型的大数据集)中进行过预训练的模型
- 对于给定尺寸的数据集,合理使用数据增强和正则化。但是不要将Augreg应用于太小或者预训练时间太短的模型。
- 选择最佳模型来进行任务转移。