Advertisement

细粒度图像识别文章 Picking Deep Filter Responses for Fine-grained Image Recognition 阅读笔记

阅读量:

本文探讨了在细粒度图像识别中选择深度滤波器响应的重要性,并提出了基于类内区分度的最大化方法。该方法通过优化滤波器响应能够显著提升识别性能,在实验中验证了其有效性。与现有方法相比,在相同的计算复杂度下实现了更好的分类准确率和检测率。


复制代码
    原文章: Picking Deep Filter Responses for Fine-grained Image Recognition(CVPR2016)
    
    摘要: 细粒度图像识别一直以来都是极具挑战性的任务。大多数细粒度图像识别算法都基于object和part级别的标注,来提高识别的准确率。文章提出了一种不需要任何object和part级别的标注的细粒度识别网络,并在CUB-200-2011上进行识别验证,并取得了很好的效果。

1 简介

1.1 背景

  • 细粒度图像识别是指在大类中若干子类别的精细区分(如区分不同鸟类),其涵盖范围介于基础级分类(常规图像分类)与个体实例识别(如人脸识别)之间。普通人在面对基础级分类任务时通常能够准确识别相关类别对象,然而要达到个体实例级别的精确区分能力,则需要专业知识的支持;没有经过专业训练的人则难以完成这一任务。
  • 实现细粒度图像识别的技术通常依赖于带object或part级别的标注信息,在训练与测试阶段都需要这些标记数据作为网络学习的关键指导信息。然而,在实际应用中仍有一些创新性的工作能够在测试阶段不额外使用标注信息,在训练阶段仍需大量带标注的数据来构建高效的模型;这些方法在大规模图像处理时往往面临性能瓶颈。因此研究者们正致力于开发无需标注数据支持的新型网络架构。

1.2 文章贡献

  • 作者做出了两大贡献。第一个是开发出了自动化的人体分割技术 ,其中该系统在以下两方面取得了显著进展:

  • 第一 ,提出了一种新颖的方法用于检测学习初始化。研究者首先采用selective search方法从原始图像中提取若干区域,并将这些区域输入到预训练好的VGG-M网络中进行特征提取。观察conv4层的空间位置特征后发现某些channel(channel)对特定图案有显著响应;然而这些通道的空间响应却相当混乱;这表明这些channel对于我们的目标任务缺乏有效性(如图1所示)。其关键在于巧妙地选择了既能反映目标特征又具有一致性的深度滤波器。

image.png-243.3kB
复制代码
* **第二** ,作者“learn a set of detectors via iteratively per-category positive sample mining and regularized part model retraining”(翻译不来……)。作者从每个类别挖掘正样本,并对每个正样本引进正则项,以考虑正样本的异同。学习之后的检测器可以发现有区别的和一致的patch,这对基于part的识别有帮助。
  • 第二大贡献,是采用了新的适用于细粒度图像识别的特征提取方法 。传统的特征表达都使用CNN来实现,但CNN来提取不可避免地包含了大量背景信息,而且一些姿势变化和部分重叠都会影响到检测和识别。为了解决这个问题,作者将deep filter响应视为用于定位的描述符,将其通过Spatially Weighted Fisher Vector (SWFV-CNN) 编码。通过SWFV-CNN,对识别很重要的部分会被强调,这样就可以实现让网络有条件地选择那些需要的描述符。

1.3 框架预览

  • 整个框架结构如下。该框架的实现总共分两步:

  • 第一步是筛选出那些在特定图像中表现出高度一致性和显著响应的深度滤镜集合作为弱检测器。通过弱检测器处理后可以获得大量候选区域,在这些候选区域中精心挑选语义高度相似的正样本集并对其进行判别式检测器的训练。在这一过程中,我们采用迭代交替的方法进行正样本选择与分类器训练,在每一步骤中均采用交叉验证技术以防止模型过拟合。最终获得的判别式检测器能够识别出若干关键特征区域。

  • 第二步是通过Saliency-aware Filtering Via(SWFV)方法筛选出有重要价值的卷积神经网络(CNN)滤镜。在此过程中,我们采用了Part Saliency Map(PSM)这一工具来辅助判断。其作用机制在于评估每个像素对前景区域的归属概率有多大。

image.png-310.5kB

2 相关工作

该部分分别从Part Localization和Feature Representation两个方面阐述了先前的研究工作。如需更多信息,请参考原文。

3 学习Part Detectors

复制代码
    本章开始出现了大量新奇的方法,因此可能有较多不易理解的地方,博主也没能做到完全理解。在此就将我所看懂的说一下,希望能够对大家有帮助,如果看不懂,建议对着此博客看原文。

本章阐述了如何构建具备自动识别能力的discriminative detectors以实现object/part定位任务。作者提出的方法体系包含三个主要步骤:建立正样本集合、对检测器进行正则化训练以及通过筛选确定最佳检测器。

3.1 Picking Filters:初始化正样本

  • 假设将一组输入图片剪成一堆同尺寸的patch,如何在没有标签 的情况下找出那些含有前景关键信息的patch?这种无监督聚类的任务,一般都是通过k-means或template matching实现,但它们难以返回很好的cluster,而且一个cluster里面的patch也不一定在视觉上相似。
  • 为了解决上面的问题,作者提出了一种挑选策略,它是基于CNN网络中滤波器的响应来选择那些一致和有区别的patch的。关键点在于CNN不同层对不同特定的图案敏感 :例如浅层的通常对边缘连接、拐角等有相应,而深层则对一些特定图案有响应,这些“特定图案”很可能就包含鸟类嘴、躯干、脚等信息。为了寻找那些对关键信息有响应的滤波器,作者用以下方法进行挑选:

