cnn 回归 坐标 特征图_Object Detection之R-CNN,Fast R-CNN,Faster R-CNN

本文详细介绍了基于深度学习的目标检测算法R-CNN、Fast R-CNN和Faster R-CNN。R-CNN利用Selective Search提取候选框,结合CNN和SVM进行分类与回归;Fast R-CNN引入RoI Pooling,提高特征提取效率;Faster R-CNN提出Region Proposal Network(RPN)实现候选框的快速生成,与检测网络共享卷积层,进一步提升速度和精度。
摘要由CSDN通过智能技术生成

6ffd7d5e42f7916186fa324516ecf79c.png

一、论文题目来源

《Rich feature hierarchies for accurate oject detection and semantic segmentation》​arxiv.org 《Fast R-CNN》​arxiv.org 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》​arxiv.org

二、R-CNN 2014

Object detection 就是要在图像中精准地找到目标的位置同时给出目标的类别。

R-CNN Fast R-CNN Faster R-CNN 的目标检测思路都是提取候选框 再对候选框进行CNN的分类网络运算,再对候选框进行回归,实现目标检测的目的。

e03349b9997a6664fbad19765d1c05f2.png

这篇文章的算法流程如图所示:首先在输入图片中提取2000个候选框,再将这2000候选框拉伸后放入CNN网络中进行特征提取,根据提取到的特征图用SVM进行分类,达到识别物体类别的目的,再对候选框进行回归,使目标提取更精确。

因此,R-CNN算法主要包括三部分:Selective Search 进行候选框提取,CNN网络进行特征提取,SVM算法进行分类。

1.Selective Search

输入: 一张图片

输出:候选的目标位置集合L

算法:

Step1: 利用切分方法得到候选的区域集合

Step2: 初始化相似集合S = ϕ

Step3: foreach 遍历邻居区域对do

Step4: 计算相似度

Step5: S = S,

Step6: while S not=ϕ do

Step7: 从S中得到最大的相似度s=max(S)

Step8: 合并对应的区域

Step9: 移除对应的所有相似度:S = Ss

Step10: 移除对应的所有相似度:S = Ss()

Step11:: 计算对应的相似度集合:

Step12: S = S

Step13: R = R

Step14: L = R中所有区域对应的边框

2.特征抽取

R-CNN 抽取了一个 4096 维的特征向量,采用的是 Alexnet。需要注意的是 Alextnet 的输入图像大小是 227x227,但提取的候选框大小不一致,这篇文章在将候选框输入CNN前其缩放,缩放分为两种:各向同性缩放和各向异性缩放。

(1)各向同性缩放:图片的长款缩放相同的倍数,在把region proposal变成长方形时使用灰色填充或使用原始像素填充。

(2)各向异性缩放:不管图片是否扭曲,长宽缩放的比例可能不一样,直接将

长宽缩放到227*227。

3.SVM分类

测试时将带检测图像提取出约2000个候选区域,将每个区域都进行缩放,然后将缩放后的图片输入CNN进行特征提取,对CNN输出的特征用SVM进行打分。然后对打分好的区域使用NMS即非极大值抑制(Non-maximum Suppression)

NMS原理:对于Bounding Box的列表B及其对应的置信度S,采用下面的计算方式.选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的IoU大于阈值的框从B中移除.重复这个过程,直到B为空。

假设有六个框定位为一辆车,先按照类别分类器的分类概率进行从低到高排序,假设分别为A,B,C,D,E,F.那属于车辆的检测框概率最高的为F。将其从B集合中移除到M中,假设阈值设为0.5(一般情况下设为0.3-0,5),除F外其余五个候选框有B,D与F的IoU超过0.5,则移除B,D候选框(抑制)。剩下的A,C,E候选框中仍选择概率最大的例如A,若C,E与A的IoU超过阈值则抛弃,重复此过程,直到列表B为空,选出所有被保留的候选框。

