Transformer由Attention is all you need论文提出。
优势的序列转换模型基于复杂的递归或卷积神经网络,包括一个编码器和一个解码器。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构,即Transformer,它完全基于注意力机制,完全省去了递归和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上优越,同时更具并行性,并且需要更少的训练时间。
每个子层都存在残差连接
编码组件部分由一堆编码器(encoder)构成,解码组件部分也是由相同数量(与编码器对应)的解码器(decoder)组成的。所有的编码器在结构上都是相同的,但它们没有共享参数。每个解码器都可以分解成两个子层。解码器中也有编码器的自注意力(self-attention)层和前馈(feed-forward)层。除此之外,这两个层之间还有一个注意力层,用来关注输入句子的相关部分。
quoted from 小白看得懂的Transformer
所以,模型的主要部分堆叠
将输入序列进行词嵌入之后,每个单词都会流经encoder中的两个子层。
多头注意力层:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dkQKT)V
WHY: CNN处理范围小(缺乏长距离依赖)而且偏向关注局部信息,并且,由卷积和下采样等算子会造成细粒度信息丢失的问题。
WHAT: 首先提出以Transformer为基础的baseline来解决CNN网络存在的缺点
再基于此进行优化得到更强的baseline:
HOW: TransReID在MSMT17、Market1501、DukeMTMC-reID、OccludedDuke、VeRi-776和VehicleID数据集上分别达到行人重识别和车辆重识别基准的SOTA性能。
基于transformer的强基线框架:
总体结构继承ViT,可学习的position embedding,最后输出有所不同(比如BN层)。
Overlapping Patches:区别于纯transformer的模型(e.g. ViT, DeiT)将图像分割成不重叠的补丁,从而丢失补丁周围的局部相邻结构。作者使用滑动窗口生成具有重叠像素的patch。
有监督学习:全局特征的triplet loss和ID loss
由于遮挡和错位等挑战,我们可能只能部分观察到一个物体。学习细粒度的局部特征(如条纹特征)已被广泛用于基于CNN的方法来应对这些挑战。
受ShuffleNet启发,如上图,将最后一层的输入打乱顺序然后分组,
推理过程中,最后的损失是全局损失+打乱的每组损失。
将相机和角度联合编码为S(C,V)
最终输入为原始输入+超参处理过的相机信息
Baseline:ViT-B/16