论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization

原创 2016年10月12日 15:31:01

这篇文章是来自悉尼科技大学Shaoli Huang等人的工作,与前两篇文章的出发点类似,本篇文章也是在Parts上寻找Fine-Grained的线索,但与前两篇文章相比,在框架中人工的参与更少。同其它Fine-Grained分类任务相似,这篇文章也采用两步走,即object parts localization (where pathway)classification (what pathway),值得一提的是在part定位过程中,利用了FCN(Fully Convolutional Network)。
论文提出的新方法是既可以得到不错的分类准确率,也能提供一个可以解释得了的模型,并且效率也更加高,非常适用于实际应用中。

下面是方法提出的网络结构的示意图:

这里写图片描述

接下来会介绍该方法的实现细节。

Part-Stacked CNN

论文将提出的新的CNN结构命名为Part-Stacked CNN,这个网络结构分为两个子网络,分别是定位网络(Localization Network)和分类网络(Classification Network)。采用的是Caffe框架和经典的AlexNet网络结构作为整个网络的基本结构。

作者提出与基于部件的R-CNN相比,一个最大不同点是,从定位网络到分类网络的一个信息转换运算,也就是使用定位网络中得到的部件位置进行分类的操作,是直接在数据的前向传播过程中直接使用在第五个卷积层输出的特征图上(A unique design in our architecture is that the message transferring operation from the localization network to the classification network, i.e. using detected part locations to perform part-based classification, is conducted directly on the conv5 output feature maps within the process of data forwarding.)。

1. Localization Network

定位网络的整体结构如下图所示:

这里写图片描述

定位网络主要目的是检测到物体部件的位置,论文是使用了最简单的部件标注–每个部件中心位置标注的二维关键点。这里假设M表示数据集中物体部件标签的数量。然后采用全卷积网络(fully convolutional network,FCN)来生成密集的特征图输出。这里使用FCN的理由给出了三点:

1)FCN得到的特征图输出可以直接作为部件定位的结果用于分类网络;

2)FCN可以同时获取多个物件部件的结果;

3)FCN在学习和预测阶段都非常高效。

1.1 Learning阶段

由上图可以知道,定位网络最终的输出是一个带有M个位置点的h×w的特征图。定位网络的前5层跟经典的AlexNet网络结构一样,然后在第五个卷积层后面加一个卷积核大小是1×1,输出是512的第六个卷积层 conv6,接着就是卷积核大小一样,输出是 M+1conv7来实现分类,这里M+1是加上背景。

这里一个实际问题是需要决定FCN的输入图片尺寸以及网络的深度。一般来说,越深的层可以生成更好的定位结果,但是它们的感受野(receptive fields)大小也要大过前面的网络层,比如,CaffeNet(也就是指AlexNet)中,conv5 的感受野是 163×163,而输入图片的尺寸是227×227,这个感受野的尺寸会太大不能模型化一个物体的部件。因此,论文提出了一个简单的方法——上采样输入图片,这样后面深层的感受野是固定尺寸的,那么相对于变大的输入图片就变得没有那么大了。

因此,定位网络的输入图片是一个使用bounding-box裁剪的,将尺寸调整成454×454大小的彩色图片。

1.2 Inference 阶段

学习阶段通过FCN得到的是输出结果是M+1个尺寸为27×27的特定部位的热度图( (M +1) part-specific heat maps in the
size of 27 × 27),接着,会对这个输出结果使用一个高斯核进行高斯滤波来去噪,最后得到最终的输出结果是带有M个位置点的h×w的特征图。

在这个阶段,会设定一个阈值,用来判断一张图片中是否含有某个部件,这里使用FCN层的conv7softmax函数输出结果与高斯核的计算结果来与设定的阈值进行判断,如果低于阈值,则认为这张图片是缺乏这个部件。

2. Classification network

分类网络使用两个输入流结构的方法,分别是Part StreamObject Stream,然后再使用一个包含三个全连接层的子网络作为一个物体分类器。

2.1 Part Stream

Part Stream如作者所说,是其提出的网络PS-CNN结构的核心。在之前的如R-CNN论文中是训练一组部件CNNs,每个CNN专门训练一个部件,这个方法对于拥有多个部件的数据库来说就会需要耗费很多时间和非常大的内存使用量。

因此,论文采用两个策略来提高效率:

1)模型参数的共享。也就是对于前面5个卷积层的参数在所有物体部件中是共享的,这可以减少参数从而降低过拟合的风险;

2)计算量共享策略。这个目的是在卷积层阶段的所有部件的特征提取过程只需要进行一次。

在特征提取完毕后,每个部件都会分别通过一个part crop layer进行裁剪从而得到一个合适尺寸大小的feature map进入后面的三个全连接层,这里是因为其输入是一个454 × 454尺寸大小,而在Object Stream中输入图片只是227 × 227,所以需要调整尺寸大小。

这里的part crop layer的裁剪是提取每个检测到的部件位置的领域,论文中是提取一个6×6大小的领域,从原来大小为27×27conv5 的特征图中提取。

