【目标检测】Faster R-CNN

本文先简单介绍一下:R-CNN、SSP、Fast R-CNN算法的流程,然后再从网络结构、训练过程、实现几个方面来介绍Faster R-CNN。

相关知识:

(部分图片来自目标检测之RCNN,SPP-NET,Fast-RCNN,Faster-RCNN

1、R-CNN

R-CNN网络其实就是一个分类器,对提取到的候选区域(region proposal)进行分类,它的准确度主要依赖于候选区域算法。

在这里插入图片描述

2、SSP

流程:
(1)在原始图像上用Selective Search算法得到region proposals
(2)将整张图片前馈神经网络然后得到conv feature maps
(3)将region proposals映射到conv feature maps得到多个proposal feature maps
(4)将每个proposal feature maps分别输入SSP层 -> fc层,最后进行分类(SVM)和回归

在这里插入图片描述

每个候选区域对应的feature map的大小是不同的,但SSP网络中有全连接层,全连接层的输入维度需固定。故SSP中加入了SSP层(空间金字塔池化),将候选区域feature map分成1×1、2×2、4×4的子图,然后在每个小区域做max pooling。这样,经过SSP层的输出维度都是(1+4+16)×256(conv5的深度为256)。

在这里插入图片描述

3、Fast R-CNN

改进之处:
(1)ROI Pooling Layer实际上是SPP-NET的一个精简版,SPP-NET对每个Proposal使用了不同大小的金字塔映射,而ROI Pooling Layer只需要下采样到一个7x7的特征图
(2)Fast R-CNN使用softmax进行分类
(3)引入multi-task loss函数
(4)除提取候选区域外,其他部分实现了end-to-end训练。

在这里插入图片描述

在这里插入图片描述

正文

候选区域计算是目标检测算法的一个瓶颈,传统候选区域算法如Selective Search,速度极慢,处理一张图片需耗时2s。

Faster R-CNN的核心在于share。Faster R-CNN在Fast R-CNN的基础上加入了RPN网络,RPN网络和Fast R-CNN的检测网络共享一套conv layers。使用RPN网络来提取候选区域,仅需10ms。检测一张图片中的目标仅需198ms,帧速率为5fps。

RPN层得到目标所在的区域以及此区域有无目标的概率;Fast R-CNN部分则整合之前的信息得到目标所在区域的精细坐标以及类别置信度。

在这里插入图片描述

Faster R-CNN网络组件:conv layers、RPN、ROIPoolong、分类和回归。

以基于VGG16的Faster R-CNN网络为例,conv layers使用VGG16,有13个conv层和4个pooling层,用于特征提取,得到conv feature maps;RPN为全卷积网络(FCN),用于生成region proposals;将proposals映射到conv feature maps上得到proposal feature maps,ROIPooling将proposal feature maps分为7×7的子图,再做max pooling,将结果输入后续的全连接层做分类和回归。
在这里插入图片描述
Faster R-CNN中各层的参数可参考Faster R-CNN网络(重要)

1、conv layers

在这里插入图片描述

c o n v conv conv k e r n a l kernal kernal s i z e = 3 , p a d = 1 , s t r i d e = 1 size=3,pad=1,stride=1 size=3pad=1stride=1
p o o l i n g pooling pooling k e r n a l kernal kernal s i z e = 2 , p a d = 0 , s t r i d e = 2 size=2,pad=0,stride=2 size=2pad=0stride=2

卷积层:使用了填充,输入维度 w × h w×h w×h --> 输出维度 w × h w×h w×h
池化层:不使用填充,输入维度 w × h w×h w×h --> 输出维度 w / 2 × h / 2 w/2×h/2 w/2×h/2

conv layers中有4个pooling层,故下采样倍数 s t r i d e = 16 stride=16 stride=16
输入维度 M × N M×N M×N ,输出feature map维度为 M / 16 × N / 16 M/16×N/16 M/16×N/16

2、Region Proposal Networks

在feature map的每个位置上都会预先设置k个anchor / default boxes,RPN网络输出2个scores和4个offset。score表示此位置有无目标的概率(此为二分类问题,故使用log loss损失函数);offset中有4个值:表示平移和缩放的大小,通过对default boxes的平移和缩放可以使预测框与GT更加匹配(使用smooth L1损失函数,既对离群值和异常值不敏感,同时可快速收敛,且不会发生梯度爆炸问题)

在这里插入图片描述

conv feature map的每个位置预测k个最有可能的region proposals即k个anchor boxes,对于W×H大小的conv feature map,总共有W×H×K个anchors。

k默认值为9,包括3个尺度和3个比例,这种基于 pyramid of anchors 方法实现了multi-scale predictions。其他比较经典的方法是基于 image/feature pyramidpyramid of filters

w×h 的 feature map先经过一个3×3×512的卷积(512是feature map的维度),这一层的存在可以扩大感受野;然后有两条支路,上路用于scores预测,采用1×1×18的卷积,输出为w×h×18;下路用于coordinates预测,采用1×1×36的卷积,输出为w×h×36

(18->2个scores值*9个)
在这里插入图片描述

RPN训练

在训练RPN时,我们会给通过RPN网络得到的anchor分配一个positive label 或者negative label。

以下两种case给anchor分配一个positive label ;
(1)当anchor与一个GT的 IOU 最大;
(2)当anchor与任意GT的IOU大于0.7

在 non-positive anchor 中,当anchor与GT的IOU小于0.3,给其分配一个negative label

其余没有标签的anchor将不参与训练

Loss 函数

分类使用log loss损失函数,回归使用smooth L1损失函数。

在这里插入图片描述
p i p_{i} pi 表示 a n c h o r i anchor_{i} anchori 中有目标的概率,
p i ∗ p_{i}^{*} pi 真实框 G T 真实框GT 真实框GT l a b e l label label
a n c h o r anchor anchor p o s i t i v e positive positive l a b e l label label,则 p i ∗ = 1 p_{i}^{*} =1 pi=1
a n c h o r anchor anchor n e g a t i v e negative negative l a b e l label label,则 p i ∗ = 0 p_{i}^{*} =0 pi=0

被标注为 n e g a t i v e negative negative l a b e l label label a n c h o r anchor anchor 不参与reg部分的训练

N c l s = 256 N_{cls} = 256 Ncls=256 为 mini-batch size
N r e g = 2400 N_{reg}=2400 Nreg=2400 为 anchor locations的数量
λ = 10 \lambda=10 λ=10

bounding box 回归部分的公式如下:

在这里插入图片描述
x 、 y 、 w 、 h x、y 、w、 h xywh 分别预测框的中心坐标以及宽和高。
x a 、 y a 、 w a 、 h a x_{a}、y_{a} 、w_{a}、 h_{a} xayawaha 分别是default box的中心坐标以及宽和高

等价于:
在这里插入图片描述
RPN网络输出4个offset: t x 、 t y 、 t w 、 t h t_{x}、t_{y} 、t_{w}、 t_{h} txtytwth。通过对default box进行平移和缩放,使得预测框与真实框GT更加接近。

待续

cascade RCNN

mismatch:training阶段和inference阶段,bbox回归器的输入分布不一样,training阶段的输入proposals质量更高(被采样过,IoU>threshold),inference阶段的输入proposals质量相对较差(没有被采样过,可能包括很多IoU<threshold的)
在这里插入图片描述
proposal自身的IOU分布与训练用的IOU阈值较为接近的时候,检测器效果才最好。RPN提出的proposals大部分质量不高,IOU阈值设置过高会导致detector结果不理想。

Cascade R-CNN通过级联的方式逐阶段提高IOU的阈值,利用前一阶段的结果对proposal重新采样输入下一阶段,从而后一个阶段接收的proposals质量更高,可以接受更高的IOU阈值。

https://zhuanlan.zhihu.com/p/42553957
轻松掌握 MMDetection 中常用算法(二):Faster R-CNN|Mask R-CNN
轻松掌握 MMDetection 中常用算法(五):Cascade R-CNN

ROI

ROI Align

(1)候选区域位置取整
(2)将候选区域分为kxk个单元,k取整
在这里插入图片描述
在这里插入图片描述

参考
https://zhuanlan.zhihu.com/p/31426458
http://lanbing510.info/2017/08/24/RCNN-FastRCNN-FasterRCNN.html
https://zhuanlan.zhihu.com/p/24916624

R-CNN系列论文解读

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值