一、什么是RCNN
R-CNN全称是Region-CNN,将候选区 + CNN结合,是第一个成功将深度学习应用到目标检测上的算法,从而提高目标检测效果。
二、与传统目标检测区别
R-CNN总体遵循传统目标检测流程,区别在于特征提取一步,将传统目标检测特征提取(Harris、SIFT、SURF、LBF)改成卷积神经网络来进行特征提取。
三、R-CNN算法流程
(一)生成候选区域
(二)特征提取
(三)类别判断
(四)精修位置
(一)生成候选框
论文主要利用selective search方法(选择性搜索)来生成产生候选区域,将输入图片生成2000个候选区域,这些区域可能包含着待检测目标。(ss算法看考链接https://zhuanlan.zhihu.com/p/39927488)
(二)特征提取
通过上述的Region proposals我们将得到的2000个候选框,将其输入到CNN网络进行特征提取,由于输入CNN网络的图片必须为227*227像素,我们首先需要对候选区域进行缩放变换,我们使用已经训练好了的AlexNet进行迁移学习,获得4096维的特征得到2000x4096维的矩阵。
(三)类别判断
这里单独训练了一个分类器SVM而不是用CNN中的softmax,我们使用对每个类别训练出的SVM给整个特征向量中的每个类别单独打分然后给出一张图像中所有的打分区域,然后使用NMS拒绝掉一些和高分区域的IOU大于阈值的候选框。
(四)精修位置
训练了一个回归器对候选框进行进一步的精修,通过BoundingBox Regression(BBR)最终得到每个类别的修正之后的bbox。