首先假设你拥有一批数百至数千张鸟类图像样本对每张图像执行selective search算法生成多个区域建议(regions)。然后从这些区域中随机抽取约一百万张样本作为训练数据集。
对于每个提取的patch均被 resize 为 107×107 的尺寸并送入深度网络进行特征提取由于网络内部包含卷积池化等操作最终在第四个卷积层上得到一个高度和宽度均为1x1但有64个输出通道的结果这意味着每个patch会输出64个特征向量。
为了进一步优化特征提取过程我们将所有这些图像在各个通道上的响应值进行排序并选取响应最大的前10,000个值这些值对应着不同通道中的最大激活程度。
通过计算发现 在这64个通道中 每个通道被前10,000次高响应所覆盖的次数各不相同 研究发现 高频响应主要集中在少数几个关键通道上 占据了总响应量的大头。
基于此 本研究将具有最高响应值的前5%的通道定义为'distinctive filters' 并采用这些具有强特征识别能力的关键路径来构建模型。
具体而言 我们从这些distinctive filters中选取每次high response对应的最大激活位置作为正样本候选并从中进一步筛选出表现最突出的部分作为最终训练数据集。

image.png-50kB

现在回想一下上面的步骤时会发现其实还是有一定道理的。考虑一下在众多Patch中前景(也就是鸟)头部、眼睛、躯干以及四肢等部位的图案基本上是相同的模式而背景则相对混乱一些需要注意的是虽然包含前景的画面数量稍显不足但是不含前景的画面中图案一致的部分却极为稀少而前景部分所对应的图案也基本呈现出高度一致性经过CNN输出层处理若有的滤波器通道已经被训练成对鸟类局部区域有较强的响应那么多次运行多个Patch(其中大部分包含鸟类部分)必然会使得某些通道表现出特别高的响应次数这些通道自然也就成为了我们需要的独特特征滤波器高响应次数相对较少且分布较为集中的通道表明CNN对于一个单一Patch的整体响应具有很强的空间稀疏性一个Patch通常只会激活两三个通道并且其响应值较高在反观背景由于不同图片中的背景不尽相同有的是树上有的是天空所以那些响应次数不高且分布较为均匀的通道很可能都是对背景杂乱无章事物产生一定反应的滤波器
扯了这么多最后总结一下这一步成功地筛选出了一批正样本(即包含前景的Patch)并顺便为你挑选了一些具有重要特征的滤波器通道称之为独特特征滤波器

3.2 正则化的检测器训练

  • 在之前的步骤中所获得的正样本质量仍有待提升,在图4中依然存在较多冗余或无关的信息。为了进一步提升检测正样本的质量 作者通过利用SVM分类器进行优化来学习对应的检测器 这种方法由于负样本的数量远大于正样本 而采用了基于标准硬负采样的方法 从而实现了快速收敛的过程
image.png-405.5kB
  • 作者用迭代的方式训练SVM。在每轮迭代中,前10%的由上一轮检测器生成的patch作为正样本(按照这个意思可能其他的都是负样本了)。一直执行这个训练可能会出现对初始样本过拟合的问题。作者选择的解决方案是将训练集随机分成两组,一个作为训练集,一个作为验证集,并且在收敛时互相交换。
  • 除此之外,还有一个问题就是:分类效果最好的检测器总是锁定几个容易检测的子类,而不能从其他大多数子类中发现它们对应的正样本。为了解决这个问题,作者在每轮训练中都使用正则化损失来挖掘每个目录中的正样本。具体的正则化过程就不详述了(博主也没看明白),总之正则化项突出了得分高的patch,而屏蔽得分低的patch。正则化项有两个好处:其一是使检测器发现更多不同的正样本 ,其二是避免了在一个不可靠的正样本上过拟合,转而关注更可靠的正样本 (focusing on the more reliable positives)。该部分的完整算法见下图:
image.png-59.9kB

3.3 检测器选择

  • 3.2 的算法会生成几十个检测器(其数量为何如此之多?),但并不保证每个都能在所有情况下准确识别图像。该作者将带标签的训练样本划分为训练集与验证集,并基于最高评分区域执行分类操作。“Classification is performed based on the top scored region.” 最后筛选出并去除那些识别率低于40%的检测器(不足10个)。

3.4 小结

下面将详细阐述图案检测器的训练全过程,并帮助理清思路

  • 首先,在CNN架构中识别出那些对特定图案具有显著特征的通道滤波器,并将其命名为distinctive filters;随后通过分析这些distinctive filters的响应强度来选择响应最强的前100个patch作为初始正样本;
  • 接着将这些初始正样本与SVM算法相结合来训练检测器;在这一过程中引入正则化项并采用hard negative mining策略以增强正样本的多样性及稳定性;最终生成了多个检测器;
  • 通过带标签的数据集对这些检测器进行测试并筛选出表现最优的前几个检测器。

4 Bag of Parts Image Representation

获得上一章生成的检测器后,
即可利用这些检测器从图片中识别出相应的部件。
一种常用的部件表达方式是提取上一层全连接层的特征,
然而,在细粒度识别中这种方法有两个不足:
引入了过量的背景信息,
可能导致关键细节丢失。
随后作者提出了一种新的解决方案,
即通过计算part saliency map并采用SWFV池化CNN特征来提取关键识别信息。

5 实验

image.png-97kB
image.png-54.3kB

全部评论 (0)

还没有任何评论哟~