码迷,mamicode.com
首页 > 编程语言 > 详细

第三十节,目标检测算法之 Faster R-CNN算法详解

时间:2018-06-30 18:52:51      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:比较   基于   步骤   第一个   分区   sys   简单   amp   结果   

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的源码。

上一节我们介绍到Fast R-CNN网络,Fast R-CNN看似很完美了,但是Fast R-CNN中还存在着一个优点尴尬的问题,它需要先使用Selective Search提取框,这个方法比较慢,有时,检测一张图片,大部分时间不是花费在计算神经网络分类上,而是花在Selective Search提取框上!在Fast R-CNN升级版Faster R-CNN中,使用RPN(Region Proposal Network)网络取代了eSlective Search,不仅速度得到了大大提高,而且还获得了更加精确的结果。

一 Faster R-CNN思路

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

Faster R-CNN可以简单地看做“区域生成网络(RPN)+Fast RCNN“的系统,用区域生成网络代替Fast R-CNN中的Selective Search方法,网络结构如下图。本篇论文着重解决了这个系统中的三个问题: 

  •  如何设计区域生成网络 
  • 如何训练区域生成网络 
  • 如何让区域生成网络和Fast R-CNN网络共享特征提取网络

技术分享图片

步骤如下:

  • 首先向CNN网络【ZF或VGG-16】输入任意大小图片;
  • 经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图;

  • 供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制【阈值为0.7】,输出其Top-N【文中为300】得分的区域建议给RoI池化层;
  • 第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征;
  • 第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。

二 RPN详解

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

技术分享图片

1、特征提取

RPN还是需要使用一个CNN网络对原始图片提取特征。为了方便读者理解,不妨设这个前置的CNN提取的特征为51x39x256,即高为51,宽为39,通道数为256.对这个卷积特征再进行一次卷积计算,保持宽、高、通道数不变,再次得到一个51x39x256的特征。

为了方便叙述,先来定义一个“位置”的概念:对于一个51x39x256的卷积特征,称它一共有51x39个"位置"。让新的卷积特征的每一个"位置"都"负责”原图中对应位置的9种尺寸框的检测,检测的目标是判断框中是否存在一个物体,因此共用51x29x9个“框”。在Faster R-CNN原论文中,将这些框都统一称为"anchor"。

2、候选区域(anchor)

特征可以看做一个尺度51*39的256通道图像,对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积分别是128x128,256x256,512x512,每种面积又分成3种长宽比,分别是2:1,1:2,1:1 。这些候选窗口称为anchors。下图示出51*39个anchor中心,以及9种anchor示例。 

技术分享图片

对于这51x39个位置和51x39x9个anchor,下图展示了接下来每个位置的计算步骤。设k为单个位置对应的anchor的个数,此时k=9,。通过增加一个3x3滑动窗口操作以及两个卷积层完成区域建议功能,第一个卷积层将特征图每个滑窗位置编码成一个特征向量,第二个卷积层对应每个滑窗位置输出k个区域得分【表示该位置的anchor为物体的概率,这部分总输出长度为2xk(一个anchor对应两个输出:是物体的概率+不是物体的概率)】和k个回归后的区域建议【框回归,框回归的含义与Fast R-CNN中一样,一个anchor对应4个框回归参数,因此框回归部分的总输出的长度为4xk】,并对得分区域进行非极大值抑制后输出得分Top-N【文中为300】区域,告诉检测网络应该注意哪些区域,本质上实现了Selective Search、EdgeBoxes等方法的功能。

技术分享图片

Faster R-CNN使用RPN生成候选框后,剩下的网络结构和Fast R-CNN中的结构一模一样。在训练过程中,需要训练两个网络,一个是RPN网络,一个是在得到框之后使用的分类网络。通常的做法是交替训练,即在一个batch内,先训练RPN网络一次,再训练分类网络一次。

 参考文章:Faster R-CNN论文详解

    Faster RCNN解析

  【目标检测】Faster RCNN算法详解

  Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

第三十节,目标检测算法之 Faster R-CNN算法详解

标签:比较   基于   步骤   第一个   分区   sys   简单   amp   结果   

原文地址:https://www.cnblogs.com/zyly/p/9247863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!