图像检测流程
传统图像检测的基本流程:
输入——特征提取(手工/人为计算)——应用机器学习算法进行检测——输出检测结果
经典的特征提取算法(Sift/HOG/Fast/Surf/Orb)aa
CNN算法进行目标检测:
两步检测算法
First Trial-RCNN(2014)
详细流程:
- 对输入图片进行Extract Region Proposal,即一张图片生成1k~2k个候选区域;
- 将Region Proposal区域resize成相同大小输入CNN模型提取特征;
- 将提取特征输入传统机器学习算法进行分类与回归,分类判别属于哪一类,回归是应用回归器精细修正候选框位置。
候选区域的生成:
使用了Selective Search1方法从一张图像生成约2000-3000个候选区域。基本思路如下:
-
使用一种过分割手段,将图像分割成小区域;
-
查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置;
-
输出所有曾经存在过的区域,所谓候选区域
候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。
CNN部分(将图片裁剪为相同大小,得到相同维度的 vector)
NMS(非极大抑制)
NMS即non maximum suppression即非极大抑制,顾名思义就是抑制不是极大值的元素,搜索局部的极大值。
就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。
所谓非极大值抑制:先假设有6个矩形框,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A<B<C<D<E<F。
- (1) 从最大概率矩形框F开始,分别判断A、B、C、D、E与F的重叠度IOU是否大于某个设定的阈值;
- (2) 假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
- (3) 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断A、C与E的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
- (4) 重复这个过程,找到所有被保留下来的矩形框。
Soft-NMS
作用: iou大时si小,起负相关作用,但初始si特别大时即使iou大,计算得到的si依旧很高,可以将两个都保留(区分两个挨的很近的不同物体)
阈值sigma通常为0.3
Fast R-CNN
Fast R-CNN的输入由两部分组成:一是待处理的整张图像;二是候选区域(region proposal)。
Fast R-CNN处理的第一步是对图像进行多次卷积核池化处理来获取卷积特征图。由于存在多个候选区域,系统会有一个甄别,判断出感兴趣区域,也就是Region of Interest, RoI。RoI池化层是SSP(Spatial Pyramid Pooling)层的特殊情况,它可以从特征图中提取一个固定长度的特征向量。每个特征向量,都会被输送到全连接(FC)层序列中,这个FC分支成两个同级输出层。其中一层的功能是进行分类,对目标关于K个对象类(包括全部”背景background”类)输出每一个RoI的概率分布,也就是产生softmax概率估计;另一层是为了输出K个对象中每一个类的四个实数值(bbox regression)。每4个值编码K个类中的每个类的精确边界框(bounding-box)位置。整个结构是使用多任务损失的端到端训练(trained end-to-end with a multi-task loss)(除去Region Proposal提取阶段)。