跳到主要内容

4. R-CNN系列

目标检测

图像理解的三个层次:

  • 分类:关心整体【获取 类别 信息】
  • 检测:关心特定的物体目标【获取 类别 + 位置 信息】
  • 分割:关心物体的每个像素【获取 类别 + 位置 + 像素类别(/实例) 信息】

1. R-CNN

1.1 算法流程

· step1:候选区域选择: 一张图像生成 1k~2k 个候选区域(使用 SS 方法)
· step2:特称提取: 对每个候选区域进行特征提取(使用 CNN)
· step3:分类和边界回归:

  • 对每个候选区域进行分类(使用 SVM);
  • 对每个候选区域进行边界回归(使用回归器模拟修正候选框的位置)

1.2 step1-候选区域的生成

Selective Search: · 首先通过的简单的聚类生成区域集合; · 然后根据定义的相似度不断合并区域,生成更大的区域;【区域相似度考虑四个方面:颜色、纹理、尺寸、交叠】

1.3 step2-特征提取

· 将 2k 个候选区域缩放到 227x227 pixel; · 使用 AlexNet CNN 提取特征; · 得到 4096 维的特征向量(4096 是 AlexNet 的最后一层全连接层的输出维度),得到 2000x4096 的特征矩阵

1.4 step3-分类

· 2000x4096 的特征矩阵作为 SVM 的输入,得到 2000x20 的分类结果矩阵(20 是类别数);

IoU 网络

对每个候选区域进行边界回归(使用回归器模拟修正候选框的位置)
计算原理:IoU = 实际框与预测框的交集 / 实际框与预测框的并集

· 非极大值抑制(NMS)剔除重叠候选框:

  • 选取置信度最高的候选框;
  • 计算该候选框与其他候选框的 IoU;
  • 去除 IoU 大于阈值的候选框;

1.5 step4-边界回归

· 用 20 个回归器对 20 个类别中 NMS 挑选出的候选框进行回归,得到 20 个回归结果(修正后的 bounding box); · 用 CNN 输出的特征向量进行预测

1.6 存在问题

  • 大量重叠区域,速度慢;
  • 过程繁琐:CNN,SVM,NMS,回归器;
  • 特征提取所需空间大:AlexNet 和 CNN 都要遍历提取所有候选区域的特征;

2. Fast R-CNN

· step1:候选区域选择: 一张图像生成 1k~2k 个候选区域(使用 SS 方法) · step2:将图像输入网络得到相应的特征图,将候选框映射到特征图上,得到候选框的特征矩阵; · step3:将每个矩阵 ROI pooling 到 7x7 的特征图上,而后展平通过全连接层得到预测结果