一、概要
在细粒度识别问题中,全局信息的作用并不是很突出,不同种类物体的全局信息其实是很相似的,而真正能区分它们的是一些细节特征,而常规的学习方式很容易被全局信息所主导,无法把握细节信息,而DCL提出的图像子区域打乱方法有效的驱动了模型去学习细节性特征(The devail is in the details),进而实现精细化物体分类。
二、结构
2.1、解构部分
解构是DCL的核心,做法是将一个图像均分为N*N的子区域,每个子区域随机的和它的邻域子区域做交换,邻域大小是一个可以调节的超参数。经过解构后,图片的全局信息虽然丢失了,但是细节性特征容易暴露出来,以促使模型去学习区分相似类目标的特征。邻域的设置让模型的学习难度不至于很大,让模型知道目标大概是什么。如上图,鸟的头部和尾部经过解构后并没有离得很近,因为区别头部和尾部并不是模型的主要任务,反而为模型学习带来了额外的负担。可以发现,图像解构后属于属于目标同一部分(如头部)中的子区域相互之间靠的很近,但这些子区域的位置被打乱了,暴露出了关键细节。
2.2、对抗学习部分
解构有利有弊,弊端是引入了噪音,为了防止模型过拟合,引入了对抗损失,以驱动模型学习解构图像和原始图像不变的模式而丢弃引入的噪音模式,提高泛化性。
如上式,无论是原图和解构后的图,如果想让损失足够小,log中的softmax项的值必然都是要趋近于1的,所以模型会尽力去捕捉原图和解构图中共有的特征,而不会去学习解构后引入的噪音特征。
2.3、构造学习部分
该部分用于驱动模型学习图像不同部分之间的语义相关性,有助于模型深入的理解对象以及建模空间信息。
2.4、解构+构造学习
解构学习用于从子区域中学习可辨识的特征,而构造学习通过建模区域之间的语义互相关性,重新编排学习到的特征,基于这两点,DCL能够学习到复杂而多样的视觉表征。
三、训练和推理
训练的时候,DCL由解构、对抗、构造三个部分组成,一旦完成训练,在推理阶段仅保留骨干网络。这是因为经过结构、对抗、构造三个部分融合训练后,骨干网络已经具备了进行精细分类所需要的基础能力,所以在推理阶段已经不需要这些额外的结构了,从耗时这个角度来看DCL在推理阶段是没有太多额外代价的。
四、消融实验
4.1、关于N的选择
N太小的话,能学习到的视觉特征有限,且构造学习部分不易收敛;N太大的话,解构部分噪音太多,不容易提取关键特征。
4.2、解构图与原图比例
1:1是最优比例,原图太多捕捉不到关键的可区分特征,解构图太多上下文信息会严重缺失。
4.3、关于邻域K的选择
原文提到k的选择对性能影响不是很大,但是这个消融实验在不同数据集上的表现是否相同还有待验证,从第二部来看,上个人觉得应该对不同的数据集有不同程度的影响。