RCNN算法步骤

  • 一张图像使用Selective Search算法生成1K~2K个候选区域框(使用Selective Search方法)
  • 对每个候选区域,使用深度网络提取特征
  • 特征送入每一类的SVM分类器,判别是否属于该类
  • 使用回归器精细修正候选框位置

image.png

SS生成候选提议框

利用Selective Search算法通过传统的图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

image.png

区域框特征提取

将2000候选区域缩放到227x227 pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000x4096维矩阵。

image.png

SVM分类

image.png

将2000x4096的特征矩阵与20个SVM组成的权值矩阵4096x20相乘,获得2000x20的概率矩阵,每一行代表一个建议框归于每个目标类别的概率。分别对上述2000x20维矩阵中的每一列即每一类进行非极大值抑制(NMS),剔除重复建议框,得到该列即该类中得分最高的一些建议框。

image.png

非极大值抑制(NMS)

  1. 寻找得分最高的目标
  2. 计算其他目标与改目标的iou值
  3. 删除所有iou值大于给定阈值的目标

image.png

使用回归器精细修正候选框位置

具体实现方法在后续步骤中实现

image.png

R-CNN框架

image.png

R-CNN存在的问题

  1. 测试速度慢
    1. 测绘一张图片约53s(CPU),SS费时2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
  2. 训练速度慢
  3. 训练所需空间大
    1. 对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘,对于 非常深的网络,如VGG,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间

image.png

参考

https://www.bilibili.com/video/BV1af4y1m7iL?from=search&seid=4806823522385663599&spm_id_from=333.337.0.0