在介绍Faster R-CNN之前,先来介绍一些前验知识,为Faster R-CNN做铺垫。
一、基于Region Proposal(候选区域)的深度学习目标检测算法
Region Proposal(候选区域),就是预先找出图中目标可能出现的位置,通过利用图像中的纹理、边缘、颜色等信息,保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率(IoU,Intersection-over-Union)。
图1 IoU定义
Region Proposal方法比传统的滑动窗口方法获取的质量要更高。比较常用的Region Proposal方法有:SelectiveSearch(SS,选择性搜索)、Edge Boxes(EB)。
基于Region Proposal目标检测算法的步骤如下:
其中:
CNN方法见http://blog.csdn.net/qq_17448289/article/details/52850223。
边框回归(Bouding Box Regression):是对RegionProposal进行纠正的线性回归算法,目的是为了让Region Proposal提取到的窗口与目标窗口(Ground Truth)更加吻合。
二、R-CNN、Fast R-CNN、Faster R-CNN三者关系
图2 三者关系
表1 三者比较
|
使用方法 |
缺点 |
改进 |
R-CNN (Region-based Convolutional Neural Networks) |
1、SS提取RP; 2、CNN提取特征; 3、SVM分类; 4、BB盒回归。 |
1、 训练步骤繁琐(微调网络+训练SVM+训练bbox); 2、 训练、测试均速度慢 ; 3、 训练占空间 |
1、 从DPM HSC的34.3%直接提升到了66%(mAP); 2、 引入RP+CNN |
Fast R-CNN (Fast Region-based Convolutional Neural Networks) |
1、SS提取RP; 2、CNN提取特征; 3、softmax分类; 4、多任务损失函数边框回归。 |
1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s); 2、 无法满足实时应用,没有真正实现端到端训练测试; 3、 利用了GPU,但是区域建议方法是在CPU上实现的。 |
1、 由66.9%提升到70%; 2、 每张图像耗时约为3s。 |
Faster R-CNN (Fast Region-based Convolutional Neural Networks) |
1、RPN提取RP; 2、CNN提取特征; 3、softmax分类; 4、多任务损失函数边框回归。 |
1、 还是无法达到实时检测目标; 2、 获取region proposal,再对每个proposal分类计算量还是比较大。 |
1、 提高了检测精度和速度; 2、 真正实现端到端的目标检测框架; 3、 生成建议框仅需约10ms。 |
2.1 R-CNN目标检测流程介绍
具体可参考http://blog.csdn.net/shenxiaolu1984/article/details/51066975
2.2 Fast R-CNN目标检测流程介绍
注意:Fast R-CNN的RegionProposal是在feature map之后做的,这样可以不用对所有的区域进行单独的CNN Forward步骤。
Fast R-CNN框架如下图:
图3 Fast R-CNN框架
Fast R-CNN框架与R-CNN有两处不同:
① 最后一个卷积层后加了一个ROI pooling layer;
② 损失函数使用了multi-task loss(多任务损失)函数,将边框回归直接加到CNN网络中训练。分类Fast R-CNN直接用softmax替代R-CNN用的SVM进行分类。
Fast R-CNN是端到端(end-to-end)的。
具体可参考http://blog.csdn.net/shenxiaolu1984/article/details/51036677
三、Faster R-CNN目标检测
3.1 Faster R-CNN的思想
Faster R-CNN可以简单地看做“区域生成网络RPNs + Fast R-CNN”的系统,用区域生成网络代替FastR-CNN中的Selective Search方法。Faster R-CNN这篇论文着重解决了这个系统中的三个问题:
1. 如何设计区域生成网络;
2. 如何训练区域生成网络;