机器不学习:卷积神经网络 CNN 笔记-目标探测1
机器不学习 www.jqbxx.com : 深度聚合机器学习、深度学习算法及技术实战
介绍目标探测的基本方法,传统方法 DPM,神经网络分类 R-CNN 系列方法和神经网络回归 YoLo 系列方法。
目标探测
先来看下什么是目标探测,下图矩形框(running box)表示的物体都可以作为目标探测的对象。不止矩形框,椭圆形框在某些场合更适合做目标探测,因为它能更好的捕捉对象,并对物体朝向做相应调整,机变性更好。
目标探测的任务一般分为单目标探测和多目标探测。目的一是找到目标的位置坐标,二是判定目标类别。
目标探测的应用场景有安防、自动驾驶等。从技术方面讲,目标探测传统方法用的是DPM,虽然目前已经被神经网络超越,但是很多思想可以借鉴。神经网络大体上有两类方法,一类是分类方法主要是RCNN系列方法 ,先找到若干候选区,然后一个区域一个区域排查,判断有没有要找的物体;另一类是回归方法主要是YoLo系列方法,直接找到区域,以及区域有什么物体。
下面来看下目标探测的两个直接思路。
直接思路一:回归问题
一类思路是把目标探测看作是一个回归问题。直接生成 class score,也就是判断是该类别(物品)的 confidence value,和 box coordinates,也就是检测框的坐标值。整个任务的损失函数其实是位置差和分类差的一个组合。
直接思路二:局部识别问题
另一类思路是在很多位置上尝试识别,能够完成识别的地方就是目标位置。如下图,我们生成潜在的候选区域(proposal),然后采用分类器逐个判别这些区域内图像是不是目标物体,如果是,可以把候选区域做延展(用 regression),看有没有更合适的候选框。
一个问题是怎样找到这些候选位置?
一种方法是用不同 scale 的 sliding windows 来遍历所有的位置,这种方法代价太高,另一种更有效的方法是直接计算候选区域。现在有很多算法能够有效的产生候选区域,比较常用的是 EdgeBoxes(在 RCNN 中使用)。
传统方法-DPM
传统方法主要包括 3 个步骤:
- 利用不同尺度的滑动窗口在图像上进行区域搜索,定位候选区域;
- 对候选区域进行特征提取,如sift,hog,haar等;
- 利用分类器进行分类识别,svm等
主要思路就是提取图像特征,制作出激励模板,在原始图像滑动计算,得到激励效果图,然后根据激励分布确定目标位置。如下图人物识别把人为设计的激励模板和 HOG 特征图结合,如果有人,会得到加强的激励,然而同样的,柱子也会得到激励。
DPM(Deformable Part Model)可以看做是HOG(Histograms of Oriented Gradients)+SVM(Surpport Vector Machine) 方法的扩展,大体思路是一致的 — 先计算梯度方向直方图,然后用 SVM 训练得到物体的梯度模型。有了这样的模板就可以直接用来分类了,简单理解就是模型和目标匹配。DPM 只是在模型上做了很多改进工作。
由于目标可能会形变,之前模型不能很好的适应复杂场景的探测,所以一个改进是各个部分单独考虑,对物体的不同部分单独进行学习,所以DPM把物体看成了多个组成部件(比如说人脸的鼻子,嘴巴等),用部件间的关系来描述物体,这个特点非常符合自然界许多物体的非刚性特征。基本思路如下:
- 产生多个模板,整体模板(root filter)以及不同局部模板(part filter)
- root filter 包含目标的整体信息,而 part filter 采用高分辨率的细节建模,看的梯度会更加精细
- 不同模板同输入图片“卷积”产生特征图
- 特征图组合形成融合特征
- 对融合特征进行传统分类,回归,得到目标位置
- 模型在图像特定位置和尺度的得分, 等于 root filter 的得分加上各个 part filter 得分的总和。每个 part filter 的得分等于该 part 在所有空间位置的得分的最大值,而部件在某位置的得分等于 part filter 在此位置的得分减去此位置的变形代价(也就是 part 偏离其理想位置的程度)
DPM 的优点是方法比较直观、简单,运算速度快,也可以适应运动物体变形,很好的处理遮挡、非刚性可变和视觉变换问题,到 2012 年前,是最好的方法。然而 DPM 也有一些缺点
- 性能一般
- 激励特征人为设计,表达能力有限,工作量大,难以进行迁移学习
- 大幅度旋转无法适应,稳定性差