何为目标检测
目标检测描述-简书,目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。
RCNN
我们这篇只讲RCNN
R-CNN(Region CNN,区域卷积神经网络)可以说是利用深度学习进行目标检测的开山之作,作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,2010年更是带领团队获得了终身成就奖,如今就职于Facebook的人工智能实验室(FAIR)。
算法流程
1:输入图像
2:每个图像生成1k~2k个候选区域
3:对每个区域使用深度网路模型进行特征提取(Alexnet,vgg等CNN都可以)
4:将特征送人每一类的svm分类器,判别是否属于该类
5:使用回归器精细修正候选框位置
生成候选框位置
使用Selective Search(选择性搜索)方法对一张图像生成约2000-3000个候选区域
(1)使用一种过分割手段,将图像分割成小区域
(2)查看现有小区域,合并可能性最高的两个区域,重复直到整张图像合并成一个区域位置。优先合并以下区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的
在合并时须保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其它小区域,保证合并后形状规则。
(3)输出所有曾经存在过的区域,即所谓候选区域
特征提取
使用深度网络提取特征之前,首先把候选区域归一化成同一尺寸227×227。
使用CNN模型进行训练,例如AlexNet,一般会略作简化,如下图:
类别判断
对每一类目标,使用一个线性SVM二类分类器进行判别。输入为深度网络(如上图的AlexNet)输出的4096维特征,输出是否属于此类。
位置修正—NMS(非极大值抑制)
目标检测的衡量标准是重叠面积,许多看似精准的检测结果,往往因为候选框的不够精准,重叠面积很小,故需要一个位置精修步骤,对于每一个类,训练一个线性回归模型去判定这个框是否框的完美。
NMS(非极大值抑制)
NMS(Non Maximum Suppression),又名非极大值抑制,是目标检测框架中的后处理模块,主要用于删除高度冗余的bbox,如下图直观看看NMS的工作机制:从下述可视化的结果可以看出,在目标检测过程中,对于每个obj在检测的时候会产生多个bbox,NMS本质就是对每个obj的多个bbox去冗余,得到最终的检测结果.
Non-Maximum Suppression的翻译是非“极大值”抑制,而不是非“最大值”抑制。这就说明了这个算法的用处:找到局部极大值,并筛除(抑制)邻域内其余的值。
这是一个很基础的,简单高效且适用于一维到多维的常见算法
假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值。
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框。
IOU
交并比(Intersection over Union)是目标检测NMS的依据
衡量边界框位置,常用交并比指标,交并比(Injection Over Union,IOU)发展于集合论的雅卡尔指数(Jaccard Index)[3],被用于计算真实边界框Bgt(数据集的标注)以及预测边界框Bp(模型预测结果)的重叠程度。
两边界框相交部分面积与相并部分面积之比
NMS变种
局部感知NMS(LNMS)
1.先对所有的output box集合结合相应的阈值(大于阈值则进行合并,小于阈值则不和并),依次遍历进行加权合并,得到合并后的bbox集合;
2.对合并后的bbox集合进行标准的NMS操作
倾斜NMS(INMS)
基本步骤(rbox代表旋转矩形框)
1.对输出的检测框rbox按照得分进行降序排序rbox_lists;
2.依次遍历上述的rbox_lists.具体的做法是:将当前遍历的rbox与剩余的rbox进行交集运算得到相应的相交点集合,并根据判断相交点集合组成的凸边形的面积,计算每两个rbox的IOU;对于大于设定阈值的rbox进行滤除,保留小于设定阈值的rbox;
3.得到最终的检测框
多边形NMS(PNMS)
基本步骤
其思路和标准NMS一致,将标准NMS中的矩形替换成多边形即可
掩膜NMS(MNMS)
具体步骤
1.先将所有的检测按照得分进行降序排序box_lists;
2.对box_lists进行遍历,每次遍历当前box与剩余box的IOU(它是在掩膜的基础上进行计算,对于大于设定阈值的box进行滤除;
3.得到最终的检测框
针对水平文本检测:标准的NMS就可以
针对基于分割方法的多方向文本检测,优先推荐Mask NMS,当然也可以采用Polygon NMS和Inclined NMS
针对基于检测方法的多方向文本检测,优先推荐Polygon NMS和Inclined NMS