zoukankan      html  css  js  c++  java
  • Destruction and Construction Learning for Fine-grained Image Recognition----论文

    引言


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

    • 首先将输入图片输入到RCM(Region Confusion Mechanism)模块中均匀的划分成小块并随机打乱.作用是迫使主干分类网络去从有效的判别性区域中学习,因为细粒度识别最重要的就是区域性特征.
    • 其次,由于打乱原图像会引入噪声,会使网络学习一些没有必要的特征,在Figure4中的B就很明显,网络关注了一些边缘噪声以及一些本不相关的区域连通特征.所以作者引入对抗性学习来抑制噪声;在后续消融实验中对抗性学习模块是证明有效的且优于Construction引入的L1 Distance带来的效果
    • 打乱并划分图片区域可以使网络更好的关注到detail,同时作者又加入Construction模块来提供区域间的联系特征,loss公式通过L1 Distance来描述区域间的联系
      最后作者在CUB-200-2011,Stanford-Cars,FGVC-Aircraft数据集上均取得了SOTA的效果.

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

    • 以往模型进行区域的细粒度识别时需要监督信息或者弱监督信息来训练网络以获得attention的位置,所以在inference时速度较慢,本文只在训练过程中引入一种数据增强(也不能完全算是)的方法来使网络学到判别性区域,在inference时完全不需要再去推测attention的位置
    • 对抗性学习可以用于图像去噪,引入L1 Distance来Construction(恢复图像区域布局和之间的语义信息)
    • 我提出了DCL,我是SOTA

    Abstract


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

    Introduction


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

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

    • 第一,我们不需要任何先验知识除了图片的labels
    • 第二,我们不仅考虑了细粒度识别的区域性特征还考虑了不同区域间的语义联系
    • 第三,我们的方法很高效,inference时没有额外的计算

    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)),列同理
    下面我们来定义一下分类的损失函数,使用经典的信息熵理论:
    egin{equation}
    L_{cls} = - sum_{I in au}l cdot log[C(I)C(phi(I))]
    end{equation}
    ( au)是训练集,(C(I)C(phi(I)))是原图和打乱后的图输出的概率分布,其实这部分可以直接写成输入数据输出后的概率分布,因为没有(I ,phi(I))是成对输入的,不是分开输入

    Adversarial Learning

    由于引进RCM对图片打乱也会引进噪声,针对这个问题我们提出了对抗学习(L_{Adv})来防止由于RCM引入导致的过拟合(学习到了噪声-specific的特征)
    我们可以添加一个分支来判断输入图片有无Destructed,公式定义如下
    egin{equation}
    D(I, heta_{adv})=softmax( heta_{adv}C(I, heta_{cls}^{[1,m]}))
    end{equation}
    其中(D(I, heta_{adv}))是输出一个是否Destructed的概率,(C(I, heta_{cls}^{[1,m]}))是第m层主干网络输出的特征向量,( heta_{adv})是一个线性映射.故此我们引出判别器网络的损失函数(L_{adv})
    egin{equation}
    L_{adv}=-sum_{Iin au}dcdot 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) imes heta_{cls}^{[m+1]}[k,c])
    where ( heta_{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公式如下:
    egin{equation}
    L = alpha L_{cls}+eta L_{adv}+gamma L_{loc}
    end{equation}

    Experiments


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

    Implementation Details

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

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

    结果图:

    消融实验

    讨论


    • 分区域的大小N*N
    • 原图像与Destruction图像输入比例
    • 最后一层baseline与DCL方法cnn特征可视化
    • 弱监督任务数据集VOC2007

      *RCM模块中的超参数k
    • 参数规模
      8192个参数,相比于baseline提高了0.034%,正确率提升了2.3%

    Conclusion


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


  • 相关阅读:
    C艹函数与结构体
    c++ const 用法总结
    c++ 重载
    c++ 的makefile文件实例
    python3 异步模块asyncio
    C++ 面向对象 类成员函数this指针
    基于注释的Spring Security实战
    web 安全 初探 (正在更新)
    Spring dbcp连接池简单配置 示例
    Spring JDBC
  • 原文地址:https://www.cnblogs.com/lizhe-cnblogs/p/13857242.html
Copyright © 2011-2022 走看看