mhaoyang的个人博客分享 http://blog.sciencenet.cn/u/mhaoyang

博文

目标检测网络学习研究笔记(RCNN-SPPnet-Fast/Faster RCNN)

已有 3315 次阅读 2018-11-17 19:10 |系统分类:科研笔记|关键词:学者| 深度学习, 目标检测

一 、RCNN:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report (v5)

Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik 2014


原理:

训练一个CNN分类网络,固定输入图像尺寸,将最后一层FC的输出作特征向量送给SVM分类器,训练1001个分类器,多的那个为背景。

识别时采用selective search(选择性搜索)方法每张图像上得到2000多个目标候选框,然后将候选框对应的物体缩放成CNN输入图像大小,分别送到CNN以及SVM分类器,找到概率最大的候选框,然后采用非极大值抑制去掉重复的框,再使用线性回归输出目标准确位置(从selective search 得到的proposal变换为接近groundtruth的box)。

训练SVM时,采用hard negative mining方法,将IOU界于0.1-0.3之间的随机选取都作为背景,IOU大于0.5的做正例,具体CNN训练和SVM优化见论文,有很多技巧性的操作。

一张图像需要13s GPU

本方法mAP 53.7% PASCAL VOC2010

HOG based DPM 33.4% 本方法31.4% OverFeat 24.3% ILSVRC2013

二、SPPnet:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 2015


原理:

本文主要解决了输入CNN图像必须为固定尺寸的问题。

采用一个多分辨率的池化层,将特征图归一化为固定尺寸的输出,再接FC分类层。

具体做法,最后一层Conv输出例如为14x14x256,即14x14分辨率,256通道。

将这个特征图,平均划分为1x1,2x2, 3x3, 6x6大小(以2x2为例,每一块得到7x7大小的特征图,共4块),再分别对每一块施加Max pooling 从而得到1x1,2x2, 3x3, 6x6 一共50个向量,每个向量都对应256维(因为输入为256通道),因此最后得到50*256维向量,为固定尺寸。

输入图像大小变化,则划分SPP时,步长对应改变即可,在数据集上分类准确度比一般的CNN高1-2%

在进行目标检测时,原图输入SPP网络得到特征图,使用Selective search得到候选框,并将每个候选框映射到特征图上,再对每个对应区域的特征图数据使用SPP 归一化,送给SVM分类,得到概率最大的那个region,采用非极大值抑制得到准确位置,再使用回归方法调整selective search的region输出准确位置。具体训练细节,样本选择见原文。

其中为了更好的处理不同大小的目标,使得特征图尺寸最合适。本文是将输入图像进行不同尺度缩放,使候选框大小接近224x224,然后再进行后续处理。因此本文需要在几个不同尺度上进行CNN特征提取。

mAP 59.2% Pascal VOC 2007

三、 Fast RCNN

Ross Girshick 2015


原理:

核心思想与SPP没有本质差异,不过在SPPnet基础上进行了若干架构合并。

例如最后输出候选区域类别时,连同候选区域回归region一起输出(分类与位置回归进行了整合),SVM分类器舍弃不用,直接使用与FC layer良好对接的softmax分类器;训练过程相对SPPnet也更加简化,只需要一次训练(SPP需要训练CNN网络,训练SVM分类器,训练region回归网络),输入图像包含类别、位置信息,网络同时计算分类与位置回归部分。

正向推理时:输入图像得到特征图,用selective search得到2000多个候选框,然后在对应特征图区域上进行分类和位置信息的输出。与SPP不同的是,Fast RCNN没有对原图进行多个scale缩放,而是使用一种固定尺寸做输入,通过在训练样本加入大量不同尺度的缩放的目标使网络可以识别不同大小的物体。

另外,FastRCNN对最后的FC层进行了SVD分解,降低计算量,大大降低了遍历2000多个proposal的时间(0.4s降到0.1s),推理速度明显提升。

mAP 66% PASCAL VOC2010

四、 Faster RCNN

Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 2016

原理:

在Fast RCNN基础上,提出了RPN网络,将目标候选区域的生成性能进行了大幅度提升,后续处理同Fast RCNN。

RPN Region Proposal Network区域提案网络,工作时,在特征图上进行逐点搜索,每个点进行9个尺度的候选位置匹配,每个位置输出cls与reg信息,遍历结束后,通过对数万region的cls信息排序,选出cls最大的N笔数据,经过reg微调后成为正式proposal,送给Fast RCNN进行分类识别……

