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 的特征图上,而后展平通过全连接层得到预测结果