CVPR2019的一篇细粒度分类,京东AI研究院:
Chen Y, Bai Y, Zhang W, Mei T. Destruction and Construction Learning for Fine-Grained Image Recognition. InProceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2019 (pp. 5157-5166).
原创,未经同意禁止转载
下载论文
作者代码
对目标的局部区域进行精巧的特征表示在细粒度分类任务中具有关键作用 。例如,专家能根据专家知识仅仅依赖于目标对象的局部区域就识别出细粒度物体。本文提出一种“破坏和重建学习”方法来增强细粒度识别的难度并且训练分类模型来获取专家知识。为了学到判别性区域和特征,除了标准的基础分类网络,本文引入另一个“破坏和重建”流来“仔细地”破坏输入图像,然后重建输出入图像。具体来说,对于“破坏”,作者首先将输入图像划分为很多局部区域,然后通过区域混淆机制RCM(Region Confusion Mechanism)来打乱(shuffle)他们。为了正确地识别这些破坏了的图像,分类网络必须将注意力更多的放在判别性的区域从而发现差异。为了补偿RCM引入的噪声,应用对抗性损失(adversarial loss)来区分破坏图像和原始图像,来抑制RCM引入的噪声模式。为了重建图像,采用一种区域对齐网络来尝试恢复局部区域的原始空间布局,以模拟局部区域之间的语义相关性。通过训练时的参数共享,提出的DCL向分类网络中注入了更多的判别性局部细节。 实验结果表明,提出的框架在三个标准数据集上实现了最先进的性能。此外,提出的方法在训练期间不需要任何额外知识,并且除了标准分类网络的前馈阶段,模型在推理阶段没有计算开销。
过去十年在大规模标注数据集和复杂的模型设计上的努力使得的通用物体识别取得了稳步进展。但细粒度物体识别依旧具有挑战性,吸引了较多研究者的注意。虽然这些细粒度物体看起来都差不多,他们依然能根据判别性的局部区域的细节信息被正确识别出来。
从判别性区域学习判别性特征表示在细粒度图像分类中扮演着关键角色。目前细粒度方法可大致分为两类。如图1(a)(b) .一类首先定位判别区域,然后基于这些区域分类,这类方法大多需要对象或局部区域上的标注信息,这些信息很难收集。另一类试图通过注意力机制以一种无监督方式来自动定位到判别性区域,因此不需要额外标注信息。这类方法通常需要额外的网络结构(比如注意力机制),从而在训练和推理阶段引入了额外的计算开销。
本文提出一种新颖的细粒度图像识别框架,称为“破坏-重建学习”(Destruction and Construction Learning),简称DCL,如图1(c).除了标准分类基础网络,作者引入一个DCL流来自动从判别性区域中进行学习。首先仔细破坏输入图像以强调区别性局部细节,然后重建以模拟局部区域之间的语义相关性。一方面,DCL自动定位判别区域,因此在训练时不需要额外知识。另一方面,DCL结构只在训练阶段采用,因此在推理阶段不引入计算开销。
对于破坏,提出RCM来划分输入图像并随机打乱他们,来故意破坏全局结构。如图3.对细粒度分类,局部细节相比全局结构起着更重要的作用,因为不同细粒度图像通常具有相同的全局结构或形状,但只在局部细节上有不同。丢弃全局结构并保持局部细节信息能强迫网络寻找并关注判别性局部区域用于识别。毕竟,“魔鬼”在细节中(魔鬼是什么?应该指的就是非常重要的东西)。“打乱”这种方式也经常运用在自然语言处理中让网络关注与判别性单词。类似的,如果图像中的局部区域被打乱了,对细粒度识别不重要的一些不相关的区域就会被忽略,并且将迫使网络基于辨别性局部细节对图像进行分类。使用RCM可以完全改变图像的视觉外观,如图3.尽管更加难以识别了,但是专家仍然能很容易地发现差异。汽车爱好者可以通过仅检查汽车的零件来区分汽车模型。类似地,神经网络也需要学习专家知识以对破坏的图像进行分类。
值得注意的是,破坏并不一定总是有益的。作为副作用,RCM引入了几种噪声视觉模式,如图3。为了移除负面影响,本文应用对抗损失来区分原始图像和被破坏的图像。 结果显示,噪声模式的影响可以被最小化,仅保留有益的局部细节。从概念上讲,对抗性损失和分类性损失以对抗的方式运作,以便从“破坏”中仔细学习。
对于“重建”,引入区域对齐网络来恢复原始区域布局,其以与RCM相反的方式起作用。 通过学习如[19,6]中那样恢复原始布局,网络需要理解每个区域的语义,包括那些有判别性的区域的语义。通过“重建”,可以对不同局部区域之间的相关性进行建模。
主要贡献:
细粒度图像识别任务的研究主要沿着两个维度进行。一个是直接从原始图像中学习更好的视觉表示[26,25,28],另一个是使用基于部分/注意力的方法[41,42,7,13]来获得图像中的判别区域并学习基于区域的特征表示。(大概就是说分为只用VGG、GoogleNet等网络的方法和 基于标注信息或注意力视觉的方法)
由于深度学习的成功,细粒度分类方法从多阶段的基于手工特征的框架方法,转变到多阶段的基于CNN特征的方法。二阶的双线性特征交互也对视觉表示学习有显著提升(B-CNN, Grassmann pooling as compact homogeneous bilinear pooling)。包括B-CNN和之后的一些改进(Compact bilinear pooling,Hierarchical bilinear pooling, Low-rank bilinear pooling),取得了较多提升。深度度量学习也用来捕捉细小的视觉差异。Zhang等人[40]( Embedding label structures for FGVC)引入了标签结构和三重态损失的推广来学习细粒度特征表示。Chen等[27](FGVC by exploiting hierarchical semantic embedding)同时研究了层次结构中不同层次的类别,并通过嵌入方法将这种结构化相关信息整合到网络中。然而,这些成对神经网络模型通常带来复杂的网络计算。
此外也有很多基于局部区域定位的方法,这些方法的理论是,对象部分对于学习细粒度分类的判别特征至关重要。Fu等人[7](RA-CNN)提出了一个强化注意力候选区域网络,以获得多个尺度的判别性注意力区域和基于区域的特征表示。Sun等人[20](MAMC)提出了一个单压缩多激励模块来学习每个输入图像的多个注意区域特征,然后在度量学习框架中应用多注意多类约束。Zheng 等[42](MA-CNN)采用通道分组网络通过聚类来生成多个局部区域,然后分类这些局部特征,来预测输入图像类别。相比早期的基于局部区域和注意力的方法,近来的一些方法倾向于是弱监督的,不需要局部或关键区域标注。特别是,Peng等人(OPAM)提出局部区域空间约束来确保模型选择判别性区域,并且采用专门的聚类算法(谱聚类)来整合这些局部区域特征。Yang等人(NTS-Net)引入一种方法来检测信息性区域,然后仔细检查他们做最后的预测。但是,区域之间的相关性有助于深入理解对象,以前的工作通常会忽略它。研究【19】也说明了,使用区域的局部信息能增强神经网络的视觉表达能力,并且提高分类和检测性能。
(吐槽几句,NTS-Net模型这么精致,被作者介绍的太水了,NTS-Net采用了类似强化学习的自我监督机制,模型使用特征金字塔给局部区域预测信息性,然后对区域排序,选择信息性最大的几个区域做分类,求排序一致损失,就是要求区域的信息性排序和分类得出的属于ground truth的概率的排序应该相同,对不相同的排序对 进行惩罚,计算排序损失,也计算区域的分类损失,最后得到几个信息性最高的区域,结合总体图像做分类预测,这个会单独写一篇)。
(总体上分两个部分来写,1,增强模型的特征表示能力;2,基于局部区域或注意力的方法)
提出的方法与以往工作有三点不同:1,通过使用提出的RCM训练分类器,判别区域能自动检测到,除对象标签外,不需要借助其他先验知识;2,提出的公式不仅考虑到了细粒度局部区域特征表示,也考虑了不同局部区域在整个图像中的语义相关性;3,提出的方法高效,除了预测时间内的基础网络(backbone)前馈之外没有额外的开销。
图2是框架,四个部分组成。在推理阶段,只需要分类网络(classification network)
魔鬼在细节中。对细粒度分类,局部细节比全局结构信息更加重要。多数情况下,不同的细粒度类别具有相同的全局结构而只在具体的局部细节上有不同。3.1.1,介绍的是,通过打乱局部区域,细心地破坏全局结构,从而更好地找到判别区域和学习判别特征。3.1.2介绍RCM机制,防止因破坏而引入的噪声视觉模式对网络学习造成负面影响。
RCM设计用来打乱局部区域的空间分布。对一张图片,将其划分为
个子区域,每个区域标记为
,
和
分别表示行和列索引,
。提出的RCM在2D邻居内打乱这些局部区域。具体来说就是,对
的第
行生成一个随机向量
,其中第
个元素的值为
,其中
是在
范围内的随机变量,服从
的均匀分布(补充一下离散均匀分布公式,概率函数
,说白了就是
在
之间等概率地随机取一个)。
是一个可调整的参数,
,定义了邻居的范围。然后可以通过对数组
进行排序来获得第
行中的区域的新排列
,验证条件:
先在每个行向量上做这个变换,再在每个列向量上也做这种交换。这样就得到了新的破坏后的图像。列方向验证条件:
因此,在原图像中的位置处的区域被放到的一个新的位置的坐标为:
这种打乱方法破坏了全局结构并且确保局部区域在一个可调整的范围内抖动。
初始图像,破坏后的图像
,以及其相对应的一对多标签
(细粒度类别),组合为
用于训练模型。分类网络将输入图像映射为一个概率分布向量
, 其中
表示分类网络中所有可学习的参数。分类网络的损失函数为:
其中是训练集图片的集合。由于全局结构被破坏了,为了识别出这些随机打乱的图片,分类网络必须寻找判别性区域,然后学习这些类别间的微妙的差异。
使用RCM破坏的图像并不总能为细粒度分类带来有益信息。 例如,在图3中,当打乱局部区域时,RCM还引入了噪声视觉模式。从这些噪声视觉模式中学习的特征对分类任务是有害的。为此提出了另一种对抗性损失,以防止过度拟合RCM引起的噪声模式进入特征空间。
考虑到原始图像和破坏后的图像作为两个域,对抗性损失和分类损失以对抗方式起作用:1)保持域不变模式,以及2)拒绝和
之间的特定于域的模式。(就是说,一个是用于区分两种图像的,一个是用于干掉两种图像中特定于域的模式)
给每张图片贴上one-hot标签向量,表示图像是否被破坏过。可以在框架中添加判别器(discriminator)作为新分支,以通过以下方式判断图像
是否被破坏过:
其中,是从backbone分类网络的第m层输出的特征向量,
是分类网络的从第1层到第m层的可学习参数,
是一个线性映射。判别器网络的损失
计算方式为:
(这个其实就是生成对抗网络GAN里面的判别器所做的,这里的判别器是用来判别破坏了的图像和原始图像,然后计算损失,要做的就是,判别器不能判别出哪个是破坏了的图像哪个是原始图像,然后这里有一个对抗性损失函数,这个也是借鉴了GAN中目标公式的形式,让这个损失最小的话,就达到了去除特征域中噪声视觉模式的目的,也就是识别不出来是哪种图像)
解释. 为了更好地理解对抗性损失如何调整特征学习,在有和没有对抗性损失两种情况下,作者进一步可视化backbone网络ResNet-50的特征。给定输入图像,记第m层的第
个特征图为
。对于ResNet50,提取其靠近全连接层的卷积层在全局平均池化后的输出特征(就是全连接前的输出特征)用来做对抗性学习。因此,卷积层的第
个滤波器对应真实类别为
的响应为
,其中
是第
个特征图和第
个输出标签之间的权重。(说白了就是上面那个特征图对应类别c的权重,感觉作者真的是啰嗦)
比较对应初始图像和它的破坏后的图像的不同滤波器的响应,结果如散点图图4所示。其中每个滤波器的积极响应(positive response)表示为散点图中的数据点.能发现经过
训练得到的特征图分布比
训练的更加紧凑,这表明在由RCM引入的噪声模式上具有较大响应的滤波器可能也在原始图像上也具有较大的响应(比如在A,B,C中可视化的视觉模式,有很多的滤波器对由RCM引入的边缘型的视觉模式或不相关的模式有响应)。
作者也对用训练的基础网络的得到的散点图上了色,根据值
其中,是连接特征图
和标签表示的原始图像的权重,
是连接特征图
和标签表示的破坏的图像的权重。
衡量第k个滤波器是否倾向于原图或者破坏图像中的视觉模式。可以看到,对噪声视觉模式有响应的滤波器能被D和F这一对通过对抗性损失区分,图中的点可分为三部分。D:滤波器倾向于响应由RCM引入的噪声视觉模式;F:滤波器倾向于响应全局上下文描述(原始图像中的具体的图像特征);E:通过分类损失增强了的与具有细节的局部区域描述相关的一类滤波器,这类滤波器最多。(原始图像和破坏图像之间的共同图像特征映射)
和
共同促进“破坏”学习,增强了具有判别性的局部细节,并且过滤掉了不相关的特征。
考虑到图像中相关区域的结合组成了复杂和多样的视觉模式,作者提出另一种学习方法来对局部区域间的相关性进行建模。具体来说,提出一种带有区域重建损失的区域对齐网络(region align network),它测量图像中的不同区域的位置精确度,引导基础网络通过端到端训练对区域间的语义相关性进行建模。
给定图像以及相应的破坏图像
,位于图像
中位置
处的区域
与图像
中的区域
一致。区域对齐网络是对分类网络
的一个卷积层输出特征图进行操作,其中第n层是一个卷积层。特征图经过
的卷积处理得到的只有两个通道的输出。然后这个输出经过ReLU和平均池化,得到一个大小为
的特征图。区域对齐网络的输出可以写为:
中这两个通道分别对应的是行和列位置坐标,
是提出的区域对齐网络,
是区域对齐网络的参数。(以上这段话的意思是,输出的二通道的特征图的每个点预测一个区域位置,两通道的特征图那就在每个空间位置上有两个值,分别是预测的该点所表示的区域的横纵坐标)。记预测的区域
在
中是
,预测的区域
在
中是
。这两个预测
和
的真值都是
。然后计算区域对齐损失
,定义为预测坐标与在原始坐标的
距离,表达式是:
区域重建损失有助于定位图像中的主要对象,并且倾向于找到子区域之间的相关性。 通过端到端的训练,区域重建损失可以帮助分类基础网络(backbone)建立对对象的深刻理解,并对结构信息进行建模,如对象的形状和对象各部分之间的语义相关性。
在提出的框架中,分类,对抗性和区域对齐损失以端到端的方式进行训练,其中网络可以利用增强的局部细节和良好建模的对象部分相关性来进行细粒度识别。 具体来说,希望最小化以下目标:
图2是DCL模型的框架结构。破坏学习主要有助于从判别性区域中进行学习,而重建学习有助于根据区域之间的语义相关性重新布置学习到的局部细节。 因此,DCL基于来自判别区域的结构良好的细节特征产生一组复杂且多样的视觉表示。
注意,只有是用来预测给定图像的类别标签的。因此,除了用于推断的基础分类网络之外,没有外部计算开销。
在CUB-200和Stanford Cars, FGVC Aircraft上做了实验,不使用任何bounding box或者 part annotations。
基础网络:评估方法时,使用了两种网络,resnet-50和VGG-16.都在imagenet上预训练了。
数据增强:输入图像先缩放为512*512,而后随机裁剪为448*448,随机旋转,随机水平翻转
为了识别更高分辨率的图像,将VGG-16的前两个全连接层改为全卷积。
基础网络最后一个卷积层输出的特征图送入区域对齐网络,最后一个卷积层后的平均池化得到的特征向量送入对抗性学习网络。
RCM的区域数N必须能被图像大小整除,区域的高和宽设置为32。为了保证区域对齐的可行性,输入图像的宽和高必须被N整除,N设置为7。
每次使用训练了180个epoch,学习率每60个epoch就降低为原来的。测试时,只对输入图像进行中心裁剪。
backbone, RCM(打乱区域), DL, CL, DCL的比较:
不同的N(RCM中的区域数)的影响:
破坏图像在一个mini-batch中的比例的影响:
特征可视化:最后一个卷积层特征
比较基础模型和提出的方法的特征图,可以发现DCL的特征图响应更集中在判别区域。 通过不同的打乱,基于DCL的模型一致地突出显示区别区域,这证明了DCL方法的鲁棒性。
目标定位:
作者还使用SPN在VOC2007数据集上对弱监督目标定位任务进行了DCL测试[43]。 选择指向定位精度(PL Acc)作为评估标准,其测量网络是否可以定位目标的正确区域。 实验结果如表5所示。 可以发现,在应用DCL后,PL Acc从87.5%提高到88.7%,这提供了另一个数据证据,即DCL有助于学习正确的区域。
破坏学习时的超参数 k 的影响:
模型复杂度:
在训练期间,DCL仅需要简单的打乱操作(RCM)和两个轻量级网络结构(对抗性学习网络和区域对齐网络)。 对于ResNet-50 + DCL,DCL引入了8,192个新参数,其参数仅比基础网络ResNet-50多0.034%。 由于DCL中只有可忽略不计的附加参数,因此网络训练效率很高。 此外,它需要的训练到收敛的迭代次数与微调基础网络时相同。
在测试期间,仅激活基础分类网络。 与ResNet-50基线相比,提出的方法在相同的推理时间消耗下,得到了明显更好的结果(+ 2.3%),这说明提出的方法是非常实用的。
(实验真的做了好多啊,不得不佩服!这得做多久的实验啊。。。)
提出了DCL框架。 DCL中的破坏学习增强了识别的难度,以指导网络学习细粒度识别的专家知识。 同时重建学习可以模拟对象的部分之间的语义相关性。 方法不需额外监督信息,可端到端训练。 在多个数据集上得到了优越的性能。 此外,方法是轻量级的,易训练,推理也快,较实用。