在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition

这次翻译的论文也是CVPR2018的,关于细粒度识别的论文,链接为:http://openaccess.thecvf.com/content_cvpr_2018/papers/Wang_Learning_a_Discriminative_CVPR_2018_paper.pdf

摘要

与之前使用CNN特征的多级框架相比,最近的端到端的细粒度识别深度方法本质上提高了CNNs的中间层mid-level的学习能力。以前的方法是通过引入辅助网络将定位信息注入主分类网络来实现这一点,或者采用复杂的特征编码方法来捕获高阶特征统计数据。我们表明,mid-level代表学习可以通过学习了一个卷积过滤器库的CNN框架增强,这些过滤器没有额外的部分或边框注释就能捕捉特定类别的鉴别块。这样的过滤库结构良好,已合适初始化,并且通过一种新颖的卷积过滤器监督的非对称多流结构和一种非随机层初始化来有判别力的学习。实验结果显示,我们的方法在三个公开可用的细粒度识别数据集上(CUB-200-2011, Stanford Cars and FGVC-Aircraft)达到了顶尖的结果。提供消融研究和可视化以了解我们的方法。

1 引言

细粒度目标识别涉及区分相同超类别下(如鸟,车和飞机)的子类别,解决方法经常使用局部区域的信息来捕捉微小的不同。这个任务早期的深度学习应用在CNN特征上建立传统的多级框架;更多最近的基于CNN的方法通常端到端的训练来粗略地划分为两个类别:定位分类子网络和端到端的特征编码。

之前的多级框架使用低层low-level特征来寻找有区别的区域或者语义部分,从中构造一个中间层表示以进行分类。与两种基线相比,这些方法获得了更好的性能:(1)它们在手工制作特征方面(如SIFT)远远超过了对手,这意味着低层CNN特征远比之前的手工制作的更有效。(2)微调相同的作为特征提取的CNN,明显更优于基线。这进一步说明了学习中间层的代表,CNN的能力是有限的,且仍然有足够的空间提升。基于这些结果,端到端的框架旨在提升CNN的mid-level代表学习能力。

第一个类别,定位分类子网络,包含定位网络辅助的分类网络。分类网络的mid-level学习能力通过定位网络的定位信息(如分离位置和分割掩码)。这个分类的早期工作依靠附加语义部分注释,而最近只需要类别标签。不管注释如何,这些方法背后的共同动机是首先找到相关的部分,然后比较它们的外观。第一步要求语义部分(如鸟的头和身体)在对象类之间共享,鼓励这部分的代表相似;但是,为了区分,后者鼓励各类之间的部分表示不同。这种微妙的冲突意味着识别和定位能力的协调,这可能会降低单个集成网络的分类性能。实际上,这种权衡也会受到影响,因为训练通常涉及两个网络的交替优化,或者单独训练两个网络,然后进行联合调优。交替或多级策略使集成网络的调整复杂化。

第二个分类,端到端的特征编码,通过编码卷积特征图的高阶统计信息增强CNN的mid-level学习。当SIFT特性的Fisher Vector编码比微调的Alexnet在细粒度识别上大幅度提高时,对更高阶统计数据的端到端建模的需求变得明显。由此产生的架构已经成为文献中的标准基准。尽管有效,但与定位分类子网络相比,端到端编码网络在非刚性和刚性可视域中的可解释性和一致性较低。

本文处理了两类端到端网络所面临的问题。我们的主要贡献是以端到端的方式在CNN框架内明确地学习具有识别性的中间层块,而不需要额外的部件或边界框注释。这是通过将1×1过滤器视为小的“块检测器”来实现的,设计了一个非对称多流结构来利用块级别上的信息和全局外表,引入非随机层初始化的过滤器监督来激活可区分块的过滤器。从概念上讲,我们可区分的块不同于定位识别子网的部分,只要它们具有区分外观,就不必在类之间共享它们。因此,我们的网络完全专注于分类,避免了识别和定位之间的权衡。从技术上讲,一个被训练为识别性块检测器的卷积滤波器只会在一个类的特定区域产生高响应。