在CNN的fine-tune阶段和训练SVM分类器阶段使用的positive和negetive example 是不一样的规则。

R-CNN采取迁移学习,提取在ILSVRC 2012中的模型和权重,然后在VOC上进行fine-tune. R-CNN将候选区域与Ground True中的box标签进行比较,若IoU>0.5则认为该候选区域为Positive,否则为negetive。

而在分类器中,R-CNN选择的threshold为0.3,一个区域与Ground Trueth 的IoU<0.3则认为为negetive,Ground Truth 认为是Positive,介于0.3—1之间的则抛弃。

4、结果

R-CNN在PASCAL-VOC 2010的表现

dbcce2c4cbd309a4c707af3f69037d01.png

上面四行是与当时强劲的object detection的算法进行了比较。

5、框架精简

AlexNet 有 7 层,那么那些层是关键指标呢?哪些层可有可无呢?

fc6 与 pool5 构成全连接,为了计算 feature 它会乘以一个 4096x9216 的权重矩阵,然后在与一组 bias 相加,所以它有 3700 多万的参数。

fc7 是最后一层,它的权重矩阵是 4096x4096,它的参数有 1678 万多的参数。

但经过作者在 PASCAL 上不做 fine-tune 处理,直接测试,可以发现 fc7 的意义没有 fc6 大,甚至移除它之后,对于 mAP 结果指标没有影响。

移除 fc7 就表示可以减少将近 1800 万个参数。

但同时移除 fc6 和 fc7 并没有多大的损失。

所以,神经网络最神奇的力量来自卷积层,而不是全连接层。

在有fine-tune的情况下,结果证明,fine-tune 后 fc6 与 fc7 提升的效果明显。结果如下图。

7736f1f423c111e4e92a629b395bccbc.png

三、Fast R-CNN 2015

2ff0040498ad874d1d9dc278ee0fb8e9.png
  1. RoI池化层

RoI Pooling可以说是SPP(spatial pyramid pooling)的简化版。

简单说一下SPPNet

bb9221cee00b8671c233f303c72d591a.png

SPPNet主要有两处亮点 1)他解决了深度卷积网络的输入必须是固定尺寸的问题。

2)在目标检测领域提高特征提取的速度

一般卷积神经网络的全连接层在设计的时候要求其输入必须要固定尺寸,那往前推就要求卷积层的输入也是固定尺寸。而SPPNet 则在全连接层之前设计了spatial pyramid pooling(空间金字塔池化) 论文中举例:把卷积操作之后的特征图(feature maps),以不同大小的块(池化框)来提取特征,分别是4 * 4,2 * 2,1 * 1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块(Spatial Bins),这样一来,无论输入图片的尺寸大小为多少,都可以得到相同维数得特征向量送入全连接层

第二点SPPNet 最开始也是使用选择性搜索选出候选区域,但并不像R-CNN一样对每个候选区域都进行特征提取(这样会消耗大量得时间),他是只将一张图片送入卷积层,得到feature map后将之前得候选区域映射到feature map上,在送入空间金字塔池化,得到相同大小得特征向量,在用分类网络进行分类,这样就可以节省每个候选区域送入卷积网络进行特征提取得时间。至于具体怎么映射的,没来得及看,下回分解吧就。

Fast R-CNN中的ROI pooling去掉了SPP的多尺度池化,直接用MxN的网格,将每个候选区域均匀分成M×N块,对每个块进行max pooling。从而将特征图上大小不一的候选区域转变为大小统一的特征向量,送入下一层。

2、特征提取

Fast R-CNN在特征提取上可以说很大程度借鉴了SPPnet,首先将图片用选择搜索算法(selective search)得到2000个候选区域(region proposals)的坐标信息。另一方面,直接将图片归一化到CNN需要的格式,整张图片送入CNN(本文选择的网络是VGG),将第五层的普通池化层替换为RoI池化层,图片然后经过5层卷积操作后,得到一张特征图(feature maps),开始得到的坐标信息通过一定的映射关系转换为对应特征图的坐标,截取对应的候选区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。

