joomla! 1.5 网站建设基础教程,领手工在家做的网站,如何用dw做网站框架,上海网站建设团队杨浦文章目录 前言一、ViT理论二、模型结构三、实验结果总结 前言 ViT是谷歌团队在2021年3月发表的一篇论文#xff0c;论文全称是《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》一张图片分成16x16大小的区域#xff1a;使用Transformer进行按比… 文章目录 前言一、ViT理论二、模型结构三、实验结果总结 前言 ViT是谷歌团队在2021年3月发表的一篇论文论文全称是《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》一张图片分成16x16大小的区域使用Transformer进行按比例的图像识别。ViT是Vison Transformer的缩写通过将一张照片分割为不同的Patch输入到Transformer中进行有监督的训练从而实现Transformer在CV领域的应用。接下来我们进行这篇论文的详细介绍。
一、ViT理论 Transformer在NLP领域取得了很大的成功但是应用在CV领域时却受到了限制。尽管已经有不少工作将Transformer应用在CV领域但是这些工作要么就是将Transformer与CNN结合使用要么就是使用自注意力替换CNN中的某些组件。ViT要做的就是直接将Transformer在NLP的工作方式搬移到CV中而不改变网络结构和输入形式从而打破CV和NLP领域之间的鸿沟。 ViT的核心思路就是将输入的照片划分成相同大小的patch然后将这些patch经过一个全连接层进行embedding然后直接输入到Transformer中进行有监督的训练。但是由于Transformer应用在CV时缺少CNN网络的归纳偏置所以ViT在小数据集上的效果并不如CNN。但是当扩展到较大规模的数据集时14M-300M imagesViT便可弥补没有归纳偏置的缺点通过Transformer优秀的全局建模能力在性能上超过经典的CNN网络。
二、模型结构 ViT模型由Transformer的编码器堆叠而成但其对原始的Transformer编码器进行了一些改动将LayerNorm放到了多头注意力的前面。如下图所示 其模型的前向过程如下所示 1.当输入一张照片尺寸为224x224x3首先会将照片分割成16x16大小的patch对于224x224大小的图片则被分成了14x14196个patch每个patch的维度为16x16x3。 2.将每个patch拉伸成16x16x3768则图片由224X224X3变为了196x768。 3.经过全连接层输出维度仍然为196x768。相当于输入一共196个tokens每个tokens的维度为768。 4.在最前面加上一个特殊提示符token则输入维度变成了197x768。第一个token是特殊提示符与BERT类似 5.与可学习的位置编码进行相加相加后的维度为197x768。 6.经过堆叠的Transformer encoder层输出维度为197x768。 7.将第一个token对应的输出维度为1x768经过全连接层后进行分类。 当ViT在大规模数据集上预训练完成后在下游任务进行微调时将预训练中的预测头去掉然后新加一个适合于下游任务的分类头进行微调。 需要注意的一点是一般来说微调时的数据分辨率大于训练时的数据分辨率着对模型提升是有益的。但这会导致预训练和微调阶段输入到模型的tokens数量也不相同。尽管Transformer可以处理任意长度的tokens输入但是预训练时的可学习位置编码可能不在有意义。因此ViT在微调时会根据patch在原始图像中的位置对训练好的位置编码进行2D内插。
三、实验结果 ViT共准备了三种大小尺寸的模型分别为
ModelLayersHidden sizeMLP sizeHeadsParamsViT-Base1276830721286MViT-Large241024409616307MViT-Huge321280512016632M 在下图中BiT为基于ResNet的卷积网络可以看到在ImageNet数据集上ViT的性能是不如CNN的但是随着数据集的增加ViT的性能超过了CNN。说明在大数据集上ViT是更有优势的。 下图中Hybrid代表输入的图片先使用CNN进行特征提取然后送进Transformer中相当于是CNN和Transformer的结合。可以看出当计算量较小模型规模较小时Hybrid的方法是超过ResNet和Transformer的但是随着计算量的增大模型规模变大Transformer的性能仍然呈现出继续上升的趋势而Hybrid方法的性能却趋向于饱和。这也是基于Transformer的一个优势目前还没有发现随着模型和数据的增大性能趋于饱和的情况。 更多的实验结果小伙伴们可以去论文里查找。
总结 ViT通过将图片划分成许多patch实现了Transformer在CV领域的直接应用而不用对图片输入进行额外的处理在大规模数据集上ViT实现了当时最好的结果。ViT也存在着一些局限性例如是有监督的需要在大规模数据集上进行预训练等。总的来说ViT缩小了CV和NLP领域之间的gap也间接的推动了多模态的发展后续基于ViT模型涌现出了一大批优秀的工作。