由此产生的框架通过引入一组具有识别性的过滤器来增强经典CNN的mid-level学习能力。在实践中,我们的框架保留了前两种方法的优势:
简单和有效。网络易于构建,一旦初始化,只需要进行单阶段训练。它超越了最先进的技术。具有较高的人的可解释性。这是通过各种消融研究和所学识别性块的可视化显示出来的。

跨不同的细粒度可视域和各种网络体系结构的一致性能。

2 相关工作

细粒度识别 细粒度识别的研究已经从基于手工制作的特征的多级框架转向具有CNN特征的多级框架,然后转向端到端的方法。定位分类子网络有定位网络,通常是R-CNN,FCN(全卷积网络)或STN(空间变换网络)的变体;还有识别网络,基于定位的识别。最近的进展是使用循环定位网络,比如LSTM或者特殊设计的循环构架,明确地回归部分的位置和规模。端到端的编码方法编码更高级的信息。经典的基准,双线性CNN使用对称的双流网络结构和双线性模块,该模块计算两个流输出的外部产品,以捕获二阶信息。[10]进一步观察到,通过将外部产物置于单流输出及其自身上,可以实现类似的性能。最近的一些进展减少了高特征维数或使用内核化模块提取高阶信息。其他人探索了一些方向,例如利用层次标签结构,结合视觉和文本信息,三维辅助识别,将人类引入循环和收集大量数据。
CNN中间层代表 层可视化表明,CNN中间层从边缘和角落到部分和物体来学习人类可解释的方法。关于这个方法的可判别性,有两个假设。第一,这些层中的一些神经元表现为“外婆细胞”,只存在于某些类别;第二,神经元形成一个分布式代码,其中单个神经元的固定模式不特别,可判别性分布在所有神经元中。正如[1]所观察到的那样,一个经典的CNN学习了“外婆细胞”和分布式代码的组合。这一观察得到了[56]的进一步支持,发现通过对卷积层生成的所有特征图进行适当的加权平均,可以有效地可视化用于分类的输入图像中的所有区域。注意[1]和[56]都是基于CNN的原始结构,为了更好的定位,表示学习的质量保持不变或稍差。另一方面,[28, 21, 22]通过对中间层进行监督来学习更多有判别性的表示,通常通过另一个全连接层后面跟着loss层来转换全连接层的输出。这些转换在监督信号和内部的过滤器之间引入了分割使他们的方法难以可视化。一个最近相关的工作是受欢迎的SSD检测框架;它将卷积过滤器和特定的纵横比类别或特定的定位坐标相关联。与SSD相比,我们的体系结构在更高层次上运行(小块而不是对象),并针对识别进行了优化。

3 学习可区分块检测器作为卷积过滤器组

我们将1*1卷积过滤器作为一个小的块检测器。特别地,根据图1,如果我们将输入图片通过一系列卷积和池化层操作来获得尺寸为C × H × W的特征图,每个通道上的每个C × 1 × 1的向量在固定的空间位置上,代表原始图像中相应位置的小块。假设我们学习的1 × 1过滤器对固定的可判别区域有高度响应,通过这个过滤器卷积得到的特征图我们能获得一张热图。因此,只需选择在整个heatmap中具有最大值的位置,就可以找到一个有区别的块。这种在空间上池化整个特征图到单个值的操作定义为全局最大池化(GMP)。
在这里插入图片描述
图1 我们的方法的动机是将特征图中的C×1×1矢量视为小块的表示,将1×1卷积滤波器视为区分块检测器。通过将特征图与1×1过滤器卷积,并在响应图上执行全局最大池化(gmp),可以发现一个有区别的块。整个框架在图2显示。

