其他分享
首页 > 其他分享> > Destruction and Construction Learning for Fine-grained Image Recognition----论文

Destruction and Construction Learning for Fine-grained Image Recognition----论文

作者:互联网

引言


本篇文章是使用DCL模型进行细粒度的图像识别.整个流程大致如下:


本篇文章的主要贡献在于以下几点:

Abstract


专家在识别鸟的种类的时候,往往是根据细节,因为记得有篇论文中提到,给专家一张完整的鸟类图片和切成小块随机打乱的鸟类图片还是可以清楚的判别出鸟的种类.根据这一想法,作者提出DCL(Destruction and Construction Learning),其主要目的是在训练时加入一些策略来提高分类网络的expert Knowledge.这个策略就是先Destruction,即把一张图片划分成小区域并随机打乱(RCM模块做的事情),然后和原图像一起输入到判别网络中去,这样能够learning discriminative regions and features.可是这样划分区域会引入高频噪声,使得出现一些不必要的边缘信息,所以引入对抗学习的思想来对图像进行降噪(学习特征降噪).最后使主干分类网络学习到各区域间的语义信息和布局信息,引入了RAN(Region Alignment Network).RAN的想法是在主干网络的某层卷积层输出\(C(\cdot,\theta_{cls}^{[1,n]})\),通过\(1*1\)卷积和ReLu和平均池化进行升维\(2*N*N\),再使用L1 Distance来构造loss,使之描述为与原图像和原shuffled图像的曼哈顿距离来优化主干网络输出的feature maps.上述策略有助于进行细粒度识别,且在inference时No Computation Overhead

Introduction


从特征鲜明的区域中学习具有判别性的特征表征在细粒度识别中十分重要,现存的细粒度识别方法主要分为两种.第一种就是标注出判别性物体的位置然后送入到判别网络中,这种需要额外的标注信息且很贵.第二种策略就是使用注意力机制(加一层掩膜)自动的寻找区域.但是这种方法需要额外的网络结构,在inference时需要额外的计算时间.
所以在这篇文章中我们提出了DCL,结构如下图

我们提出的方法与前人不同有三点:

Destruction Learning


不同的细粒度识别方法通常都是使用一个相似的全局结构,然后在某个确定的局部细节进行differ.本文提出的方法通过摧毁全局结构和打乱局部区域来更好的判定出判别性区域和判别性特征(RCM);加入对抗学习抑制噪声;

RCM(Region Confusion Mechanism)

打乱策略:
给我们一个图像,我们把他均匀划分为\(N*N\)的子区域,\(R_{i,j}\),对于\(R\)的每行\(j^{th}\)有一个\(q_{j}\),第\(i^{th}\)个元素就可以以下面的规则进行移动:\(q_{j}=i+r,r \in U(-k,k)\),列同理
下面我们来定义一下分类的损失函数,使用经典的信息熵理论:
\begin{equation}
L_{cls} = - \sum_{I \in \tau}l \cdot log[C(I)C(\phi(I))]
\end{equation}
\(\tau\)是训练集,\(C(I)C(\phi(I))\)是原图和打乱后的图输出的概率分布,其实这部分可以直接写成输入数据输出后的概率分布,因为没有\(I ,\phi(I)\)是成对输入的,不是分开输入

Adversarial Learning

由于引进RCM对图片打乱也会引进噪声,针对这个问题我们提出了对抗学习\(L_{Adv}\)来防止由于RCM引入导致的过拟合(学习到了噪声-specific的特征)
我们可以添加一个分支来判断输入图片有无Destructed,公式定义如下
\begin{equation}
D(I,\theta_{adv})=softmax(\theta_{adv}C(I,\theta_{cls}^{[1,m]}))
\end{equation}
其中\(D(I,\theta_{adv})\)是输出一个是否Destructed的概率,\(C(I,\theta_{cls}^{[1,m]})\)是第m层主干网络输出的特征向量,\(\theta_{adv}\)是一个线性映射.故此我们引出判别器网络的损失函数\(L_{adv}\)
\begin{equation}
L_{adv}=-\sum_{I\in \tau}d\cdot log[D(I)]+(1-d)\cdot log[D(\phi (I))]
\end{equation}

Justification

该部分内容是可视化对抗学习的有效性

定义第m层的第k个滤波器的feature map为\(F_m^k(I)\),将该feature map与该层的Params相乘(其实就相当于把最后两层表示了一下,写成数学形式的目的是可以使用其他层输出来做feature map再接一个预测层,即可算出\(r^k(I,c)\)),数学表述为\(r^k(I,c)=\overline{F}_m^k(I)\times \theta_{cls}^{[m+1]}[k,c]\)
where \(\theta_{cls}^{[m+1]}[k,c]\)is the weight between the \(k^{th}\)feature map and the \(c^{th}\)output label.
依据上述公式可以画出散点图\((r(I,c),r(\phi(I),c))\),由图可以看出不添加对抗学习的feature map描述更加紧凑,为什么呢?****受到了噪声影响,怎么影响的呢?由上图解释说是在D和F中寻找E.D和F明显表示噪声和specific-feature,看着比较松散,比较可分......不知道这样理解对不对:)

Construction Learning


怎样把打乱的图片恢复回来呢?或者是引入语义信息与空间信息呢?你直接开辟一个矩阵记录显然不能实现后者的目的,所以还是需要构建一个量来学习语义信息和空间信息----location precision(定位精度)
简单来说就是我根据主干网络最后得到的feature map合适的升维,并与原真实位置定义一个距离,来最小化此距离进行一个有监督学习过程.数学公式不细说了,升维做的是一个\(1*1\)卷积来完成并再经过Relu和平均池化来得到一个\(2*N*N\)的预测位置矩阵,再与真实位置矩阵做一个曼哈顿距离的度量就构成了\(L_{loc}\),损失函数公式如下:

Destruction and Construction Learning


将以上东西结合起来就是作者所提出的DCL,网络可以leverage局部细节信息和更好的物体部分联系的建模,loss公式如下:
\begin{equation}
L = \alpha L_{cls}+\beta L_{adv}+\gamma L_{loc}
\end{equation}

Experiments

实验数据集:CUB-200-2011;Stanford Cars;FGVC-Aircraft

Implementation Details

主干网络使用ResNet-50和VGG-16,都是在Imagenet上预训练的,数据增强部分做了512512crop为448448,随机旋转和水平flip,然后把vgg-16的前两层换成了卷积层.主干网络的最后一个卷积层输出到域对齐网络中(Construction 部分)最后经过平均池化的特征向量送到对抗网络中.
RCM划分为7*7的子区域.180个epoch,每60个epoch做一个学习率的自适应

其他对比试验的参数选择(略)

结果图:

消融实验

讨论


Conclusion

在这篇文章中,作者提出了DCL的框架结构来进行细粒度的图片识别.Destruction部分提高了网络学习专家型知识的能力,Construction部分构建了各部分的空间语义信息.模型不再需要额外的监督信息即可端到端训练,此外,模型参数较小,容易训练和应用.


标签:grained,细粒度,Image,网络,----,Construction,theta,学习,判别
来源: https://www.cnblogs.com/lizhe-cnblogs/p/13857242.html