1) 摘要
尽管细粒度视觉分类数据集的样本数量很少,但是却存在着显著的类内差异性和类别间相似性。然而,先前的工作通常采用定位或者分割来解决类内的差异性,但是,类别间相似性依然影响特征的学习从而降低分类器的性能。针对这一问题,我们提出了一种可端到端惊醒训练的新奇的优化方法--Pairwise Confusion(PC),在激活中故意引入混淆来减少过拟合。通过实验证明PC能够提高定位能力并且在六个细粒度任务数据集上实现了最佳的性能。在训练阶段不需要额外的参数调整,在测试阶段不会增加额外的耗时,PC是很容易应用的。
2) 论文介绍
在训练的过程中,如果两个样本具有非常相似的内容,但是却是不同的类别标签,这个时候使用交叉熵损失函数就会强迫神经网络挖掘较高置信度的特征,从而减小训练损失。这种情况在细粒度分类任务中尤其严重,所以,我们提出了在输出的logit激活中引入混淆,来强迫网络挖掘较少的判别特征,从而减少在特定样本上的过拟合。具体而言,我们打算通过最小化训练集的随机样本对之间的预测概率分布之间的距离来混淆网络。
3) 相关工作
(1) Fine-Grained Visual Classification
(2) Pairwise Learning
(3) Learning from Label Confusion
4) 模型结构
5) 成对混淆
当度量两个分布的相似性的时候,我们往往会首先想到KL散度,但是论文的3.1节证明了KL散度的不可行性,所以采用了欧式距离,并且在论文的3.2节给出了证明。
算法:
使用的是权重共享的孪生网络,每个网络有单独的交叉熵损失,两个网络之间有混淆损失。具体的,在训练的时候,将batchsize的前半部分输入到网络1中,后半部分输入到网络2中,这样就把一个batchsize的数据分成两部分,两部分的数据一一对应,判断标签是否相同,如果相同就不存在混淆损失,如果不同就计算混淆损失。在测试的时候只用一个卷积神经网络。
6) 参数设置及其实验结果
(1) 参数设置
(2) 实验结果
7) pytorch代码
自我感觉官方的代码没有比较label是否相同,相同与否都做了混淆损失的计算,跟伪代码不相符,所以自己添加了label比较的部分。