要使特征图适合这一方法,需要满足两个要求。首先,由于细粒度类别中的识别区域通常高度局部化,我们需要一个相对较小的接收场,即每个c×1×1矢量代表原始图像中的一个相对较小的补丁。第二,由于细粒度识别涉及到精确的块定位,相邻块之间原始图像的步幅也应该很小。在早期的网络体系结构中,卷积过滤器和池内核的大小和步幅都很大。结果,在随后的卷积层中,单个神经元的接收域很大,相邻域之间的跨距也很大。幸运的是,网络构架的发展导致更小的过滤器和池化核。比如,在VGG-16网络中,第10个卷积层的输出conv4_3表示小到92 × 92,步长为8的块,对于我们任务所需的常见的CNN输入大小而言,是足够小和密集。

在第3节的剩余部分,我们证明了如何在专门为此任务设计的网络中,将一组识别性块检测器作为1×1卷积层来学习。图2展示了我们框架的总的概况。我们的设计中有三个重点部分。一种不对称的双流结构来学习有判别力的块和全局特征(3.1节),卷积过滤器监督来确定块检测器的区别性(3.2节),和非随机层初始化加速网络收敛(3.3节)。然后我们扩展我们的框架来处理不同规模的块(3.4节)。我们使用VGG-16进行说明,但我们的想法并不局限于我们的实验所显示的任何特定网络架构。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第1张图片
图2 我们框架的总概述,其中包含了a)一种非对称双流结构来学习可判别块和全局特征,b)监督学习区分块检测器和c)非随机层初始化。为了简单起见,除了GMP,所有在卷积层之间的池化和Relu层都不展示。

3.1 非对称双流结构

负责区分块学习的网络的核心组件是一个1×1的卷积层,后面是一个GMP层,如图1所示。该部分后接一个分类器(例如,全连接层和SoftMax层)构成我们网络的区分块流(P流),通过检查区分块检测器的响应进行预测。P流使用conv4_3的输出,这个特征图中最小的接收域对应于步长为8,92 × 92大小的块。

一些细粒度类别的识别可能也依靠于全局形状和外观,因此,另一个流保留了进一步的卷积层和全连接层,其中第一个全连接层中的神经元通过线性组合整个卷积特征图来编码全局信息。因为这个流专注于全局特征,我们称它为G流。

最后我们将这两股流合并到一起。

3.2卷积过滤器监督

使用上述描述的网络框架,P流的1×1卷积层不能保证所想要的固定到可区分的块。对于特定类区分块检测器的框架,我们直接在1 × 1过滤器上通过引入跨通道池化层,后面再跟着softmax损失层来进行监督,如图3所示,也是图2中整个框架的一部分。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第2张图片
图3 我们卷积过滤器监督的图解。在conv6中的过滤器分为M组,M是类别的数量。i组中最大响应平均成一个单一的分数表示可区分块在i类中的影响力。池化向量输入softmax损失层中来激励可区分块的学习。

过滤器监督工作如下。假设我们有M个种类,每个类有k个可区分的块检测器,那么需要Km个1 × 1过滤器。通过GMP获得每个过滤器的最大响应后,我们得到kM维度的向量。跨通道池化将每组k维的值作为某个类的响应进行平均,从而生成M维向量。通过将池化的向量喂给M维的softmax损失,我们鼓励过滤器从任何类中寻找那个类中训练样本中的可区分块,所以它们的平均的过滤器响应是很大的。我们使用平均池化而不是最大池化来鼓励所有的过滤器从给定类中得到平衡的响应。平均池化在反向传播时有影响所有池化的过滤器的趋势,而最大池化值影响有最大响应的过滤器。相似的思考在[56]中描述。

因为softmax损失层和1 × 1卷积层中没有可学习的参数,我们直接通过损失函数调整过滤器权重。相反,先前的方法引入中间监督,在边缘损失和主网络间有可学习的权重(通常是全连接层),在测试时会学习未使用的分类器的权重。主网络只会被反向传播时这些权重的梯度所影响。我们相信这是我们的方法和先前的方法的重要不同。

