工程应用中,检测算法以one-stage算法yolo系列等为主,因为one-stage通常来说速度快,可以完成良好的实时检测。
本文回顾的是two-stage算法:RCNN系列
One-stage and two-stage:
one-stage: 直接回归物体的类别概率和位置坐标值(无region proposal),但准确度低,速度相比two-stage快。
two-stage: 先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类。
一.RCNN
算法流程概述:
(1)search selective生成候选框
(2)对候选框用深度网络提取特征(候选框resize成224*224)
(3)特征送入每一类的SVM分类器进行分类
(4)用回归器对候选框进行位置修正
这里的深度网络用的是Alexnet CNN,不同的是将最后的一层的1*1000全连接层(原先全连接是用来分类)去掉了,这样就得到了一个4096维的特征向量,若有K个候选框则得到K个4096维的特征向量。再经过特征提取后将K*4096维的特征向量输入到20个SVM分类器中(权值矩阵4096*20),从而得到K*20维的矩阵,表示K个候选框对应20个类别的得分。对K*20维矩阵在每一列(每一类)进行NMS得到该类中得分最高的框。
NMS非极大值抑制算法:
寻找每个类别中得分最大的目标,因为对于一类,score越高越能说明物体在里面。取score最高的一个框,计算其与其他框的iou,iou越大越可能是同一个物体,去掉iou大于给定阈值的目标框。
在经过NMS处理后,对剩余的高质量建议框进行回归操作,其主要回归有四个参数,中心点距离实际位置的偏移量x和y,以及建议框宽高的缩放因子hw
二.Fast-RCNN
RCNN存在的问题:用Selective search算法提取候