【GiantPandaCV导语】来自商汤和南洋理工的工作,也是使用卷积来增强模型提出low-level特征的能力,增强模型获取局部性的能力,核心贡献是LCA模块,可以用于捕获多层特征表示。
引言
针对先前Transformer架构需要大量额外数据或者额外的监督(Deit),才能获得与卷积神经网络结构相当的性能,为了克服这种缺陷,提出结合CNN来弥补Transformer的缺陷,提出了CeiT:
(1)设计Image-to-Tokens模块来从low-level特征中得到embedding。
(2)将Transformer中的Feed Forward模块替换为Locally-enhanced Feed-Forward(LeFF)模块,增加了相邻token之间的相关性。
(3)使用Layer-wise Class Token Attention(LCA)捕获多层的特征表示。
经过以上修改,可以发现模型效率方面以及泛化能力得到了提升,收敛性也有所改善,如下图所示:
方法
1. Image-to-Tokens
使用卷积+池化来取代原先ViT中7x7的大型patch。
x ′ = I 2 T ( x ) = MaxPool ( BN ( Conv ( x ) ) ) \mathbf{x}^{\prime}=\mathrm{I} 2 \mathrm{~T}(\mathbf{x})=\operatorname{MaxPool}(\operatorname{BN}(\operatorname{Conv}(\mathbf{x}))) x′=I2 T(x)=MaxPool(BN(Conv(x)))
2. LeFF
将tokens重新拼成feature map,然后使用深度可分离卷积添加局部性的处理,然后再使用一个Linear层映射至tokens。
x c h , x p h = Split ( x t h ) x p l 1 = GELU ( BN ( Linear ( ( x p h ) ) ) x p s = SpatialRestore ( x p l 1 ) x p d = GELU ( BN ( DWConv ( x p s ) ) ) x p f