3.3 层初始化

实际上,如果1 × 1卷积层是随机初始化,在过滤器的监督下,它可能收敛到坏的局部极小值。例如,跨通道池化的输出向量可以接近全部零或某个常数,以减少训练过程中的边缘损失,这是一个退化解。为了解决这个问题,我们引入了一种非随机初始化方法。

非随机初始化是由我们将1×1过滤器解释为块检测器来驱动的。类i的块检测器由类中的样本里块代表初始化,即使用没有局部注释的弱监督。具体地说,在特征图的相应空间位置用c×1×1向量表示一个块。我们从ImageNet预训练模型中提取conv4_3的特征,计算每个空间位置(特征图中每个C维向量的l2正则化)的能量。如图10中第1行所展示,即使不完美,能量分布的热图作为有用块的合理指标。然后通过具有小重叠阈值的非极大值抑制来选择具有高L2正则化的向量;对i类中选定的C维向量执行k均值,并使用簇中心作为i类过滤器的初始化。为了增加它们的可区分性,我们进一步使用[14]使初始化变白和做l2正则化处理。实际上,这个简单的方法提供了合理的初始化,在端到端的训练中进一步定义。在第4节我们也展示了训练之后变的更有区分性的能力分布。

只要层能合适地初始化,整个网络就能以端到端的方式进行一次训练,与之前的多级训练方法相比更有效。

3.4 扩展:多尺度

将3.1到3.3节放到一起,由此产生的框架可以使用单一尺度的可区分性块。自然和必要的扩展是利用多尺度的块,因为在视觉域中,例如鸟和飞机,物体可能具有更大的尺度变化。

正如3.1节所讨论的,可区分块大小由输入的特征图的接受域所决定。因此,我们方法的多尺度扩展相当于使用多个特征图。我们将P流和边缘分支(非随机初始化)一起作为可鉴别过滤器学习(DFL)模型,该模块在图2中的conv4_3之后添加。通过在多个卷积层后添加DFL模块,我们实现了多尺度的块学习。在实践中,早期卷积层生成的特征图不适合类特定操作,因为它们携带的信息太低级,因此在第4节中的几个后面的卷积层之后添加了DFL模块。

我们的多层分支受到对象检测的最新方法的启发,其中来自多个卷积层的特征映图直接用于检测多尺度的对象。与这些工作相比,我们的方法在更高的层次上运行,并针对识别而不是定位进行了优化。

4 实验

在这篇论文的剩余部分,我们通过DFL-CNN表示我们的方法,即是CNN中可区分的过滤器的学习的缩小。我们使用以下数据集:
CUB-200-2011,一共200个种类和11788张图片,被分为5994张训练图片和5794张测试图片。
Stanford Cars,一共196个种类和16185张图片,被分为8144张训练图片和8041张测试图片。
FGVC-Aircraft,一共100个种类和10000张图片,被分为6667张训练图片和3333张测试图片。

4.1 实施细节

我们首先描述DFL-CNN的基本设置,然后引入两个更高容量设置。我们所有网络的输入大小为448 × 448,这是文献中的标准。我们不使用部分或者bbox注释和与其它弱监督方法(没有部分注释)进行比较。另外,我们的实验没有用任何模型加强。

我们基本的DFL-CNN网络框架是基于16层的VGGNet,DFL模块在conv4_3后增加,正如图2中所描述的。在conv6中,我们设置每个类中过滤器的数量为10。在跨通道平均池化中,每10个过滤器的最大响应的将会集合成一个维度。在初始化时,conv6会用3.3节描述的方法初始化;其它原本的VGG-16层会直接从ImageNet预训练模型上初始化,其它新引入的层将随机初始化。初始化后,进行单阶段的端到端的训练,G-stream、P-stream和side branch分别具有自己的Softmax交叉熵损失,权重分别为1.0、1.0和0.1。测试时,这些softmax损失层将会被移除,预测是三个流输出的加权组合。

