Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches

code:https://github.com/PRIS-CV/PMG-Progressive-Multi-Granularity-Training

来自:北京邮电大学

问题:

已有的工作对于哪个关键区域最具有区分性(即对鸟来说,头和喙哪个更有区分性)和如何融合多个关键区域的信息(比如喙和头部的信息是不是能同时利用)关注较少。

解决:

摘要

最近的工作主要通过着重于如何找到最有区别的部分,更多的互补部分以及各种粒度的部分来解决这个问题。 但是,对于哪种粒度最具有区别性以及如何融合跨多个粒度的信息的关注较少。本文提出了(i)新的渐进式的训练策略——在训练的每一步添加新的卷积层来从之前的阶段学习到的小的关键区域中提取信息。(ii)一个简单的拼图生成器来形成包含不同粒度级别信息的图像。

1. 简介

跨各种粒度的信息有助于避免类内较大变化的影响。例如,专家有时需要同时使用鸟头的整体结构和更精细的尾巴(例如鸟喙的形状)来识别鸟。 即,识别区分部分通常是不够的,识别这些部分如何以互补的方式彼此交互也是不够的。最近的研究集中在“放大”因子[11,36],即不仅识别零件,而且还聚焦于每个零件内真正有区别的区域(例如,喙,而不是头部)。然而,这些方法主要集中在几个部分上,而忽略了其他部分,因为它们超出了简单融合的范围。更重要的是,他们没有考虑如何将不同放大部分的特征以协同方式融合在一起。与这些方法不同,我们进一步认为,不仅需要识别零件及其最具区分性的粒度,而且还需要如何有效地合并不同粒度的零件。

在本文中,我们采取另一种立场来进行细分类。 我们既不明确也不暗含尝试从零件(或其放大版本)中挖掘细粒度的特征表示。取而代之的是,我们以这样的假设解决问题:细粒度的区分性信息自然位于不同的视觉粒度之内–就是要鼓励网络以不同的粒度进行学习,同时将多个粒度的特征融合在一起。 图1可以更好地解释这一点。

更具体地说,我们提出了一个整合的框架,该框架可同时容纳零件粒度学习和跨粒度特征融合。这是通过两个相互协同工作的组件来实现的:(i)一种渐进式训练策略,可以有效地融合来自不同粒度的特征;(ii)一个随机的拼图补丁生成器,可以鼓励网络以特定的粒度学习特征。 请注意,由于我们没有在图像块上应用高斯模糊滤波,因此我们避免使用“缩放”,而是将图像块均匀地划分和混合以形成不同的粒度级别。

作为第一个贡献,我们提出了一种多粒度渐进式训练框架,以学习不同图像粒度之间的补充信息。这与先检测零件然后以特殊方式融合的现有技术有很大不同。我们的渐进式框架在培训过程中会逐步进行,在此过程中,培训的重点是在网络的相应阶段培养特定于粒度的信息。我们从更稳定的更细粒度开始,逐渐过渡到更粗粒度,这避免了出现在较大区域中的大型内部类差异所造成的混淆。就其本身而言,这类似于“缩小”操作,在该操作中,网络将专注于本地区域,然后缩小该本地区域周围的较大区域,并在我们获得整个图像时结束。更具体地说,当每个训练步骤结束时,在当前步骤训练的参数将传递到下一个训练步骤作为其参数初始化。这种通过的操作实质上使网络能够根据在其先前训练步骤中学习到的区域来挖掘更大粒度的信息。从所有阶段提取的特征仅在最后一步才连接在一起,以进一步确保充分探索互补关系。

但是,仅仅应用渐进式培训将不会有益于细粒度的特征学习。这是因为通过渐进训练获得的多粒度信息可能倾向于集中在相似区域上。作为第二个贡献,我们通过引入一个拼图生成器来解决此问题,该拼图生成器在每个训练步骤中形成不同的粒度级别,并且仅最后一步使用原始图像进行训练。这有效地鼓励模型在补丁程序级别上运行,其中补丁程序大小特定于特定的粒度。实质上,它迫使网络的每个阶段都重点关注本地补丁,而不是整个整个图像,从而学习特定于给定粒度级别的信息。这种效果如图1所示。请注意,[4](打乱重组那篇)的最新工作首先采用了拼图求解器来解决细粒度分类。我们的显着不同之处在于,我们没有将拼图求解器用作特征学习的一部分。取而代之的是,我们只是简单地随机生成拼图拼图,以引入不同的对象零件级别来辅助渐进式训练

主要贡献总结如下:

  • 我们提出了一种新颖的渐进式训练策略来解决细粒度分类。它以不同的训练步骤进行操作,并且在每个步骤中都融合了先前粒度级别的数据,最终为各种粒度的粒度训练了固有的互补性,从而实现了细粒度的特征学习。
  • 我们采用了一个简单而有效的拼图生成器,以形成不同级别的粒度。根据先前的工作,这使网络可以专注于功能的不同“尺度”。
  • PMG在三个数据集效果好。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pztyAgkX-1603541624225)(D:\论文阅读\PMTJP\1.JPG)]

2. 相关工作

渐进式训练

渐进式训练方法最初是针对生成式对抗网络提出的[18],首先从低分辨率图像开始,然后通过向网络中添加图层来逐步提高分辨率。代替从所有尺度学习信息,该策略允许网络发现图像分布的大规模结构,然后将注意力转移到越来越多的尺度细节上。最近,渐进式训练策略已广泛用于生成任务[19,27,32,1],因为它可以通过中间监督简化网络内的信息传播。

3. 方法

为解决较大的类内差异,鼓励模型在浅层学习稳定的细粒度信息,并逐渐随着训练的进程,在深层网络将注意力转移到大粒度的抽象信息。

