深度学习目标检测算法——Faster-Rcnn

原创 2016年08月29日 19:07:40

Faster-Rcnn代码下载地址:https://github.com/ShaoqingRen/faster_rcnn

一 前言

  Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。最初的检测分类的解决方案是:Hog+SVM来实现的;深度学习中经典的解决方案是使用: SS(selective search)产生proposal,之后使用像SVM之类的classifier进行分类,得到所有可能的目标。也就是为检测开辟新天地的RCNN方法。
  
  那么几种深度学习的目标检测算法有什么区别呢?首先看下图的结构所示:
  这里写图片描述
  
(1)RCNN 解决的是,“为什么不用CNN做classification呢?” 用SS去选框,CNN提特征,SVM分类。BB盒回归。

(2)Fast-RCNN 解决的是,“为什么不一起输出bounding box和label呢?”

(3)Faster-RCNN 解决的是,“为什么还要用selective search呢?为什么不用CNN做特征提取呢?” 鉴于神经网络的强大的feature extraction能力,可以将目标检测的任务放到NN上面来做,于是出现了RPN(region proposal network)

二 为什么做Faster-Rcnn

(1)SPPnet 和 Fast R-CNN 已经减少了detection步骤的执行时间,只剩下region proposal成为瓶颈;

(2)因此提出了 Region Proposal Network(RPN) 用来提取检测区域,并且和整个检测网络共享卷积部分的特征。RPN同时训练区域的边界和objectness score(理解为是否可信存在oject);

(3)最终把RPN和Fast-RCNN合并在一起,用了“attention” mechanisms(其实就是说共享这事)。在VOC数据集上可以做到每张图只提300个proposals(Fast-RCNN用selective search是2000个)。

三 Region Proposal Network(RPN)的结构

  基本设想是:在提取好的特征图上,对所有可能的候选框进行判别。
          这里写图片描述

  RPN的网络流程图,即也是利用了SPP的映射机制,从conv5上进行滑窗来替代从原图滑窗。在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,那么这个3*3的区域卷积后可以获得一个256维的特征向量。因为这个3*3的区域上,每一个特征图上得到一个1维向量,256个特性图即可得到256维特征向量。
  
  3*3滑窗中心点位置,对应预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的regionproposal,这种映射的机制称为anchor,产生了k=9个anchor。即每个3*3区域可以产生9个region proposal。所以对于这个40*60的feature map,总共有约20000(40*60*9)个anchor,也就是预测20000个region proposal。

  后面接入到两个全连接层,即clslayer和reglayer分别用于分类和边框回归。clslayer包含2个元素,用于判别目标和非目标的估计概率。reglayer包含4个坐标元素(x,y,w,h),用于确定目标位置。cls:正样本,与真实区域重叠大于0.7,负样本,与真实区域重叠小于0.3。reg:返回区域位置。

  最后根据region proposal得分高低,选取前300个region proposal,作为Fast R-CNN的输入进行目标检测。

四 Region Proposal Network(RPN)的作用

(1) 输出proposal的位置(坐标)和score ; 

(2) 将不同scale和ratio的proposal映射为低维的feature vector ;

(3) 输出是否是前景的classification和进行位置的regression;

(4) RPN输出对于某个proposal,判断属于前景或者背景,其中主要是和ground-truth的IoU做比较,小于0.3视为negative(背景),大于0.7视为positive(前景),其它的直接抛弃不进行训练使用。

五 Region Proposal Network(RPN)的训练方式

  两种训练方式: joint training(联合训练)和alternating training (交替训练):

(1) 交替训练:首先训练RPN, 之后使用RPN产生的proposal来训练Fast-RCNN, 使用被Fast-RCNN tuned的网络初始化RPN,如此交替进行。

(2) 联合训练:首先产生region proposal,之后直接使用产生的proposal训练Faster-RCNN,在backward计算梯度时,把提取的ROI区域当做固定值看待;在backward更新参数时,来自RPN和来自Fast RCNN的增量合并输入原始特征提取层。

六 Faster-Rcnn的几种输入scale

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

七 Faster-Rcnn实验结果

(1)与Selective Search方法(黑)相比,当每张图生成的候选区域减少时,本文RPN方法(红蓝)的召回率下降不大,说明RPN方法的目的性更明确。
这里写图片描述

(2) 在不同的数据集上,平均物体检测率(mean Averaged Precision, mAP)的对比
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标注原地址http://blog.csdn.net/u010402786 举报

相关文章推荐

基于深度学习的目标检测学习总结

在计算机视觉领域,“目标检测”主要解决两个问题:图像上多个目标物在哪里(位置),是什么(类别)。 围绕这个问题,人们一般把其发展历程分为3个阶段: 1. 传统的目标检测方法 2. 以R-CNN为...

深入浅出——网络模型中Inception的作用与结构全解析

Inception-V1 Inception-V2 Inception-V3 Inception-V4

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

从GoogLeNet至Inception v3

本文叙述了CNN历史以来的发展模型,介绍了发展流程以及发展路线,并对比了各种Inception模型区别,详细介绍了Inception v3模型,读者可以轻松了解到Inception模型的发展情况。

深度学习之图像分类模型inception v2、inception v3解读

inception v2与inception v3两种模型配置。 Inception v3单模型达到了21.2%的top1错误率,多模型达到了17.3%的top1错误率

可视化Google Inception V3模型的网络结构

深度学习涉及到图像就少不了CNN模型,前面我做过几个关于图像的练习,使用的CNN网络也不够”Deeper”。我在做对象检测练习( Object Detection)时,需要用到更复杂的网络结构。本帖...

Inception V3 的 tensorflow 实现

首先来看 Inception V3 的模型架构图: 共 46 层,由 11 个 Inception Modules (模块,图中类似圆角矩形圈出的部分)构成, 如上图示,所谓的一个 In...

深度学习目标检测算法——Faster-Rcnn

Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。最初的检测分类的解决方案是:Hog+SVM来实现的;深度学习中经典的解决方案是使用: RCNN

Faster-RCNN算法精读

读论文:《Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks》   摘要:算法主要解决两个问题:...

代码阅读:Faster RCNN

Faster RCNN是目标检测经典算法,我们看看怎么运行额~

Faster-rcnn训练自己的数据库

Faster-rcnn训练自己的数据库 下载fasterrcnn https://github.com/ShaoqingRen/faster_rcnn 建议根据github上讲的下个训练好...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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