我们在两个方面扩展DFL-CNN。第一个扩展,3.4节讨论的2-scale DFL-CNN。在实践中,两个DFL模块会在conv4_3和conv5_2后添加,而最后一层卷积层(conv5_3)的输出会用G-Stream来提取全局信息。第二个扩展说明我们的方法应用于其它网络构架,一个50层的ResNet。与VGGNet相似,ResNet的卷积层被分为5组,我们的DFL模块添加到第四组的输出。初始化,两个扩展网络的训练和测试与基本DFL-CNN一样。

4.2结构

CUB-200-2011, Stanford Cars和FGVC-Aircraft的结果分别在表1,2,3展示。每个表格里从上到下,方法分为5组,正如在第1节中所描述的:1)微调基线,2)CNN特征和多阶段框架,3)定位分类子网,4)端到端的特征编码和5)DFL-CNN。基本DFL-CNN,2-scale扩展和ResNet扩展在4.1节分别表示为“DFL-CNN (1-scale) / VGG-16”, “DFL-CNN (2-scale) / VGG-16” 和 “DFLCNN (1-scale) / ResNet-50”。 我们基于VGG-16的方法不仅在很大程度上超过了相应的微调基线,而且在相同的基础模型下也达到或超过了最先进的水平;我们的最佳结果在所有数据集上进一步超过了最先进的水平,这表明了其有效性。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第3张图片
表1 将我们的方法(DFL-CNN)与CUB-200-2011的最新结果进行比较,没有额外的注释(如果没有特定)。对于微调(FT)基线,我们证明了如果其优于我们的实施,我们将引用先前报告的最佳结果。黑体数字代表之前最好的结果。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第4张图片
表2 将我们的方法(DFL-CNN)与Stanford Cars的最新结果进行比较,没有额外的注释(如果没有特定)。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第5张图片
表3 将我们的方法(DFL-CNN)与FGVC-Aircraft的最新结果进行比较,没有额外的注释(如果没有特定)。

早期的多阶段框架建立在CNN特征上,达到了可比较的结果,但它们经常需要边框注释,多阶段的特性限制了它们的潜力。端到端的特征编码方法在鸟类上有很好的效果,当处理刚性物体时,它们的优势会减弱。定位分类子网在不同的数据集上达到了高性能,通常都是有大量的网络参数。比如,STN包含Inception定位网络,后面是没有权重共享的Inception分类网络。RA-CNN包含3个独立的VGGNets和两个定位子网络。我们的端到端的方法没有另外的注释达到了顶尖的效果,在刚性对象和非刚性对象上具有一致的性能,并且具有相对紧凑的网络结构。

我们的方法可应用于各种网络构架。大多数先前的细粒度识别的方法都是基于VGGNet,先前提出的基于ResNet的方法的结果比基于VGG的方法效果更差。表1,2,3展示了我们的ResNet基线已经很强,然而我们基于DFL-CNN的ResNet大程度超过了强的基线(在鸟类上3.3%)。这很明显的说明了CNN的中层学习能力依然能提升,即使网络很深。

4.3 消融研究

我们使用消融研究来理解我们方法的组成。这些实验使用基本的DFL-CNN框架和CUB-200-2011数据集。
每个流的贡献 给定一个训练的DFL-CNN,我们调查测试时每个流的贡献。表4展示了单独G流或者P流的表现是普通的,但是这两个联合起来很明显比任何其中一个都要好,这说明全局信息和可区分的块信息是高度互补的。另外,在表1中,边缘分支提供了额外的增益来达到全性能。
在这里插入图片描述
表4 在CUB-200-2011上测试时流的贡献。说明训练时,全DFL-CNN模型已训练,但预测只使用了特定流。

