Visual Transformer(ViT)作为计算机视觉领域的新兴霸主,已经在各个研究任务中逐渐替换掉了卷积神经网络CNN。
ViT与CNN之间存在着许多不同点,例如ViT的输入是image patch,而非像素;分类任务中,ViT是通过对类标记(class token)进行决策等等。
class token实际上是ViT论文原作者提出,用于整合模型输入信息的token。class token与每个patch进行信息交互后,模型就能了解到具体的分类信息。
并且在自注意力机制中,最后一层中的softmax可以作为注意力图,根据class token和不同patch之间的交互程度,就能够了解哪些patch对最终分类结果有影响及具体程度,也增加了模型可解释性。
但这种可解释性目前仍然是很弱的,因为patch和最后一层的softmax之间还隔着很多层和很多个header,信息之间的不断融合后,很难搞清楚最后一层softmax是否真的可以解释分类。
所以如果ViT和CNN一样有视觉属性就好了!
最近Meta AI就提出了一个新模型,用attention map来增强卷积神经网络,说简单点,其实就是用了一个基于注意力的层来取代常用的平均池化层。
仔细一想,池化层和attention好像确实很配啊,都是对输入信息的加权平均进行整合。加入了注意力机制以后的池化层,可以明确地显示出不同patch所占的权重。
并且与经典ViT相比,每个patch都会获得一个单一的权重,无需考虑多层和多头的影响,这样就可以用一个简单的方法达到对注意力可视化的目的了。
在分类任务中更神奇,如果对每个类别使用不同颜色进行单独标记的话,就会发现分类任务也能识别出图片中的不同物体。
基于Attention的池化层
文章中新提出的模型叫做PatchConvNet,核心组件就是可学习的、基于attention的池化层。
模型架构的主干是一个卷积网络,相当于是一个轻量级的预处理操作,它的作用就是把图像像素进行分割,并映射为一组向量,和ViT中patch extraction操作对应。最近也有研究表明,采用卷积的预处理能让模型的性能更加稳定。
模型的第二部分column(主干trunk),包含了整个模型中的大部分层、参数和计算量,它由N个堆叠的残差卷积块组成。每个块由一个归一化、1*1卷积,3*3卷积用来做空间处理,一个squeeze-and-excitation层用于混合通道特征,最后在残差连接前加入一个1*1的卷积。