目录
一、目标检测的任务
二、什么是“两阶段”呢?
三、两阶段算法原理
(二)候选区域算法
(三)边框回归( Bounding Box Regression )
1. 非极大值抑制(Non-Maximum Suppression,NMS)
2. 对候选框进行坐标调整
(三)RCNN模型结构
1. RCNN的模型结构
2. R-CNN 总结
目前目标检测领域的深度学习方法主要分为两类:two stage 的目标检测算法;one stage 的目标检测算法。
在图像中把目标物体框出来,主要分为两个:
两阶段指的是实现检测的方式有主要两个过程,如下:
因此,“两阶段”又称基于候选区域(Region proposal)的目标检测。它是基于深度学习的检测算法的先驱者;代表性算法如下图的RCNN系列(RCNN,Fast RCNN,Faster RCNN)还有SPPNet等。
RCNN是“两阶段”目标检测中的第一个模型。该算法步骤大致分为两大步骤进行:
两阶段目标检测模型结构:
传统算法模型结构:
两阶段目标检测模型结构:
传统目标检测算法使用“穷举法”来获取候选区域,即暴力的使用滑动窗口从左到右、上到下扫描图片。缺点非常明显,候选区域过多,相邻窗口重复信息大,无效的区域也很多,导致计算量大,检测速度慢。
RCNN使用“选择性搜索算法”(SS,Selective Search)来获取候选框,具体步骤如下:
相比传统的穷举法,BBox候选框明显的减少了,在后面步骤的物体分类上减少了很多计算资源。
围绕如下2个问题进行算法设计:
经过SS搜索,共有2000多个候选区域,首先需要对每个候选区域进行分类识别:
如上图所示,每个目标有两三个候选区域,每个候选区域都有目标概率值;原则上,1个物体对应1个候选区域,那么如何去除冗余的候选区域框,保留最好的1个?
使用非极大值抑制NMS来解决以上问题。
思路:选取那些邻域里分类数值最高,并且抑制那些分数低的窗口。
做法:设定阈值(阈值通常设定0.3~0.5 ),比较两两区域的IoU与阈值的关系。
Iou是两个区域的交并比,如下:
那么可以如下两个思路来筛选候选框,假设阈值设定0.5:
例子:假设检测到如下出6个都是人脸的矩形框,目的要找到最好的一个。
将最后选出的候选框与目标值(Ground Truth)建立回归方程。如下图:
红色的框:最终提取的候选区域框;
绿色的框:目标值, 即真实标注的目标区域。
目测可判定,红色框定位不准(IoU<0.5), 那么说明红色框没有正确的标志飞机,因此需要对红色框进行微调,使得经过微调后的窗口跟目标值更接近。
对于窗口,一般使用四维向量(x,y,w,h)表示,分别表示窗口中心点坐标和宽高;寻找一种关系使得输入候选窗口 P 经过映射f得到一个跟真实窗口G^更接近的回归窗口G ̂,使得新的候选区域G ̂更接近真实目标G^,从而提高预测的准确率:
模块1 :
(1)采用selective search算法对每个图片提取约2000个候选框;
(2)再将尺寸变形为227×227的大小【适应AlexNet网络的输入】
模块2:
(1)使用AlexNet网络对候选框进行特征提取,每个候选框有4096维特征;
(2)采用训练好的AlexNet CNN网络进特定样本【如VOC数据集-20个分类类别】下的微调fine-tune;
模块3:
(1)对每个候选框的4096维特征进行分类;
(2)需要为每个类别训练单独的SVM;
模块4:
(1)进行边框回归训练。
优点:基于传统的手工提取特征的方法,性能大幅提升;
缺点:但是训练时间很长(84h),测试阶段很慢,一张图片大概16s;R-CNN速度较慢的一个重要原因是卷积特征重复计算量太大,每张图片约有2000区域需计算CNN特征。