中间层监督的效果 我们通过在不使用某些组件的情况下对DFL-CNN进行训练,并与完整模型进行比较,研究第3.2节和第3.3节的效果。表6展示了当我们逐渐增加中间层的监督组件来提高已学习的可区分过滤器时,性能得到显著提升。注意,表6不包括“没有层初始化的过滤器监督”设置,在3.3节已提到过,这个会导致P流的收敛失败。
在这里插入图片描述
表6 在训练时DFL-CNN的中间层监督的效果,在CUB-200-2011上进行评估。

GMP vs. GAP 通过简单地切换图2中pool6的池化方法,可以更深入地了解训练过程。从表5可以看出,将池化方法从GMP转换为全局平均池化(GAP)会导致性能显著下降,从而使精度接近表4中的“G-Stream Only”。
在这里插入图片描述
表5 GMP(全局最大池化)和GAP(全局平均池化)在CUB-200-2011上的影响比较。

因此,尽管conv6被初始化为相同的状态,但在训练过程中,GMP通过鼓励1×1过滤器在特征图的某个位置具有非常高的响应,使过滤器更具识别性,并且梯度只会反向传播到该位置,而GAP则会通过鼓励过滤器在整个特征图上做出普通的响应,并且梯度影响每个空间位置,以致于P-stream几乎毫无用处。

不必要的BBOX 因为我们的方法DFL-CNN,有能力使用无定位可区分的块,预计对BBOX的敏感度要低于最终微调后的基线,正如表7中所展示的结果。
在这里插入图片描述
表7 在CUB-200-2011上评估BBOX的影响。

4.4 可视化和分析

我们可以通过可视化conv6(1×1卷积层)的效果来了解我们方法的行为。为了理解它的行为,我们
(1)可视化块激活。由于我们将每个过滤器视为一个可区分的块检测器,我们通过重新映射顶部的过滤器激活回到图片来定义已学习的块。图4展示了我们发现的高质量可区分区域。
(2)可视化前向传播。因为这些过滤器的最大响应直接用于分类,通过可视化conv6下一层pool6的输出,我们发现它产生了可区分的,对某个类有高响应的代表。
(3)可视化反向传播。训练时,conv6通过反向传播能影响它之前的层,conv4-3(VGG16)。比较训练前后的conv4-3特征,我们发现之前特征图的空间能量分布的可区分方式改变了。

4.4.1 Stanford Cars

一些类别的1 × 1过滤器的前几个块的可视化在图4中展示;样本类别中学习到的所有10个过滤器的可视化在图5中展示。与之前的过滤器可视化不同,我们已经对conv6过滤器进行了监督,并可以识别其相应的类别,而之前的过滤器可视化是在过滤器激活中随机选择人类可解释的结果。图4显示,前面的补丁与人类的感知非常一致。例如,属于185类别(Tesla Model S)的第1847个过滤器捕捉到了这个类别的特有的尾部。图5展示了过滤器的激活高度集中在可区分的区域,十个过滤器覆盖不同的区域。这个网络可以定位这些微小的可区分区域,因为:a) 1 × 1过滤器对应原始图片的小块检测器,b)过滤器监督,c)使用聚类中心作为初始化促进了多样性。
在这里插入图片描述
图4 Stanford Cars的前几个块的可视化。我们重新映射特征图中最高激活的空间位置回到原始图片中的块。结果与人类感知高度一致,并且覆盖了不同的区域,比如头部灯(第2列),进气口(第3列),正面(第4列)和黑色条纹(最后一列)。
在这里插入图片描述
图5 Class 102学习的所有10个过滤器激活的样本可视化,通过向上采样conv6的特征图到图像分辨率,和[56]相似。这些激活在不同程度上集中并覆盖不同的区域。最好以600%查看。

