最近正要看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 以后再说
来源:CSDN
作者:ningmengccccc
链接:https://blog.csdn.net/ningmengccccc/article/details/103473331