R-CNN、Fast R-CNN,Faster R-CNN

 ̄綄美尐妖づ 提交于 2019-12-11 09:02:52

        最近正要看Contextual Action Recognition with R*CNN,学习基于动态图像图像的行为识别,所以要恶补下它所需要的知识。

也就是目标检测常见的几种算法。

1、首先目标检测是什么?

        在给定的图片中找到物体的所在位置,并且分辨出物体的类别。这实际上是两个任务。

        图像识别:image ----> cat/dog

        图像定位:image ---->(x,y,w,h)

2、实现目标检测的几种方法:

1)传统的目标检测方法

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

          问题:基于滑动窗口的选择策略没有针对性,窗口冗余,时间复杂度高

                     检测多个物体很难进行。

2)候选区域+深度学习分类

R-CNN

        为了防止基于滑动窗口的选择策略没有针对性,我们可以实现在途中找出目标可能出现的位置(利用颜色,纹理,边缘等等),即候选区域。

简要步骤:

(1) 输入测试图像

(2) 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal

(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征

(4) 将每个Region Proposal提取到的CNN特征输入到SVM进行分类

它的缺点也非常明显,对每个候选框都要进行CNN特征提取和SVM分类,计算量很大。

Fast R-CNN

原来的方法:许多候选框(比如两千个)-->CNN-->得到每个候选框的特征-->分类+回归

现在的方法:一张完整图片-->CNN-->得到每张候选框的特征-->分类+回归

   (1) ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入。

  (2) R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。

Faster R-CNN

对Fast的加速,加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。

所以,rgbd在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search,同时引入anchor box应对目标形状的变化问题。

30基于深度学习的回归方法

YOLO/SSD 以后再说

参考:https://cloud.tencent.com/developer/news/281788

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!