图6展示了pool6特征的可视化。我们画出了某个特定类的所有测试样本的平均代表。因为我们已经学习了一系列可区分的过滤器,特征代表在一个类或者只有一些类中应该有高度响应。图6展示了我们所期望的方法工作。值得注意的是,块级别的细粒度相似性(如奥迪A4和奥迪A6)和少数常见模式(如图7所示)可能解释了图6中的可选峰值。
在这里插入图片描述
图6 Stanford Cars中Class 10, 101和151中所有测试样本的pool6的平均特征。虚线表示属于该类的区分性块检测器给出的值的范围。代表在相应的类中达到峰值。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第6张图片
图7 错误案例的可视化,过滤器在经常出现的牌照上激活。

最有趣的是conv6的前一个卷积层conv4_3通过反向传播的影响。正如3.3节所讨论,我们使用conv4_3的能量分布作为提供层初始化的提示。训练之后,我们观察到能量分布由conv6重新定义,并变得更具辨别性,如图10所示。我们将特征图中的每个空间位置映射回原始图像中的相应块,每个像素的值由覆盖该像素的最大能量块确定。从图10的第一行可知,从ImageNet预训练模型中提取的特征在圆形图案(如轮子、一些不相关的背景形状、图像中的一个人和一些纹理图案)上往往具有很高的能量,这是在[49]中发现的一般模型中常见的图案。训练之后,能量从这些模式转移到汽车的可区分区域。比如,第6列,特征图最初在车轮和前照灯处都具有高能量;训练之后,该网络已经确定,这类车型(Volkswagen Beetle)的一个识别块是车头灯,而不是车轮。因此,conv6在训练期间对他们的前一层有好处。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第7张图片
图10 Stanford Cars的conv4_3特征图的训练前和后的能量分布的可视化。我们将特征图中的每个空间位置映射回原始图像中的相应块。用我们的方法训练后,能量分布变得更有区分性。比如,第一列,高能量区从车轮移动到像正面和车顶这样的可区分区域;第2列,经过训练后,砖块图案上的能量降低了;第3列,经过训练后,该人不再处于高能量区;第7列,在训练之前,能量主要集中在空气格栅上,而训练在高能区增加了辨别性的雾光。第4.4.1节解释了更多示例。

4.4.2 CUB-200-2011

图8展示了通过我们的方法找到的可区分的块。它们包括质地和颜色鲜艳的斑点以及喙状或网状物的特殊形状。与之前未使用部分注释(如[24,30])的工作的可视化相比,我们的方法更准确地定位这些块,因为我们的块检测器在更密集和更小的块上运行,并且不需要跨类别共享。

与车相似,下一个GMP层的特征是某些类别的峰值(图9)。之前卷积特征的能量分布也得到了改善:背景区域(如分支)的高能量减少,根据不同的类别,识别区域变得更加集中或多样化(图11)。
在这里插入图片描述
图8 CUB-200-2011上块的可视化。我们没有部分注释,也能准确地定位可区分的块,比如明亮的纹理(第一张图片),色斑(第二张图片),带状物和鸟嘴(第三和第四张图片)。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第8张图片
图9 CUB-200-2011的Class 101里所有测试样本的平均pool6特征,峰值在相应的维度。
在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition_第9张图片
图11 CUB-200-2011中conv4_3训练前和训练后的特征图的能量分布。训练后,在左边的例子中,背景分支处的高能区大大缩小,能量集中在可识别的色斑处;在右边的例子中,更多的能量被分配到这个物种独特的黑白相间的翅膀和尾巴上。

5 结论

我们展示了一种方法,基于学习可判别过滤器组的CNN框架的细粒度识别方法,该方法是以端到端的方式且没有额外的注释。这是通过具有卷积层监督和非随机层初始化的非对称多流网络结构实现的。我们的方法是学习高质量的可区分块,并在刚性/非刚性细粒度数据集上获得最先进的性能。

你可能感兴趣的:(在CNN中学习一个鉴别过滤库进行细粒度识别Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition)