首页 > 技术文章 > R CNN

shensobaolibin 2019-01-23 18:06 原文

有一篇文章写的比较详细,先放在前面

文章链接https://blog.csdn.net/shenxiaolu1984/article/details/51066975

 

流程

1.通过选择性搜索算法获取2k个候选区域

2.将候选区域进行合并,获得一些感兴趣区域

3.将感兴趣区域直接resize为一个固定的大小,并送入一个神经网络

4.将神经网络的倒数第二层输出作为输入,放入svm中,输出分类

5.对合适分类的图像进行边框回归得到候选区域

 

缺点:

对候选区域resize,降低了准确率

对不同大小的物体的检测做的不是很好

 

一些训练细节

1,2使用ss获取候选区域较难复现

3中训练cnn,输入为一张图片,输出为softmax的分类,  训练时可以使用训练集中IOU>0.6的图像

5中时先将前4步做完,再去训练最后那一个神经网络

 

一个要重点掌握的知识点

边框回归

做边框回归的时候,神经网络的输出不是一个简单的回归框,而是

Input:
RegionProposal→P=(Px,Py,Pw,Ph)

感兴趣区域的CNN输出

Output:
需要进行的平移变换和尺度缩放

设Gx,Gy,Gw,Gh为真实值

 

tx=(Gx−Px)/Pw
ty=(Gy−Py)/Ph

tw=log(Gw/Pw)

th=log(Gh/Ph)

 

tx = w1*p + b1

ty = w2*p + b2

tw = w3*p + b3

th = w4*p + b4

 

边框回归的loss是最小二乘 ,使用L2正则化

 

为什么要使用这种形式

不是说别的形式不行,我曾经训练过一个边框回归神经网络,输出的是预测的(x,y,w,h),但是训练时收敛较慢

其实神经网络中当输出在0-1之间时,网络的收敛比较快

一个更重要的原因是

神经网络具有尺度不变性

而且,对于不管是线性回归还是神经网络,它本质上都是一个函数

有一篇博客写的比较好

https://blog.csdn.net/zijin0802034/article/details/77685438

 

 

 

推荐阅读