3.1. 网络结构

F为主干特征提取器,有L个阶段,中间阶段提取到的特征表示为 F l ∈ R H l × W l × C l F^{l} \in \mathbb{R}^{H_{l} \times W_{l} \times C_{l}} FlRHl×Wl×Cl,在这里,我们的目标是对在不同中间阶段提取的特征图施加分类损失。同时引入卷积块 H c o n v l H_{conv}^l Hconvl,以l阶段的特征图作为输入,并将其简化为向量表示形式 V l = H c o n v l ( F l ) V^{l}=H_{conv}^{l}\left(F^{l}\right) Vl=Hconvl(Fl)分类模块 H c l a s s l H_{class}^l Hclassl包括两个全连接阶段,利用Batchnorm和Elu非线性,仅针对最后几个stage做出预测,最后将S个阶段的输出进行连接: V concat = concat ⁡ [ V L − S + 1 , … , V L − 1 , V L ] V^{\text{concat}}=\operatorname{concat}\left[V^{L-S+1}, \ldots, V^{L-1}, V^{L}\right] Vconcat=concat[VLS+1,,VL1,VL](公式1),之后是附加的分类模块 y c o n c a t = H c l a s s c o n c a t ( V c o n c a t ) y^{concat}=H_{class}^{concat}(V^{concat}) yconcat=Hclassconcat(Vconcat)

3.2. 渐进式训练

我们采用渐进式训练,先训练低阶阶段,然后逐步增加训练的新阶段。由于低阶的接收场和表示能力受到限制,因此网络将被迫首先从局部细节(即对象纹理)中利用区分性信息。与直接训练整个网络相比,这种增量性质使模型可以在特征逐渐发送到更高阶段时,从本地细节到全局结构中定位判别信息,而不是同时学习所有粒度。

损失函数为:

L C E ( y l , y ) = − ∑ i = 1 m y i l × log ⁡ ( y i l ) \mathscr{L}_{C E}\left(y^{l}, y\right)=-\sum_{i=1}^{m} y_{i}^{l} \times \log \left(y_{i}^{l}\right) LCE(yl,y)=i=1myil×log(yil)(公式2)

L C E ( y c o n c a t , y ) = − ∑ i = 1 m y i c o n c a t × log ⁡ ( y i c o n c a t ) \mathscr{L}_{C E}\left(y^{concat}, y\right)=-\sum_{i=1}^{m} y_{i}^{concat} \times \log \left(y_{i}^{concat}\right) LCE(yconcat,y)=i=1myiconcat×log(yiconcat)(公式3)

在每次迭代中,一个batch的数据d将用于S+1步,并且我们仅在串联的每一步中训练一个阶段的输出。需要明确的是,即使之前的步骤中可能已对所有参数进行了优化,当前预测中使用的所有参数也将得到优化,这可以帮助模型中的每个阶段协同工作。

3.3. 拼图生成器

拼图解决被发现适合于表征学习中的自监督任务。相反,我们借用拼图游戏的概念来为渐进式训练的不同步骤生成输入图像。目的是设计不同的粒度区域,并强制模型在每个训练步骤中学习特定于相应粒度级别的信息

给定输入图片d,维度为3xWxH,将其分为nxn块,每块的维度为3x(W/n)x(W/n),W和H必须能被n整除,这些块被打乱然后重组新的图片P(d,n)。

n的选择需要满足:

  • patch的大小应小于相应阶段的接收场,否则,拼图发生器的性能将减少;
  • 斑块的大小应随阶段的感受野的增加而成比例增加。通常,每个阶段的感受野大约是上一个阶段的感受野的两倍。

因此,对于第l阶段的输出,我们将n设置为 2 L − l + 1 2^{L-l+1} 2Ll+1在训练阶段,一个batch里的d个数据经过拼图生成器变成P(d,n),所有的拼图生成器共享一个类别标签y,对于第l个阶段的输出y^l,输入batchP(d,n), n = 2 L − l + 1 n=2^{L-l+1} n=2Ll+1应该澄清的是,拼图生成器不能始终保证小于补丁大小的所有部分的完整性。尽管可能存在一些小于补丁大小的部分,但这些部分仍有机会被拆分。但是,对于模型训练而言,这不是一个坏消息,因为我们采用了随机裁剪,这是拼图游戏生成器之前的标准数据增强策略,并且导致与以前的迭代相比补丁有所不同。由于拼图游戏生成器而在此迭代中被拆分的小的可区分部分将不会总是在其他迭代中被拆分。因此,它带来了一个额外的优势,即迫使我们的模型在特定的粒度级别上找到更多可区分的部分。

3.4. 推理

在测试阶段,将原始图片输入到已经训练好的模型中,不需要拼图生成器。如果仅使用concat结果,其他阶段的FC层可以删掉以减少计算开销,最终的结果为 C 1 = a r g m a x ( y c o n c a t ) C_1=argmax(y^{concat}) C1=argmax(yconcat),但是,基于特定粒度信息的单个阶段的预测是唯一且互补的,当我们将所有输出与相等的权重组合在一起时,这会带来更好的性能。 多输出组合预测C2可以写成 C 2 = a r g m a x ( ∑ l = L − s + 1 L y l + y c o n c a t ) C_2=argmax(\sum_{l=L-s+1}^{L} y^{l} + y^{concat}) C2=argmax(l=Ls+1Lyl+yconcat)。因此,在我们的模型中可以同时获得y^concat的预测和多输出连接预测。另外,尽管所有预测都是对最终结果的补充,但对于形状相对较平滑的那些对象(例如汽车),yconcat足够了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值