RCNN算法分为4个步骤 :
- 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
- 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
- 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
- 位置精修: 使用回归器精细修正候选框位置
RCNN :许多候选框(比如两千个)-->CNN-->得到每个候选框的特征-->分类+回归;
Fast RCNN :一张完整图片-->CNN-->得到每张候选框的特征-->分类+回归;
Faster R-CNN:基于Fast RCNN的问题做出了改进;
------Fast R-CNN存在的问题:存在瓶颈,选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?
解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
做这样的任务的神经网络叫做区域生成网络Region Proposal Network(RPN),是一个全卷积网络。
Faster R-CNN具体做法:
• 将RPN放在最后一个卷积层的后面
• RPN直接训练得到候选区域
最后总结一下各大算法的步骤:
RCNN:
1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一特征的候选框,用回归器进一步调整其位置
Fast RCNN:
1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
2. 对整张图片输进CNN,得到feature map
3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5. 对于属于某一特征的候选框,用回归器进一步调整其位置
Faster RCNN:
1. 对整张图片输进CNN,得到feature map
2. 卷积特征输入到区域生成网络RPN,得到候选框的特征信息
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一特征的候选框,用回归器进一步调整其位置