摘要
Transformer是一种基于自注意力机制的深度神经网络,最初被用于NLP,后逐步被应用于计算机视觉任务中去。论文探讨了Transformer的主干网络、高/中级视觉处理、低级视觉处理及视频处理,对高效Transformer、实际部署和其核心机制self-attention进行了探讨。最后对Transformer存在的挑战和未来方向进行了展望。
论文地址:A Survey on Vision Transformer
介绍
Transformer的主要特点是使用了自注意力机制,最先用于NLP领域的机器翻译、文本解析等任务,后逐渐用于CV领域。Transformer的结构决定了其天然适合处理序列数据。
transformer几个关键的里程碑式研究如图1所示,其中红色的是视觉Transformer相关。
图1
Transformer
Transformer的一般处理流程如图2所示,包含encoder和decoder部分,每一个encoder模块中都包含self-attention层和一个前馈神经网络,在decoder模块中则是self-attention层和cross attention层以及前馈网络。
图2
具体结构如图3。每一层decoder与encoder之间的残差连接,这样增强了他们之间的信息流。每一次self-attention层后都会跟一个FFN前馈神经网络,主要包括含两层线性变换和一层非线性变换
。Decoder的最后一层包含线性层和softmax层,会将堆叠的特征向量转换回单词,获得最终的概率输出。
图3
Multi-head Attenion
在self-attention层,输入向量首先被转换成三类向量:q,k,v,不同输入得到的是不同的q,k,v,随后会经过以下步骤计算self-attention:
每个注意力头会关注一个特定的位置,而多头注意力可以在不同的子空间内计算attention,使得网络能够同时注意多个不同的位置,从而进一步提升self-attention的性能。
Transformer in CV
Backbone
Transformer可以作为分类网络的backbone。使用CNN和attention作为主干网络,有如图4中的网络。
图4
Pure Transformer
ViT(Vision Transformer)是纯粹使用Transformer来做图像分类任务。结构如图5。输入图像被reshape成一系列patch连接而成的序列,patch维度
(
p
,
p
)
(p,p)
(p,p),有效序列长度则是原始图像的
h
w
/
p
2
hw/p^2
hw/p2。因为Transformer每层输出宽度都一样,可以训练一个线性层用于将提取到的向量映射到维度d,这样就类似输出了word embedding的结果。之后的输入做embeeding,迁入之后的结果作为图像的表征。
图5
Shuffle Transformer则是使用shuffle的方式替换shift window;DeepViT提出多头交互从而丰富attention map;KVT则是基于knn的思想来聚合attention从而抑制一些噪声等。
Transformer with Convolution
纯Transformer在局部信息提取方面上存在不足,因此可以结合卷积操作,形成互补-conventional transformer。
CVPT提出使用条件位置编码,编码会考虑自己临近的信息;CvT等则是分析了直接从NLP借鉴Transformer的局限性,提出与卷积操作结合在一起,即在每一个FFN层结合一个卷积层,这样可以融合临近的信息;BoTNet则是将空间卷积替换成了global self-attention,在实例分割和目标检测任务中均取得了优异的性能。
Self-supervised Representation Learning
代表模型有
iGPT,包含一个预训练阶段和一个微调阶段,预训练结算,探索了自回归和BERT;然后采用transformer序列因为要完成像素级别的预测。
GPT-2中则是使用了Transformer的decoder模块,一些细节改变是在atention和FFN之间进行的LN,以及引入残差连接。
基于对比学习的方法有MoCo v3,在随机数据增强下对每张图像进行两次裁剪。 他们由两个编码器 fq 和 fk 编码,带有输出向量q 和 k。
# High/Mid-level Vision
## 目标检测
主要利用transformer的自注意力机制增模块的检测能力。
基于Transformer做目标检测在精度和速度上均优于CNN。
DETR将目标检测任务视作一系列预测任务,摒弃了传统目标检测中的锚框、非极大值抑制等需人工干预的步骤。DETR还存在一定的问题:训练时间冗长、对小物体检测效果不佳。
Deformable DETR使用了deformable attention模块来改善以上问题,主要会关注参考点周围的图像特征,而原始的self-attention会关注图像上的所有空间位置的图像特征。
除了可以
用Transformer解决一系列预测任务,也可以将Transformer作为目标检测的通用框架,如ViT-FRCNN。
目标分割
Max-DeepLab直接使用一个mask transformer进行全景分割。
VisTR是基于Transformer进行视频实例分割的模型,通过输入图像序列获得预测的实例。
SETR是基于transformer用于语义分割的模型,使用了ViT类似的encoder结构,随后使用多级特征聚合模块(multi-level feature aggregation)进行像素级别的分割。
Swin-Unet是一个像UNet的纯Transformer用于医学图像分割的网络模型。
姿态识别
Huang等人提出了基于Transformer的3D手势姿态估计网络。
METRO首先通过一个CNN提取图像特征然后将特征图谱与人体mesh信息结合并进行位置信息的编码;随后送入到多层Transformer中的encoder进行下采样,降低维度,最终生成人体关节的坐标。
其他任务
行人检测
方面的模型有PED,中使用了Dense Queries Rectified Attention filed缓解噪声、narrow attention造成的性能衰减。
车道线检测类模型称为:LSTR,通过Transformer学习全局特征结合细粒度特征可以更好的对弯曲的车道进行检测
# 基础视觉任务
## 图像生成
Image Transformer:第一个将Transformer用于图像生成的模型,encoder负责提取图像特征,decoder负责逐点生成像素,通过计算输入像素与前序生成像素的self-attention。
## 图像处理
TTSR在超分辨率的参考图像部分使用了Transformer,目的是将LR图像的纹理信息进行迁移,因此是将LR图像和参考图像分别作为Q,K,然后计算每个patch中q,k之间的相关性。