本文最后更新于:14 天前
论文原文
链接:Faster R-CNN
摘要
最先进的目标检测网络依靠区域提出算法来假设目标的位置。SPPnet
和Fast R-CNN
等研究已经减少了这些检测网络的运行时间,使得区域提出计算成为一个瓶颈。在这项工作中,我们引入了一个区域提出网络(RPN)
,该网络与检测网络共享全图像的卷积特征,从而使近乎零成本的区域提出成为可能。RPN是一个全卷积网络,可以同时在每个位置预测目标边界和目标分数。RPN经过端到端的训练,可以生成高质量的区域提出,由Fast R-CNN用于检测。我们将RPN和Fast R-CNN通过共享卷积特征进一步合并为一个单一的网络——使用最近流行的具有“注意力”机制的神经网络术语,RPN组件告诉统一网络在哪里寻找。对于非常深的VGG-16模型,我们的检测系统在GPU上的帧率为5fps(包括所有步骤),同时在PASCAL VOC 2007,2012和MS COCO数据集上实现了最新的目标检测精度,每个图像只有300个提出。
网络结构
- 主干网络:13Conv+13relu+4pooling
- RPN:3x3+背景前景区分+初步定位
- ROIPooling
- 分类+位置精确定位
【VGG-Model】
【RPN】
经典的检测方法生成检测框都非常耗时, 如RCNN使用SS(Selective Search)方法生成检测框。而Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster RCNN的巨大优势,能极大提升检测框的生成速度。
上图展示了RPN网络的具体结构。可以看到RPN网络实际分为2条线
- 粗分类:上面一条通过softmax分类anchors获得foreground和background(检测目标是foreground)
- 粗定位:下面一条用于计算对于anchors的bounding box regression偏移量,以获得粗略的proposal。
而最后的Proposal层则负责综合foreground anchors和bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Proposal Layer这里,就完成了相当于目标定位的功能。
【anchors】
首先使用一个(3, 3)的sliding window在feature map上滑动(就是做卷积,卷积的本质就是卷积核滑动求和),然后取(3, 3)滑窗的中心点,将这个点对应到原图上,然后取三种不同的尺寸(128, 256, 512)和三种比例(1:1, 2:1, 1:2)在原图上产生9个anchor,所以feature map上的每个点都会在原图上对应点的位置生成9个anchor,而我们从上边的分析已经得知feature map的大小为输入图片的1/16倍,所以最终一共有 $\frac m {16} \times \frac n {16} \times 9$ 个anchor。
训练流程
和之前的目标检测网络训练类似,都是在一个预训练网络的基础上进行训练的。一般使用4-step交替训练法来训练Faster R-CNN,主要步骤如下:
- 在ImageNet预训练的网络来训练RPN网络。
- 使用ImageNet预训练的网络来训练一个单独Fast R-CNN检测网络,网络中的proposal是第一步训练RPN网络中得到的porposal。
- 使用上一步训练的detection网络的参数来初始化练RPN网络,并且在训练过程中固定shared conv layers这部分,只更新RPN网络专有的那些层。
- 固定shared conv layers这部分,只更新Fast R-CNN专有的那些层,其中proposal也是上一步训练RPN网络中得到的proposal。
总结
使用方法 | 缺点 | 改进 | |
---|---|---|---|
R-CNN |
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 |
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 |
1、RPN提取RP;2、CNN提取特征;3、softmax分类;4、多任务损失函数边框回归。 | 1、 还是无法达到实时检测目标;2、 获取region proposal,再对每个proposal分类计算量还是比较大。 | 1、 提高了检测精度和速度;2、 真正实现端到端的目标检测框架;3、 生成建议框仅需约10ms。 |
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!