论文解读TransFG: A Transformer Architecture for Fine-grained Recognition

此篇文章是transformer在细粒度领域的应用。

问题:Transformer还未应用在图像细分类领域中

贡献点:1.vision transformer的输入把图像切分成patch,但是是没有overlap的,文章改成切分patch用overlap(这只能算个trick)

2.Part Selection Module

论文解读TransFG: A Transformer Architecture for Fine-grained Recognition_第1张图片

 

通俗讲就是最后一层的输入与vision transformer不同,即把最后一层前的所有层(红框所示)的权重累乘,再筛选出权重大的token拼接起来作为第L层的输入。

首先第L-1层的输出原本是这样的:

前面某层的权重如下:

其中下标l的取值范围为(1,2,...,L-1)

假设有K个self-attention head,那么每个head中的权重为:

其中上标i的取值范围为(0,1,...,K)

则对最后一层前面的所有层累乘权重:

然后选择权重最大的A_k个token作为最后一层的输入。

所以经过处理后,其输入可表示为:

论文解读TransFG: A Transformer Architecture for Fine-grained Recognition_第2张图片

 

从模型架构上看,可以发现红框内带有箭头的token是被选中了的,也是经权重累乘后权值大的token,右侧蓝色框代表选中的token对应的patch。

3.Contrastive loss

作者说细粒度领域不同类别之间的特征很相似,因此单纯用交叉熵损失来学习特征是不够的,在交叉熵损失后加了新的Contrastive loss,这个损失里引入了余弦相似度(用来估计两个向量的相似情况),向量越相似余弦相似度越大。

作者提出此loss function的目的是缩小不同类别“分类token”的相似程度,最大化相同“分类token”的相似程度,通俗说就是不同类的尽量不相似,同类的尽量相似。Contrastive loss其公式如下:

其中a是人为设定的常量。

所以总体函数为:

实验:

在细分类的几个数据集上与CNN和ViT进行比较,为SOTA

你可能感兴趣的:(论文解读,pytorch,神经网络,cv,计算机视觉)