RCNN可以说是利用深度学习进行目标检测的开山之作,论文发表在2014年的CVPR,是R-CNN系列算法的开山之作。
1、算法流程
RCNN算法分为4个步骤:
- 一张图像生成1K~2K个候选区域
- 对每个候选区域,使用深度网络提取特征
- 特征送入每一类的SVM 分类器,判别是否属于该类
- 使用回归器精细修正候选框位置
2、候选区域生成
使用了Selective Search1方法从一张图像生成约2000-3000个候选区域。基本思路如下:
- 使用一种过分割手段,将图像分割成小区域
- 查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域
候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。
3、合并规则
优先合并以下四种区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的
4、特征提取
预处理
使用深度网络提取特征之前,首先把候选区域归一化成同一尺寸227×227。
此处有一些细节可做变化