目标检测-Faster R-CNN

摘要:
简单网络目标检测速度达到17fps,在PASCALVOC上的准确率为59.9%;复杂网络达到5fps,准确率为78.8%。作者在github上给出了基于matlab和python的源代码。对于不了解RegionCNN算法的学生,请先参考这两篇文章:RCNN算法细节和FastRCNN算法详情。从RCNN到fastRCNN,再到本文中的fastRCNN,目标检测的四个基本步骤最终统一为一个深度网络框架。所有计算都在GPU中完成,无需重复,这大大提高了运行速度。

目标检测】Faster RCNN算法详解

Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.

本文是继RCNN[1]fast RCNN[2]之后,目标检测界的领军人物Ross Girshick团队在2015年的又一力作。简单网络目标检测速度达到17fps,在PASCAL VOC上准确率为59.9%;复杂网络达到5fps,准确率78.8%

作者在github上给出了基于matlabpython的源码。对Region CNN算法不了解的同学,请先参看这两篇文章:RCNN算法详解》fast RCNN算法详解》

思想

RCNNfast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。

目标检测-Faster R-CNN第1张

faster RCNN可以简单地看做区域生成网络+fast RCNN“的系统,用区域生成网络代替fast RCNN中的Selective Search方法。本篇论文着重解决了这个系统中的三个问题:
1. 如何设计区域生成网络
2. 如何训练区域生成网络
3. 如何让区域生成网络和fast RCNN网络共享特征提取网络

区域生成网络:结构

基本设想是:在提取好的特征图上,对所有可能的候选框进行判别。由于后续还有位置精修步骤,所以候选框实际比较稀疏。

目标检测-Faster R-CNN第2张

特征提取

原始特征提取(上图灰色方框)包含若干层conv+relu,直接套用ImageNet上常见的分类网络即可。本文试验了两种网络:5层的ZF[3]16层的VGG-16[4],具体结构不再赘述。
额外添加一个conv+relu层,输出51*39*256维特征(feature)。

候选区域(anchor)

特征可以看做一个尺度51*39256通道图像,对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积{128^2,256^2,512^2}×三种比例{1:1,1:2,2:1}。这些候选窗口称为anchors。下图示出51*39anchor中心,以及9anchor示例。

目标检测-Faster R-CNN第3张

在整个faster RCNN算法中,有三种尺度。
原图尺度:原始输入的大小。不受任何限制,不影响性能。
归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。

窗口分类和位置精修

分类层(cls_score)输出每一个位置上,9anchor属于前景和背景的概率;窗口回归层(bbox_pred)输出每一个位置上,9anchor对应窗口应该平移缩放的参数。
对于每一个位置来说,分类层从256维特征中输出属于前景和背景的概率;窗口回归层从256维特征中输出4个平移缩放参数。

就局部来说,这两层是全连接网络;就全局来说,由于网络在所有位置(共51*39个)的参数相同,所以实际用尺寸为1×1的卷积网络实现。

实际代码中,将51*39*9个候选位置根据得分排序,选择最高的一部分,再经过Non-Maximum Suppression获得2000个候选结果。之后才送入分类器和回归器。
所以Faster-RCNN和RCNN, Fast-RCNN一样,属于2-stage的检测算法。

区域生成网络:训练

样本

考察训练集中的每张图像:
a. 对每个标定的真值候选区域,与其重叠比例最大的anchor记为前景样本
b. a)剩余的anchor,如果其与某个标定重叠比例大于0.7,记为前景样本;如果其与任意一个标定的重叠比例都小于0.3,记为背景样本
c. a),b)剩余的anchor,弃去不用。
d. 跨越图像边界的anchor弃去不用

代价函数

同时最小化两种代价:
a. 分类误差
b. 前景样本的窗口位置偏差
具体参看fast RCNN中的分类与位置调整段落

超参数

原始特征提取网络使用ImageNet的分类样本初始化,其余新增层随机初始化。
每个mini-batch包含从一张图像中提取的256anchor,前景背景样本1:1.
60K迭代,学习率0.001,后20K迭代,学习率0.0001
momentum设置为0.9weight decay设置为0.0005[5]

共享特征

区域生成网络(RPN)和fast RCNN都需要一个原始特征提取网络(下图灰色方框)。这个网络使用ImageNet的分类库得到初始参数W0,但要如何精调参数,使其同时满足两方的需求呢?本文讲解了三种方法。

目标检测-Faster R-CNN第4张

轮流训练

a. W0开始,训练RPN。用RPN提取训练集上的候选区域
b. W0开始,用候选区域训练Fast RCNN,参数记为W
c. W1开始,训练RPN…
具体操作时,仅执行两次迭代,并在训练时冻结了部分层。论文中的实验使用此方法。
Ross GirshickICCV 15年的讲座Training R-CNNs of various velocities中所述,采用此方法没有什么根本原因,主要是因为实现问题,以及截稿日期

近似联合训练

直接在上图结构上训练。在backward计算梯度时,把提取的ROI区域当做固定值看待;在backward更新参数时,来自RPN和来自Fast RCNN的增量合并输入原始特征提取层。
此方法和前方法效果类似,但能将训练时间减少20%-25%公布的python代码中包含此方法。

联合训练

直接在上图结构上训练。但在backward计算梯度时,要考虑ROI区域的变化的影响。推导超出本文范畴,请参看15NIP论文[6]

实验

除了开篇提到的基本性能外,还有一些值得注意的结论