2.2 Object Stream

这一步主要是利用已有的bounding-box的标签来提取物体级别的语义信息,使用的也是经典的AlexNet,然后使用pool 5层的输出–6×6大小的特征图。

2.3 Dimension reduction and fully connected layers.

完成上述两个输入流的网络,后面接着一个3个全连接层的深度神经网络(DNN),这里作为第一个全连接层的fc6就相当于一个部件连接层,因为其输入都是来自Part StreamObject Stream的输出结果,但是这里所需要的内存会比原本的AlexNet网络中的fc6要多出M+1倍。

为了降低内存的使用,这里在Part Stream增加一个卷积核大小为1×1的卷积层 conv5_1,将原本输出是256降到32个,但是这里没有使用标准的PCA方法,因为效果会很差,作者是训练一个辅助的CNN来初始化这个增加的卷积层的权值。

小结

论文最后是通过4个指标来判断其方法的性能的,分别是定位准确率、分类准确率、效率以及模型的可解释性。通过实验结果可以看到,Part_Stacked CNN方法的性能是要优于当前大部分的方法,而且满足了实时性,非常适合实际的应用。

最近看的3篇论文,包括这篇论文在内,关注的重点都是Part,也就是部件或者说部位,并且都是希望尽可能减少人工的参与,利用实验用的数据库已有的部件标注甚至不需要标注,只需要类标签,方法都是主要分为两步,定位或者检测网络,以及分类网络,同时还将这两个网络都整合成在一起,可以同时训练,而不是分别单独训练几个子网络,最后联合特征,使用SVM来进行分类,而且三个方法的性能都比当前绝大数方法要有所提高。

这说明他们的思路也是正确的,自动检测和定位部件,然后用到分类中,所有部件的训练都整合在一个大网络中,这样分类误差可以在反向传播中传回给所有部件,并让它们同时更新权值。

看起来,目前在精确分类方面,利用部位是一个趋势,并且很多工作的结果也表明这个思路是正确的,的确可以取得不错的性能,同时,也应该向无监督学习靠近,即尽可能自动检测部件,而不需要过多的部件标注。不过,现在这方面的工作也挺多了,要想到一个更好的突破点,的确挺难啊,还是要多看几篇论文,看看能否得到更多的想法吧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Fine-Grained Classification之车型识别

先说这篇文章,Monza: Image Classification of Vehicle Make and ModelUsing Convolutional Neural Networks and ...

车型识别“A Large-Scale Car Dataset for Fine-Grained Categorization and Verification”

论文的目标如题,对车型进行精细分类,作者构建了一个比较大型的车辆数据库CompCars,涵盖不同视角,包含车辆内部及外部特征,由监控视频获得的数据和从网络上下载的数据组成。文章做了车辆型号识别,认证和...

SPDA-CNN:Unifying Semantic Part Detectiojn and Abstraction for Fine-grained Recognition

这是2016年发表在CVPR中的一篇有关细粒度分类的文章 1. 引入: 1).细粒度分类的挑战性:微小的视觉差异可能会被其他的因素(如视角、角度等)遮掩。 2).最近有一些CNN-SVM框...

论文阅读(3)--SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition

这篇文章是来自罗格斯大学的Han Zhang等人的工作。由题目可知与上一篇文章一样,本文的作者也关注到了富有语义的局部(利用Part,Part,Part,重要事情强调三遍),作者不满足于CUB-201...
  • lc013
  • lc013
  • 2016年10月10日 21:37
  • 973

SPDA-CNN:Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition

SPDA-CNN:联合语义检测和提取用以细粒度识别 最近在做细粒度分类和研读CVPR2016结果,看到这篇文章。做个笔记,方便自己回顾和与大家讨论。 1.摘要及引言多数的卷积神经网络缺少能够mode...

论文阅读:CVPR2016 Paper list

CVPR2016 accepted paper list
  • xizero00
  • xizero00
  • 2016年05月12日 19:04
  • 28110

SSD算法 模板 匹配

SSD算法         误差平方和算法(Sum of Squared Differences,简称SSD算法),也叫差方和算法。实际上,SSD算法与SAD算法如出一辙,只是其相似度测量公式有...

图像识别中的深度学习

图像识别中的深度学习 2015年8月12日 12:39 阅读 2172 来源:《中国计算机学会通讯》第8期《专题》 作者:王晓刚 深度学习发展历史 深度学习是近十年来人工智能领域...

论文阅读笔记 SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition

这篇论文来自美国罗格斯大学的 Han Zhang, CVPR2016 1. 简介          相比于一般的目标识别,细粒度识别具有更大的挑战性。其原因是由于姿态与视角的不同,不同图像之间微小...

A Codebook-Free and Annotation-Free Approach for Fine-Grained Image Categorization(精读)

《A Codebook-Free and Annotation-Free Approach for Fine-Grained Image Categorization》文献阅读笔记...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization
举报原因:
原因补充:

(最多只允许输入30个字)