五、 四种网络综合分析:

经过比较RCNN,SPPnet,Fast RCNN, Faster RCNN的原理和创新,不难看出,这些网络都是继承并发展了前一种网络而来。

RCNN在这些里面是最原始,通过Selective search算法得到2000多候选区域,然后逐个区域进行CNN分类网络的识别,CNN输出可能性最高的为真实目标。RCNN的贡献在于利用了selective search而不是暴力枚举所有的区域(以200x200图像为例,包含4万个搜索位置,每个位置如果使用9个尺度搜索(参考RPN),则有36万个proposal),虽然预测一张200分辨率左右的图像就需要13s GPU时间,但是如果是暴力枚举的话,则需要39分钟GPU时间。

另外RCNN在训练SVM分类器时处理背景的方法(hard negative mining,以及挑选positive 和negtive的技巧和经验)值得借鉴,目前仍有很高实用价值。

综上所述,RCNN主要是融合了Selective search算法提升搜索水平,以及研究发现了CNN 卷积层特征可以代替传统HOG、SIFT等特征,并采用SVM分类器,结合hard negative mining等技巧对目标识别做了一次提升,做出这个成绩主要还是取决于2年前CNN分类能力的巨大进步。

SPPnet分析了RCNN速度慢的原因是由于密集使用conv层做特征提取导致大量重复计算,于是开动脑筋,从SPM(Spatial Pyramid Matching)思想中借鉴了化整为零的思路,将一个目标特征进行多尺度组合,并实现归一化,解决了输入图像尺度和比例无法保持原样的问题;此举不仅提升了特征提取的准确性,而且创造性的将region区域的筛选从image段转移到了feature map端,尽管后续也需要做大量的遍历和筛选,但是conv特征提取仅需要一次,解决了RCNN重复计算的问题,把正向推理时间降到了0.38s,是一个巨大的进步。

另外,SPPnet为了最大程度保持不同尺度的特征,在输入端将原图缩放5个不同尺度,根据selective search生成的proposal大小不同,相应选择对应的尺度做处理,提高了检测的准确性从RCNN 53% mAP(PASCAL VOC2010)提升到59%mAP( Pascal VOC 2007)

Fast RCNN在SPPnet基础上,没有提出太多新思想,主要是进行架构整合,把分类,位置回归进行了整合,使网络训练上工作量减少很多,系统架构更工整。同时把输入图像多尺度变换的做法抛弃了,采用暴力学习的方法在样本里添加目标的不同尺度图像,使网络识别具有尺度不变性。另外,在FC层采用了SVD奇异值分解算法,将FC计算量降低30%,很大程度上改进了多proposal的FC计算密集问题。

以上三种算法都是基于selective search算法从原图得到目标候选区域,此算法准确性很高,但计算量大,并且因为逻辑复杂,只能在CPU端完成,无法放到GPU。selective search在一张500x500的图像上,需要大约1-2s时间,已经大大超过了识别的时间,因此这个环节成为了目标检测的主要瓶颈。

Faster RCNN针对这个痛点,做了一个大创新,把生成region proposal的工作使用CNN网络来实现,其实RPN网络的提出也并非石破天惊的创举,而是通过分析featuremap每个点对应原图的reception field,找到了一个合适的遍历的尺度,本质上说,这种思想是selectve search的退化,退化成了原始的暴力搜索(枚举);只不过feature map毕竟大小有限,另外这个工作可以由GPU矩阵运算实现,所以速度还是超级快的,生成region proposal 只需要3ms(ZF网络5层卷积,feature map是原图的1/16,在宽与高两个方面),并且RPN生成的几千proposal里面都带有类别概率,可以排除掉大量的非目标物体,因此在后续识别的工作上也减少了无效计算。

对于featuremap上暴力搜索所有点的方法,其实可以改进。例如通过分析只搜索可疑的点,这样对于减少RPN计算量是有帮助的,同时这样一来,对于训练样本的制作也可进一步简化,不过鉴于现在速度已经很快,而且有cls的评价指标做筛选,做如此改进可能也只能提升一点点,没有太大实际意义。

以上为学习笔记和研究心得,欢迎各位同道中人提出不同意见探讨、学习。


未经许可,禁止转载




https://m.sciencenet.cn/blog-3398586-1146776.html


0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-18 23:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部