06e1f52148ba5aa7815be05d2870e80d.png

3、结果

3.1—mAP

1e5d11b1bba29da706f9976e66fdae53.png

e10621c6625f24dbb4531092411be437.png

4068ad8ac592529827cb3a1c56a6cab2.png


3.2—速度

993f94223b71b5a253169c6f0ace18a2.png

四、Faster R-CNN 2016

继Fast R-CNN后,新的目标检测算法就是著名的Faster R-CNN,先展示Faster R-CNN 的网络结构,与Fast R-CNN 不同的是 ,它没有先使用选择性搜索选出候选框,作者认为selective search会导致Fast R-CNN 耗时较长,因此,本篇论文提出了Region Proposal Networks(RPN)来提取候选框。

ded1fa9506821b2efd133780e6cb7d9a.png

1、RPN

RPN可以理解为一种全卷积网络,输入是任意大小的Feature map(经过共享卷积网络)目标是和Fast R-CNN 共享目标检测的网络(Fast R-CNN的目标检测网络是VGG16)输出是一系列的矩形候选框。RPN后将链接两个全连接层,原文将其称为sibiling full-connected layers,一个用于分类,一个用于回归。

2、Anchor

文章提出anchor的概念,anchors可以理解为一些预设大小的框,anchors的种类用k表示,在原文中k=9,由3种面积(,)和三种长宽比组成(1:1,1:2,2:1).假设CNN得到的feature map的大小为w*h,则生成的anchor数量为9*w*h,即每个像素点都生成9个anchor。假设原图的大小为W*H,则有W=S*w, H=S*h, S为之前所有层stride size 相乘,所以feature map上的点乘以S即为anchors的原点位置,得到所有框的原点位置以及大小就可以得到原图上的anchors区域了。

3、RPN的输出和anchor的关系

d327844b371fc6477695dc542444595e.png

假设在conv5 feature map中每个点上有k个anchor(原文如上k=9),而每个anchor要分foreground和background,所以每个点由256d feature转化为cls=2k scores;而每个anchor都有[x, y, w, h]对应4个偏移量,所以reg=4k coordinates(scores和coordinates为RPN的最终输出)

4、RPN的训练

每个mini-batch 选择256个anchors(128个positive和128个negetive)

Positive 是 anchor和ground truth 的IoU最大的作为正样本,IoU<0.3作为负样本。

本文用四步使RPN 网络和Fast R-CNN目标检测网络公用一个网络。第一步,先训练一个RPN 网络,这个网络使用在ImageNet 上预训练过的网络来初始化。第二部,使用Fast R-CNN 和第一步中RPN 得到的候选框来训练一个检测网络,此时两个网络还没有实现公用卷积层。第三步将检测网络初始化RPN网络,并且不改变共享卷积层,只改变RPN特有的层。第四步,固定共享卷积层不变,改变Fast R-CNN 特有的层。

5、结果

483af77661d2e0b8c92a15e58f57d6e1.png

b52a43eb997248f0b38b716bf49abfd1.png

667c7d44f57b374342642f5ddd940782.png

771e045c9e89f0d612d428874c1a2391.png

73e86b042c1b18e51b02b240c6d3c6a8.png

e696517f7059f837d055132dc7d6dee4.png

下面是anchors的种类选择对精确度的影响:

e92757f9a5ae47cf1c1e3ae27d165c41.png

五、总结

Fast R-CNN 的创新点就在于不在原图上提取候选框,而是在卷积网络得到的feature map中,节省了对每个候选框都进行特征提取的时间,另外,提出ROI pooling,使得无论候选框的尺寸如何,都可以送入全连接层进行运算。Faster R-CNN 则是在此基础上,抛弃了候选框提取算法Selective Search,提出RPN,和检测网络共用卷积层,节省运算时间,同时提出anchor的概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值