基于深度学习的目标检测模型R-CNN、Fast R-CNN、Faster R-CNN系列

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-26 10:29   791   0

object detection是要在图像中识别到物体,并定位的算法,即图像识别+定位。classification+localization。

这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,物体还可以是多个类别。

如下所示:

识别分类任务是CNN网络来完成;定位的任务有专门的算法!

定位思路1:看做机器学学习回归问题

看做回归问题,我们需要预测出(x,y,w,h)四个参数的值,从而得出方框的位置,方框用4个数字表达,使用欧式距离计算损失函数。

计算与真实的xywh的欧式距离,真实的4个数训练时需要标记。

具体可以把最后全连接层1000类改为20类,rename下;

以上是两个模型,分别解决分类和定位的两个问题。

只训练头部比全部训练效果差2%~3%;

这里需要进行两次fine-tuning:
第一次在ALexNet上做,第二次将头部改成regression head,前面不变,再做一次fine-tuning

接在最后一个卷积层的后边---VGG,Overfeat;

接在最后一个全连接层之后--RCNN,Deeppose;

regression太难做了,应想方设法转换为classification问题。
regression的训练参数收敛的时间要长得多,所以上面的网络采取了用classification的网络来计算出网络共同部分的连接权值。

标注也需要多个,每个部位各有4个数;

把人体拆分成若干关节,两个点代表关节,所有关节标记起始点方向,预测角度!

定位思路2:取图像窗口预测得分

根据得分的高低,我们选择了右下角的黑框作为目标位置的预测。
注:有的时候也会选择得分最高的两个框,然后取两框的交集作为最终的位置预测。

总结一下思路:
对一张图片,用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN,然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。

优化时间:优化前--

优化后:把全连接层改为卷积层,这样可以提提速。

全连接层耗时最多,改为权重共享w的卷积层--思路如下:

多个物体的识别定位:

把回归->分类问题!如下:

问题是:框在哪----移动太多了?框多大---大小?----量级很大!

只能找出可能含有物体的候选框,比如选1000个候选框,这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。

---边缘策略!

问题是候选框的选择方法:

分割?选择性搜索?如下:

以下是各种选定候选框的方法的性能对比:

基于以上思路,RCNN算法被发明用于object detection,技术的演进如下,SppNET是一个承前启后的算法:
RCNN->SppNET->Fast-RCNN->Faster-RCNN

1.R-CNN

R是region即边缘,速度不快!用的是上边边缘策略!

先拿到框框,再resize框的大小,再卷积拿到框框里的特征,放到SVM分类器中分类。

RCNN的步骤:

步骤一:训练(或者下载)一个分类模型(比如AlexNet)

步骤二:对该模型做fine-tuning
   将分类数从1000改为20
   去掉最后一个全连接层

步骤三:特征提取
   提取图像的所有候选框(选择性搜索)
   对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘

步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative
比如下图,就是狗分类的SVM

步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。

2.Fast R-CNN

在R-CNN上的改进:把2000个卷积改成一次映射;

3.Faster R-CNN

在最后一个卷积神经网络后边,加了个slide woindow,窗口做后续的分类

https://www.cnblogs.com/skyfsm/p/6806246.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP