Faster R-CNN:用区域推荐网络进行实时的物体检测

借助毕设外文翻译的机会,把Faster R-CNN这个物体检测最前沿的技术总结一下!
先介绍一下Fast R-CNN,它是早期的物体检测网络,网络处理步骤:图像卷积->区域推荐->图像分类和位置回归。而Faster R-CNN是在Fast R-CNN基础上加入了RPN(一个完整的卷积神经网络,它可以同时进行边界预测和似物性打分,使用“Attention”机制,它告诉整个网络应该看哪里,它和Fast R-CNN检测网络共享卷积特征,使得区域推荐几乎无损耗)
研究和实践分以下步骤进行。
一、RPNs
一个区域推荐网络以一个图片(任意大小)作为输入,输出一组物体推荐,每个推荐都附上似物性打分。为了产生推荐区域,我们在设置一个小网络,让他在最后一个共享卷积层输出—卷积特征地图上滑动。这个小网络将输入的卷积特征地图映射成一个nn空间的窗口。每一个滑动的窗口都映射出一个低维的特征(ZF映射成256维,VGG映射成512维),然后对这些特征进行ReLU处理。这些特征被丢进两个兄弟全连接层—box-regression layer(盒回归层)和box-classification layer(盒分类层)。
我单独介绍一下锚。我们可以同时从每一个滑动窗口的位置预测出多个推荐区域,其中每个位置最大可能的推荐数目记为k。一个锚位于滑动窗口的中心,并且与一个尺度和比例相关。默认情况下,我们使用3个尺度和3个横纵比,在每个滑动位置产生k=9的锚。一个大小为W
H(比如2400)的卷积特征地图共有WHk推荐。
二、损失函数
这里的i指小批量内锚的索引,p_i表示第i个锚被预测成物体的概率,p_i*是实际概率,正标签值为1,负标签值为0。t_i是一个向量,表示边界框位置的4个预测参数,t_i表示4个真实参数。分类损失函数是两个类(是物体、不是物体)的对数损失函数回归损失函数,回归损失函数使用论文【1】中定义的robust损失函数。p_i^ L_reg表示只有当锚为正标签时回归函数才会被激活,否则禁用。cls层和reg层的输出分别由{p_i}和{t_i}组成。两个损失项分别由N_cls和N_reg进行归一化,由平衡参数λ进行统一加权。在目前实现的代码中,cls项的N_cls=256,N_reg=2400,λ=10。
三、训练Faster R-CNN
RPN和Fast R-CNN共享卷积层,于是就不需要分开训练两个网络了,训练方法有三种:(i)交替训练,先训练RPN,得到的推荐训练Fast R-CNN,然后经过Fast R-CNN调优过的网络用来初始化RPN,不断迭代这个过程。(ii)近似联合训练,RPN和Fast R-CNN合并成一个网络进行训练,每次梯度下降迭代时,前向传播产生的结果作为Fast R-CNN的区域推荐。反向传播的损失函数就是RPN损失和Fast R-CNN损失的组合,但是这个方法忽略了推荐坐标的导数,所以说这个方法是近似的。与前一种相比,这个方法产生的结果差不多,而且训练时间减少了0.25-0.5,这个方法也在python代码中。(iii)非近似联合训练,与近似联合训练相比,添加了坐标的导数,即包含了坐标的Rol池化层。具体解决略,读者可以探索。
下面着重介绍一下4步交替训练。第一步,训练RPN;第二步,使用第一步产生的推荐对Fast R-CNN进行单独训练,此时两个网络不共享卷积层;第三步使用检测网络对RPN进行初始化,固定共享卷积层并只训练RPN,现在两个网络共享卷积层了。最后固定共享卷积层,对Fast R-CNN进行训练。这样一来,两个网络共享一个卷积层,构成了一个统一的网络。我们可以迭代多次进行交替训练,结果可能改善不了多少。
四、具体实验
用PASCAL VOC数据集,它由5000个训练图像、5000个测试图像、超过20个类组成。


实验配套代码:https://pan.baidu.com/s/1jHLqMii
参考文献:R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV) , 2015.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值