• 细粒度


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

    abstract

    细粒度可视分类(FGVC)比传统分类任务更具挑战性,因为类内对象的内在微妙变化。最近的研究主要集中在如何定位最具区别性的部分、更互补的部分以及不同粒度(granularities)的部分上。然而,对于哪些粒度是最具区别性的,以及如何在多粒度之间融合信息这两方面,人们所做的努力较少。在这项工作中,我们提出了一个新的细粒度视觉分类框架来解决这些问题。特别地,我们提出:(i)一种新颖的渐进训练策略,在每个训练步骤中增加新的层次去利用在最后一步和前面阶段发现的更小粒度的信息。(ii)一个简单的拼图生成器(jigsaw puzzle generator),生成包含不同粒度级别信息的图像。我们在几个标准的FGVC基准数据集上获得了最先进的性能,其中所提出的方法始终优于现有方法或提供有竞争力的结果。代码可见https://github.com/RuoyiDu/PMG-Progressive-Multi-Granularity-Training

    1 Introduction

    细粒度视觉分类(FGVC)旨在识别给定对象类别的子类,例如,不同种类的鸟类,以及不同汽车和飞机的模型。这是一个比传统分类更具挑战性的问题,因为子类之间的类内对象的内在微妙变化。迄今为止,最有效的解决方案依赖于在局部判别区域提取细粒度特征表示,或通过显式检测语义部分[11,38,35,12,36]或通过显著性定位[31,10,4,24]进行隐式检测。然后对这些局部判别特征进行综合融合,进行最终分类。

    早期的工作大多是借助人工标注来发现判别区域[2,21,34,37,16]。然而,人工注释很难获得,而且常常容易出错,从而导致性能下降[38]。因此,研究焦点已经转移到仅给予类别标签的弱监督的训练模型[38,35,31,4]。这些模型的成功在很大程度上可以归因于能够定位更具区分度的局部区域去进行分类。然而很少或根本没有努力是朝着以下的两个方面的, (i)粒度即这些最具区分度的局部区域,例如,一只鸟的头或鸟喙,和(ii)如何将不同粒度的信息融合在一起去提高分类准确性,例如,鸟的头部和嘴信息可以融合在一起。

    然而,跨不同粒度的信息有助于避免大的类内变化的影响。例如,专家有时需要同时利用鸟头部的整体结构和更精细的细节(如鸟喙的形状)来识别一只鸟。也就是说,仅仅识别有区分度的parts往往是不够的,还需要了解这些parts如何以互补的方式相互作用。最近的研究集中在“放大”因素[11,36],也就是说,不仅仅是识别parts,而且还集中在每个parts真正有区分度的区域(例如,喙,而不是头部)。然而,这些方法主要集中在几个parts,忽略了其他地方,因为使用了放大法,而不是简单的融合。更重要的是,他们没有考虑如何将不同放大parts的特征以协同的方式融合在一起。与这些方法不同的是,我们进一步认为,人们不仅需要识别parts及其最具区分度的粒度,同时还需要如何有效地合并不同粒度的parts。

    在本文中,我们对细粒度分类采取另一种立场。我们既不显式也不隐式地试图从parts(或其放大版本)中挖掘细粒度的特征表示。相反,我们以一种假设来处理这个问题,即细粒度的区分信息自然地存在于不同的视觉粒度中——这都是为了鼓励网络在不同粒度上学习,同时融合多粒度特征。图1可以更好地解释这一点。

    更具体地说,我们提出了一个整合的框架,同时适应part粒度学习和跨粒度特征融合。这是通过两个相互协同工作的组件实现的:(i)一个渐进的训练策略,有效地融合来自不同粒度的特征,和(ii)一个随机jigsaw patch生成器,鼓励网络在特定粒度学习特征。注意,我们没有使用“scale”,因为我们没有对图像patch应用高斯模糊过滤器,而是均匀地划分和打乱图像patch,形成不同的粒度级别。

    作为第一个贡献,我们提出了一个多粒度渐进训练框架来学习不同图像粒度之间的互补信息。这与现有技术显著不同,现有技术首先检测parts,然后以特别的方式融合。在训练过程中,我们的渐进框架是分步骤进行的,在每个步骤中,训练的重点是利用网络的相应阶段培养特定粒度的信息。我们从更稳定的更细的粒度开始,逐渐转向更粗的粒度,从而避免出现在大区域的大型类内变化所造成的混乱。就其本身而言,这类似于“缩小”操作,网络将聚焦于一个局部区域,然后缩小围绕这个局部区域的更大的区域,直到我们得到整个图像时结束。更具体地说,当每个训练步骤结束时,在当前步骤中训练的参数将作为参数初始化传递到下一个训练步骤。这种传递操作本质上是使网络能够基于前一个训练步骤中学习到的区域挖掘粒度更大的信息。从所有阶段提取的特征只在最后一步进行连接,以进一步确保互补关系得到充分挖掘。

    然而,简单地应用渐进训练不会对细粒度特征学习有好处。这是因为通过渐进训练学习到的多粒度信息可能倾向于关注相似的区域。第二个贡献是,我们通过引入一个jigsaw puzzle生成器在每个训练步骤形成不同的粒度级别来解决这个问题,并且只有最后一个步骤仍然使用原始图像进行训练。这有效地鼓励模型在patch级别上操作,其中patch大小是特定于特定粒度的。它本质上迫使网络的每个阶段关注局部patch而不是整个图像,因此学习特定于给定粒度级别的信息。图1演示了这种效果。请注意,[4]最近的工作首先采用了jigsaw solver来解决细粒度分类。我们的显著不同之处在于我们不使用jigsaw solver作为特征学习的一部分。相反,我们只是简单地随机生成jigsaw patch,以引入不同的对象parts级别来辅助渐进训练。

    本文的主要贡献归纳如下:

    1. 我们提出了一种新的渐进训练策略来解决细粒度分类问题。它在不同的训练步骤中运行,每一步都融合来自先前粒度级别的数据,最终在不同粒度之间培养固有的互补属性,用于细粒度特征学习。

    2. 我们采用了一个简单而有效的jigsaw puzzle生成器来形成不同级别的粒度。这允许网络和之前的工作一样专注于不同的“scales”特性。

    3.提出的渐进多粒度(Progressive Multi-Granularity,PMG)训练框架在所有三个标准的FGVC基准数据集上获得最先进的或有竞争力的性能。

    2 Related Work

    2.1 Fine-Grained Classification

    得益于近年来神经网络的发展,如VGG[28]、ResNet[14]等,神经网络的特征提取能力得到了显著提高。近年来,关于FGVC的研究已经从带有额外标注的强监督情境(如bounding box[2,21,34,37,16])转变为仅带有类别标签的弱监督情境(如类别标签[11,38,35,12,36])。

    在弱监督结构中,最近的研究主要集中在定位最具区别性的部分、更互补的部分和各种粒度的部分。然而,很少有人考虑如何更好地将这些判别部分的信息融合在一起,目前的融合技术大致可以分为两大类。(i)第一种方法是根据不同的parts进行预测,然后直接将它们的概率组合在一起[36]。Zhang等人[36]训练了几个针对不同粒度特征的网络,产生不同的预测分布,然后对其结果进行加权,然后将其组合在一起。(ii)其他一些方法将从不同parts提取的特征连接在一起进行下一个预测[38,11,12,35]。Fu等人发现区域检测和ne-grained特征学习可以相互增强,并建立了一系列的网络,在进行预测时为下一个网络寻找有区分度的区域。Zheng等[38]以相似的动机,共同学习了part proposals和每个part上的特征表示,并在预测前定位各种判别parts。它们都训练一个全连接的融合层来融合从不同parts提取的特征。Ge等人的[12]更进一步,用两个LSTMs叠加在一起融合互补对象parts的特征。

    不同parts特征的融合仍然是一个具有挑战性的问题,但目前在这方面的研究还很少。在本研究中,我们试图基于细粒度对象的内在特征来解决这一问题:尽管具有较大的类内变化,但细微细节在局部区域表现出稳定性。因此,我们不是先定位有区分度的特征,而是引导网络从小粒度逐步学习到大粒度。

    2.2 Image Splitting Operation

    在以前的研究中,将图像分割成相同大小的碎片用于不同的目标。其中一种典型的解决方法是解决jigsaw puzzle[6,29]。它还可以更进一步,采用jigsaw puzzle解决方案作为弱监督网络的初始化,从而获得更好的转换性能[33]。该方法有助于网络充分利用图像的空间关系。在one-shot学习中,使用图像分割操作进行增强,将两幅图像分割,并交换其中的一些patch,生成新的训练图像[5]。在最近的研究中,DCL[4]首先对FGVC进行图像分割操作,通过破坏全局结构来强调局部细节,并重建图像来学习局部区域之间的语义关联。但是,在整个训练过程中,分割的图像大小都是相同的,这就意味着很难利用多粒度区域。在这项工作中,我们使用一个jigsaw puzzle生成器来限制每个训练步骤中学习区域的粒度。

    2.3 Progressive Training

    渐进式训练方法最初被提出用于生成式对抗网络[18],它从低分辨率图像开始,然后通过向网络添加层来逐步提高分辨率。这种策略让网络发现图像分布的大规模结构,然后将注意力转移到尺度细节上,而不是从所有尺度上学习信息。近年来,渐进训练策略被广泛应用于生成任务[19,27,32,1],它通过中间监督简化了信息在网络中的传播。

    对于FGVC,多粒度信息的融合对模型的性能至关重要。在这项工作中,我们采用渐进训练的思想来设计一个单一的网络,可以通过一系列的训练阶段来学习这些信息。首先将输入图像分割成小patches,训练低级层次
    的模型。然后逐步增加patches的数量,并相应地添加相应的层,高级层被添加进来并进行训练。目前采用渐进训练的大部分工作都集中在样本生成的任务上。据我们所知,在FGVC任务中还没有尝试过这种方法。

    3 Approach

    在本节中,我们将介绍我们提议的渐进多粒度(PMG)训练框架。如图2所示,为了解决类内的大变化问题,我们鼓励模型在较浅的层次学习稳定的细粒度信息,并随着训练的进行逐步将注意力转移到较深层次的大粒度抽象信息的学习上。

    3.1 Network Architecture

     我们网络设计是通用的,可以使用在所有现有先进的backbone特征抽取器上,如Resnet[14]。让F表示backbone特征抽取器,其有着L个阶段。来自中间阶段的输出特征map表示为,其中分别表示阶段的特征map的高、宽和channels数量,其中。这里,我们的目标是在从不同的中间阶段抽取的特征map上使用分类损失。因此,除了F,我们引入卷积块,其将层的中间阶段输出作为输入,并将其缩减为一个向量表征。然后,每个层后跟随着一个包含了两个带有BatchNorm[17]和Elu[7]非线性函数的全连接层的分类模块,用来预测类的概率分布。这里我们考虑最后的S个阶段:。最后,我们串联来自最后三个阶段的输出:

    其后跟随一个额外的分类模块

    3.2 Progressive Training

    我们采用渐进式训练,首先训练低阶段,然后逐步增加新的训练阶段。由于低阶段的感知域和表达能力有限,网络将被迫首先从局部细节(如物体纹理)中挖掘有区分度的信息。与直接训练整个网络相比,这种增量特性允许模型在特征逐步发送到更高阶段时,从局部细节到全局结构定位有区分度的信息,而不是同时学习所有粒度。

    对于每个阶段的输出和最后串联特征的输出的训练,我们在ground truth标签y和预测概率分布之间采用了交叉熵损失(CE),用于损失计算:

    在每次迭代中,一个batch的数据d将被用于S+1步,我们只会按顺序在每一步训练一个阶段输出。需要明确的是,当前预测中使用的所有参数都将得到优化,即使它们可能已经在前面的步骤中更新,这可以帮助模型中的每个阶段一起工作。

    3.3 Jigsaw Puzzle Generator

    Jigsaw Puzzle solving[33]十分适合用于表征学习的自我监督任务。相反,我们借用jigsaw puzzle的概念来为不同的渐进训练步骤生成输入图像。目标是设计不同的粒度区域,并在每个训练步骤强制模型学习特定于相应粒度级别的信息。给定输入图像,我们均匀地将其分成nxn个patches,每个的维度为WH应该为n的整数倍。然后,这些patches会被随机打乱,然后合并为一个新的图像P(d,n)。在这里,patches的粒度受超参数n的控制。

    对于每个阶段的超参数n的选择,需要满足两个条件:(i)patches的大小要小于对应阶段的接受域,否则会降低jigsaw puzzle生成器的性能;(ii)随着各阶段接受域的增加,patches的大小应成比例增加。通常,每个阶段的接受域大约是上一个阶段的两倍。因此,对于阶段的输出,我们设n为2L−l+1

    训练期间,一个batch的d个训练数据将首先被增强为jigsaw puzzle 生成器处理后的batch,获得P(d, n)。所有的jigsaw puzzle 生成器处理后的batch共享相同的标签yl。然后,对阶段的输出yl,我们输入batch P(d, n), n = 2L−l +1,并优化所有的参数用于传播。图2一步一步地说明了训练过程。

    需要说明的是,jigsaw puzzle 生成器不能总是保证所有小于patches大小的parts的完整性。虽然可能存在一些比patch大小小的部分,但这些parts仍然有可能被分割。但是对于模型训练来说,这也不是一个坏消息,因为我们在jigsaw puzzle 生成器之前采用的是一种标准的数据增强策略——随机裁剪,导致的结果是patches与之前迭代的patches不同。在这个迭代中由于jigsaw puzzle 生成器而被分割的小的有区分度的parts,在其他迭代中不会总是被分割的。因此,它带来了一个额外的优势,即强制我们的模型在特定粒度级别上找到更多有区分度的parts。

    3.4 Inference

    在推理阶段,我们仅输入原始图像到训练模型中,不再使用jigsaw puzzle 生成器。如果我们仅使用去预测,那么其他三个阶段的FC层将被移除,减少计算负担。这样,最后的结果C1可以表示为:

    然而,基于特定粒度信息的单个阶段的预测是唯一且互补的,当我们以相同的权重将所有输出组合在一起时,这将导致更好的性能。多输出组合预测C2可以写成

     

    因此,我们的模型既可以得到的预测,也可以得到多输出组合预测。另外,虽然所有的预测都是对最终结果的补充,但是对于那些形状相对光滑的物体,例如汽车,已经足够了。更多实验细节见第4节。

    4 Experiment Results and Discussion

    在本节中,我们在三个 ne-grained图像分类数据集上评估所提出的方法的性能:Caltech UCSD-Birds (CUB)[30]、Stanford Cars (CAR)[20]和FGVC-Aircraft (AIR)[25]。首先,4.1节介绍了实现细节。随后,4.2节给出了与其他最先进方法的分类精度比较。为了说明在我们的方法中不同部件和设计选择的优势,在4.3和4.4节提供了一个全面的ablation研究和可视化。

    4.1 Implementation Details

    我们在GTX 2080 gpu集群上使用高于1.3版本的PyTorch[26]进行所有实验。在广泛使用的backbone VGG16[28]和ResNet50[14]上对该方法进行了评价,总阶段数设置为L = 5。为了获得最佳性能,我们设置S = 3,α= 1,和β= 2。图像的类别标签是唯一用于训练的注释。将输入图像大小调整为550×550,随机裁剪为448×448,并在训练模型时使用随机水平ip进行数据增强。在测试过程中,输入图像的大小被调整为550×550,并从中心裁剪为448×448。以上设置均为文献标准。

    我们使用随机梯度下降优化器(SGD)和batch normalization作为正则化器。同时,我们新添加的卷积层和FC层的学习率分别初始化为0.002,并在训练过程中按照cosine annealing schedule[23]降低学习率。预训练的卷积层的学习率保持为新添加层的1/10。对于上述所有模型,我们对它们进行了300个epoch的训练,批大小为16,使用的权重衰减为0.0005,动量为0.9。

    4.2 Comparisons with State-of-the-Art Methods

    表1列出了我们的方法与其他最先进的方法在CUB-200-2011、Stanford Cars和FGVC-Aircraft上的比较。列出了的精度和所有四种输出的组合精度。

    CUB-200-2011 由于在测试过程中只需要一个网络和一个前向传播,所以我们在一个简单的实验过程中就可以在这个数据集上获得具有竞争力的结果。我们的方法比RA-CNN[11]和MGE-CNN[36]的性能要好4.3%和1.1%,尽管他们建立了几个不同的网络来学习不同粒度的信息。他们分别训练每个网络的分类,然后将它们的信息组合起来进行测试,这证明了我们在一个网络中逐步开发多粒度信息的优势。此外,即使堆叠LSTM[12]的性能比我们的方法好,它也是一种两阶段算法,需要Mask-RCNN[13]和CPF提供互补的对象parts,然后使用双向LSTM[15]进行分类,导致更多的推理时间和计算预算。

    Stanford Cars 我们的方法以Resnet50为基础模型,实现了最先进的性能。由于Stanford cars数据集的cars刚性要高得多,的性能也足够好,所以组合多级输出的改进并不明显。我们的方法通过采用更先进的backbone网络DenseNet161提高了性能,但其结果超过了PC[10]。对于MA-CNN[38]和NTS-Net[35],他们首先定位几个不同的判别部分,然后结合提取的特征进行最终分类,我们的表现比它们高出2.3%和1.2%。

    FGVC-Aircraft 在这个任务上,我们的方法的多级输出组合结果也达到了最先进的性能。虽然S3N[9]在特征提取中同时找到了判别部分和互补部分,并对这些部分进行了额外的非均匀变换来突出这些部分,但是在相同的backbone网络ResNet50下,我们仍然比它强0.6%,即使采用VGG16作为基础网络,也表现出了有竞争力的结果。

    4.3 Ablation Study

    我们进行消融研究以了解渐进式训练策略和jigsaw puzzle生成器的有效性。我们选择CUB-200-2011 数据集进行实验,bacobone网络为ResNet50,也就是说L阶段的总个数为5个。我们首先设计不同的运行,将输出的阶段数从1个增加到5个,并且没有jigsaw puzzle生成器,如表2所示。被保存在所有的运行中,并且步数是S+1。可见,当S < 4时,S的增加显著提高了模型性能。然而,我们也注意到,当S变为4时,精度开始下降。可能的原因是,低阶段层主要关注与类无关的特征,但额外的监督会迫使其寻找与类相关的信息,从而影响整体性能。

    在表3中,我们在jigsaw puzzle 生成器的帮助下报告了我们的方法的结果。第阶段的jigsaw puzzle生成器的超参数n遵循n = 2L−l+1的模式。与表3的结果相比,当S < 4时,jigsaw puzzle 生成器在渐进训练的基础上提高了模型性能。当S = 4时,带有jigsaw puzzle 生成器的模型没有表现出任何优势,当S = 5时,jigsaw puzzle generator降低了模型性能。这是因为当n > 8时,分割的patches太小,不能保留有意义的信息,这就混淆了模型训练。

    根据以上分析,当我们选择合适的s时,渐进训练有利于细粒度分类任务。在这种情况下,jigsaw puzzle生成器可以进一步提高性能。

    4.4 Visualization

    为了说明该方法的优越性,我们利用Grad-CAM实现了该方法和基线模型的最后三个阶段卷积层的可视化。图3中的(a)-(c)列是我们模型backbone第三至第五阶段的卷积层的可视化,由jigsaw puzzle 生成器以n ={8,4,2}的顺序生成的图像监督。在(a)栏中可以清楚地看出,模型集中在第三阶段的小粒度区分部分,如鸟眼和鸟类羽毛的小图案或纹理。在(c)列中,模型的第五阶段关注粒度较大的部分。可视化结果表明,该模型能够实现由小粒度到大粒度的区分部分逐步进行预测。

    与基线模型的激活图相比,我们的模型在目标对象上显示出更多有意义的集中,而基线模型仅在最后阶段显示出正确的注意力。这一差异表明,渐进训练的中间监督有助于模型在早期阶段定位有用信息。此外,我们发现基线模型通常只关注对象的一个或两个部分,在最后阶段进行预测。然而,我们的方法在每个阶段的注意区域几乎覆盖了整个对象,这表明由jigsaw puzzle生成器生成的图像可以迫使模型在每个粒度级别上学习更多的有区分度的parts。

    5 Conclusions

    本文在细粒度的分类任务中使用渐进的训练策略,提出一个新的框架,命名为Progressive Multi-Granularity (PMG) Training,其主要包含两个主要组件:(i)新的训练策略,其采用循序渐进的方式去融合多粒度特性,和(2)一个简单的jigsaw puzzle生成器生成包含不同粒度级别信息的图像。我们的方法可以实现端到端的训练,除了类别标签,不需要其他手动注释,并且在测试过程中只需要一个带有一次前向传播的网络。在3个广泛应用的细粒度数据集上进行了实验,其中2个获得了最先进的性能,另一个获得了较好的结果,证明了该方法的有效性。

  • 相关阅读:
    Support依赖库大全
    反射调用泛型
    会爬行的小乌龟
    改进版——使用了双缓冲技术
    启动运行发现窗体不能最大化,添加
    添加图层
    实现放大,缩小,漫游,复位等功能
    从上一个项目中我得到的反思
    ​Error -4075: File not found. An error occurred merging module <MODULENAME> for feature <FEATURENAME>.
    总结—angularjs项目
  • 原文地址:https://www.cnblogs.com/wanghui-garcia/p/14293756.html
Copyright © 2020-2023  润新知