您的位置:首页 > 大数据 > 人工智能

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

2016-12-06 18:33 387 查看
这是2016年发表在CVPR中的一篇有关细粒度分类的文章

1. 引入:

1).细粒度分类的挑战性:微小的视觉差异可能会被其他的因素(如视角、角度等)遮掩。

2).最近有一些CNN-SVM框架的细粒度分类研究工作

思路:利用部件(parts)训练CNN网络,将输入图像中所有部件的特征连接起来输入SVM,得到最终的分类结果。

缺点:训练和测试是一个多阶段的过程。

3).作者提出了两层网络模型:

检测子网络(detection sub-network):检测图像中微小部件

识别子网络(recognition sub-network):提取部件特征,组合起来用以分类

4).作者将以上两个网络集成到了一个框架内

2. 方法

2.1部件检测子网络(Part Detection Sub-network)

2.1.1产生微小部件的区域建议

作者提出了一种基于几何形状的部件区域产生方法:

注意:这是一种标记有bounding box以及部件位置的方法

1).计算目标所在bounding box的方向梯度直方图(HOG),代表其粗糙形状

2).基于HOG特征,利用K近邻,从训练集中挑选出K个最近的邻居(K张图片)

3).标记


m是每个目标的部件数(训练图像标记有部件)

4).产生区域建议:

1.强先验:根据k个最近邻居的部件类别标签、部件几何限制

K个图像 位置得到给定图像的第i个部件的区域建议位置

每个部件有K个区域建议,所有的部件区域建议:N=k*m

2.弱先验;

仅根据部件几何限制

K个图像 产生N=k*m个区域建议



相比于selective search,这种方法利用了先验知识,且产生的区域建议比selective search少一个数量级(eg.200vs2000)

2.1.2基于Faster rcnn的部件检测

以Fater rcnn作为检测网络

每个目标有m个部件,输出每个部件标签(m+1种标签,因为包括背景),每个输出都包括一个回归的bounding box以及置信度得分

对于每一个部件,只有最高置信度得分的部件的bounding box会被选择。并且设置了一个阈值,去除最高得分低于阈值的部件,这是因为有些部件在给定图像中可能并不可见。

2.2部件特征提取以及分类

作者添加了部件区域pooling层(如下图所示的Semantic part ROI pooling),部件级别的全连接层(下图中pfc),以及一个全连接层(cfc)

1).从各个部件pooling特征后按照部件的顺序(如头部、腹部、背部等顺序)进行重新组织。

2).接下来连接一个部件级别的全连接层,主要用于提取部件的特征。

作者是第一个提出在CNN网络的中间层添加部件级别的全连接层,从而提取部件的特征

3).再连接一个全连接层

先前大多数工作利用CNN提取出部件特征后,输入到SVM中。作者提出用一个全连接层代替SVM。相比于CNN-SVM,作者的网络可以从头到尾(end-to-end)的训练及测试。

2.3将两个子网络集成到一个框架

两个子网络共享部分卷积层

总体来讲,这篇文章对于一个给定图像,首先基于Hog,利用KNN检索出最相近的K张图片,根据这K张图片的先验知识,估计出给定图像的部件位置。注意,本文所用的训练数据集是标记有bounding box以及部件位置信息的。估计出图像部件位置后,输入到fast rcnn中检测出更准确的部件位置,以及部件标签。然后将部件提取得到的特征输入到网络中,进行分类。

这篇文章,个人认为最大的缺陷是需要有标签的数据,包括标记的目标bounding box,部件的位置,以及标签。这种训练集需要大量的人工标记,而且本文所提的KNN的区域建议,也是基于很多标记信息,现实中,很难有标记如此详细的训练数据,这为广泛性的应用带来了难度。

整体网络结构如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