Selective Search方法(黑)相比,当每张图生成的候选区域从2000减少到300时,本文RPN方法(红蓝)的召回率下降不大。说明RPN方法的目的性更明确

目标检测-Faster R-CNN第5张

使用更大的Microsoft COCO[7]训练,直接在PASCAL VOC上测试,准确率提升6%。说明faster RCNN迁移性良好,没有over fitting

 目标检测-Faster R-CNN第6张

  1. Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
  2. Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
  3. M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” in European Conference on Computer Vision (ECCV), 2014.
  4. K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” in International Conference on Learning Representations (ICLR), 2015.
  5. learning rate-控制增量和梯度之间的关系;momentum-保持前次迭代的增量;weight decay-每次迭代缩小参数,相当于正则化。
  6. Jaderberg et al. “Spatial Transformer Networks”
    NIPS 2015

30+图像,80类检测库。参看http://mscoco.org/

Faster R-CNN可以简单地看做“区域生成网络RPNs + Fast R-CNN”的系统,用区域生成网络代替Fast R-CNN中的Selective Serach方法,Faster R-CNN这篇论文着重解决了这个系统中的三个问题:
1.如何设计区域生成网络
2.如何训练区域生成网络
3.如何让区域生成网络和Fast R-CNN网络共享特征提取网络

在整个Faster R-CNN算法中,有三种尺度:
1.原尺度图:原始输入的大小。不受任何限制,不影响性能
2.归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600.anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
3.网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224

Faster R-CNN框架:
Input Image -> 生成候选区域(RPN) -> 特征提取 -> 分类 -> 边框回归

Faster R-CNN算法由两大模块组成:
1.RPN候选框提取模块
2.Fast R-CNN检测模块

其中RPN是全卷积神经网络,用于提取候选框;Fast R-CNN基于RPN提取的proposal检测并识别proposal中的目标

RPN介绍:
RPN的核心思想是使用CNN卷积神经网络直接产生Regioin Proposal,使用的方法本质上就是滑动窗口(只需要在最后的卷积层上滑动一遍),因为anchor机制的边框回归可以得到多尺度多长宽比的Region Proposal
RPN网络也是全卷积网络(Fully Convolutional Network),只是再CNN上额外的增加了2个卷积层(全卷积层cls 和reg)
1.每个特征图的位置编码成一个特征向量(256d for ZF and 512d for VGG)
2.对每一个位置输出一个objectness score和regressedbounds for k个region proposal,即在每个卷积映射位置输出这个位置上多种尺度(3种)和长宽比(3种)的k个(3*3)的回归边框
RPN网络的输入可以是任意大小(但还是有着最小分辨率要求的,例如VGG是228*228)的图片,如果用VGG16进行特征提取,那么RPN网络组成形式可以表示为VGG16+RPN

因为我们的最终目标是和Fast R-CNN目标检测网络共享计算,所以假设这两个网络共享一系列卷积层,在论文的实验中
3*3的卷积核的中心点对应原图(re-scale,源代码设置re-scale为600*100上位置的点,将该点作为anchor的中心点,在原图中框出多尺度,多种长宽比的anchors,所以anchor不再conv特征图上,而在原图上)

免责声明:文章转载自《目标检测-Faster R-CNN》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇U盘启动安装 window server 2003DBA常用脚本 二、性能监控下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

图像处理之卷积---任意卷积核的快速实现

卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊、高斯模糊、锐化、Sobel、拉普拉斯、prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现。只不过由于这些算法的卷积矩阵的特殊性,一般不会直接实现它,而是通过一些优化的手段让计算量变小。但是有些情况下卷积矩阵的元素值无甚规律或者有特殊要求,无法通过常规手段优化,这个时候只...

网络剪枝和共享

十岁的小男孩   本文为终端移植的一个小章节。  目录   背景   结构剪枝   非结构剪枝 背景   网络剪枝和共享用于降低网络复杂度和解决过拟合问题。有一种早期应用的剪枝方法称为偏差权重衰减(Biased Weight Decay),其中最优脑损伤(Optimal Brain Damage)和最优脑手术(Optimal Brain Surgeon)方...

多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】

原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/例题与常用套路【入门】 前置技能 对复数以及复平面有一定的了解 对数论要求了解:逆元,原根,中国剩余定理 对分治有充足的认识 对多项式有一定的认识,并会写...

Faster R-CNN论文详解

废话不多说,上车吧,少年 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks &创新点 设计Region Proposal Networks【RPN】,利用CNN卷积操作后的特征图生成region proposals,代替了...

CNN中的卷积

1、什么是卷积:图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。其计算过程又称为滤波(filter),本质是提取图像不同频段的特征。 2、什么是卷积核:也称为滤波器filter,带着一组固定权重的神经元,通常是n*m二维的矩阵,n和m也是神经元的感受野。n*m 矩阵中存的是对感受野中数据处理的系数。一个卷积核的滤波可以用来提取特定的特...

深度学习之模型压缩

一、背景      深度学习让计算机视觉任务的性能到达了一个前所未有的高度。但,复杂模型的同时,带来了高额的存储空间、计算资源消耗,使其很难落实到各个硬件平台。      为了解决这些问题,压缩模型以最大限度地减小模型对于计算空间和时间的消耗。 二、理论基础     必要性:目前主流的网络,如VGG16,参数量1亿3千多万,占用500多MB空间,需要进行3...