论文:An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale
目录
摘要
很多任务将attention加入原来的CNN中保持,原有框架不变,例如resnet50每一个layer都保留,只在堆叠的block中添加attention,他们表面这种操作是不必要的,直接使用纯的transformer架构用于视觉任务中也能获得一个比较好的结果。
并且只需要相对较少的计算资源,当然他说的‘少’指的是2500天TPUv3,只是对于谷歌其他大模型来说相对少。
Vision Transformer模型结构
Embedding层
transformer的输入token是向量,所以要先将图像通过Embedding转换成一串向量
具体的转换方式很多,在论文的引言中有介绍前人为了降低序列长度使图像能够作为transformer输入所做的工作(分析该方向前人工作做了那些,再说自己的创新是那些,分析清楚更有可能被接受,不用担心前人工作跟你的很相似,引言就提到了许多将transformer往视觉领域融合的论文,然后说他们是尽可能不改变transformer原有结构,不做针对视觉任务的特定改变,实验transformer架构的可扩展性好不好,讲故事的思路+1)
例如直接将图像划分成多个小块(patch),再展平成向量
也有结合cnn来做的,先将图像送入传统的卷积神经网络,提取出小块的比较深层的特征后再将其展平成向量
本文是直接用的一个16*16的卷积核768个,步长为16进行一次卷积获取的patch,输入特征通过预处理成224,卷积后图像大小变为14*14*768,将高宽展平成196,输出就为196*768,将每个通道的同一位置串起来串成一个维度为通道数的向量,构造出196个向量作为输入,每个向量长768维。
(这里我第一次看理解错了,直观理解的是对每个通道展开成向量,添加注意力求每个通道之间的关联性,做成768个196维的向量。通过不同卷积核的不同权重,每