一、RCNN算法
RCNN的实质是在图像输入CNN之前将其划分为数个特征区域。传统的方法有滑窗法、Selective Search(选择搜索)。
Selective Search首先会通过sub-分割将图片分为多个区域;然后基于颜色、结构、尺寸、形状等信息将相似的区域聚合。一般会生成大于20k个region proposal(候选区域)
1.基本结构
标准RCNN算法由以下四个结构组成
选择搜索 | 生成候选区域,再由warp缩放为固定尺寸 |
特征提取 | 由CNN提取4096维特征(一般使用AlexNet) |
类别分类 | 使用SVM对4096维特征进行分类,得到2000x20的矩阵 |
位置修正 | 使用线性回归器修正分类区域,生成一个更精确的边界框 |
2.优缺点
优点:①精度相对较高 ②将CNN引入目标检测
缺点:①训练步骤繁琐(需要同时训练CNN网络,SVM分类器和线性回归器)
②候选区域会产生大量特征文件,占用资源,降低运算速度
③CNN提取特征的速度较慢
④最后使用SVM进行分类,无法实现end-to-end的训练
⑤由于CNN中有全连接层,要求输入尺寸一致,需要对候选区域进行warp
二、Fast RCNN
相较于RCNN,Fast RCNN在以下几点取得了突破:
①训练速度(9倍)和测试速度(200倍)大大提升
②无需使用SVM分类器
与RCNN相比,其结构主要有以下改变
①使用softmax替代了SVM
②引入了多任务函数边框回归(bbox regressor),除Selective Search阶段外实现了end-to-end
③引入RoI Pooling(一层SPP),对输入图像没有了限制
1.基本结构
Fast RCNN对整张图片仅需进行一次CNN,生成兴趣区域后再利用ROI池化对区域进行调整;相较于RCNN中需要对2k多候选区域都进行CNN计算快了很多倍。
CNN | 使用CNN网络卷积后生成兴趣区域 |
RoI池化 | 确保这些兴趣区域的尺寸一致 |
完全连接神经网络 | 进行分类(softmax),同时用线性回归层返回边框 |
2.存在的不足
第一次卷积层在搜索兴趣区域时需要一个2秒左右的时间,速度较慢。
三、Faster RCNN
Faster RCNN使用Region Proposal网络(RPN)替代Fast RCNN中使用CNN进行兴趣区域检索的功能。RPN以图像特征映射(由卷积层生成)作为输入,生成一系列object proposal,它们每一个都有对应的分数。
1.基本结构
卷积层 | 生成图像的特征映射 |
RPN网络 | 生成object proposals及其分数 |
RoI池化层 | 修正object proposals为一致的尺寸 |
全连接层 | 进行分类(softmax),同时用线性回归层返回边框 |
2.关于RPN网络
RPN在图像特征映射上使用一个滑动窗口,每个窗口均会生成不同形状、尺寸的k个anchor box。
对于anchor box,PRN网络会预测其两点:
①其就是目标物体的概率(小概率)
②经过调整能更合适目标物体的边界框回归量
将这些边界框传入RoI,将每个proposal进行切割,使其都含有目标物体;最后,这些特征映射会传递到全连接层,对目标进行分类并预测边界框。
3.存在的问题
网络并不是一次性浏览所有图像,而是关注图像的多个部分,所以会造成以下情况:
①需要多个步骤才能提取到所有目标
②由于可能出现多个嵌套,系统性能可能取决于前面步骤的表现水平。