fast-rcnn,faster-rcnn相关细节

详见大神博客http://closure11.com/rcnn-fast-rcnn-faster-rcnn%E7%9A%84%E4%B8%80%E4%BA%9B%E4%BA%8B/

Bounding-box Regression

有了ROI Pooling层其实就可以完成最简单粗暴的深度对象检测了,也就是先用selective search等proposal提取算法得到一批box坐标,然后输入网络对每个box包含一个对象进行预测,此时,神经网络依然仅仅是一个图片分类的工具而已,只不过不是整图分类,而是ROI区域的分类,显然大家不会就此满足,那么,能不能把输入的box坐标也放到深度神经网络里然后进行一些优化呢?rbg大神于是又说了"yes"。在Fast-RCNN中,有两个输出层:第一个是针对每个ROI区域的分类概率预测, p=(p0,p1,,pK)

;第二个则是针对每个ROI区域坐标的偏移优化, tk=(tkx,tky,tkw,tkh) 0kK

是多类检测的类别序号。这里我们着重介绍第二部分,即坐标偏移优化。

假设对于类别 k

,在图片中标注了一个groundtruth坐标: t=(tx,ty,tw,th) ,而预测值为 t=(tx,ty,tw,th)

,二者理论上越接近越好,这里定义损失函数:

Lloc(t,t)=i{x,y,w,h}smoothL1(ti,ti)

其中

smoothL1(x)={0.5x2|x|0.5|x|1otherwise

这里, smoothL1(x)

中的x即为 titi (感觉前一个公式为作者笔误,该写成 smoothL1(titi) ),即对应坐标的差距。该函数在 (1,1)

之间为二次函数,而其他区域为线性函数,作者表示这种形式可以增强模型对异常数据的鲁棒性,整个函数在matplotlib中画出来是这样的

smooth

对应的代码在smooth_L1_loss_layer.cu中。


RPN层

Faster-RCNN最大一点贡献应该算是其把proposal部分从网络外边嵌入了网络里边,从此一个网络模型即可完成end-to-end的检测任务而不需要我们在前面手动先执行一遍proposal的搜索算法。其实如果回过头来看看几年前比较流行的检测算法,比如HOG+SVM和DPM什么的,同样是需要用分类器逐个对一些矩形框里提取出来的特征进行分类,只不过那时是全图设置好stride、scale等参数然后搜索,不像selective search这些算法会去对图像进行内容分析,然后输出一些可疑的矩形候选框。

某种程度上,RPN也可以算作一个全图搜索的粗检测器,图片在输入网络后,依次经过一些卷积、池化层,然后得到的feature map被手动划分为 n×n

个矩形窗口(论文中n=3),准备后续用来选取proposal,并且此时坐标依然可以映射回原图。需要注意两点问题:1.在到达全连接层之前,卷积层和Pooling层对图片输入大小其实没有size的限制,因此RCNN系列的网络模型其实是不需要实现把图片resize到固定大小的;2.n=3看起来很小,但是要考虑到这是非常高层的feature map,其size本身也没有多大,因此 3×3

9个矩形中,每个矩形窗框都是可以感知到很大范围的。

在划分为 n×n

个窗口后,我们把每个矩形窗口的中心点当成一个基准点,然后围绕这个基准点选取k(k=9)个不同scale、aspect ratio的anchor(论文中3个scale和3个aspect ratio),对于每个anchor,首先在后面接上一个二分类softmax,有2个score输出用以表示其是一个物体的概率与不是一个物体的概率,然后再接上一个bounding box的regressor,以及4个坐标输出代表这个anchor的坐标位置,因此RPN的总体Loss函数可以定义为:

L({pi}{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)

这个公式里的 Lreg

即为上面提到的 smoothL1 函数,而该项前面的 pi

表示这些regressor的loss指针对正样本而言,负样本的预测会直接舍去。

另外在RPN训练中有一个需要注意的地方是正负样本的选择,文中提到如果对每幅图的所有anchor都去优化loss function,那么最终会因为负样本过多导致最终得到的模型对正样本预测准确率很低(It is possible to optimize for the loss functions of all anchors, but this will bias towards negative samples as they are dominate)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值