目标检测 Faster R-CNN 论文笔记

本文详细解读Faster R-CNN论文,它通过Region Proposal Network(RPN)解决了目标检测中时间瓶颈问题,实现了与检测网络共享特征,提升了速度和精度。在VGG-16模型下,Faster R-CNN达到5fps的速度和73.2%的VOC 2007 mAP。
摘要由CSDN通过智能技术生成

目标检测 Faster R-CNN 论文笔记


论文名称:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks点我下载

Faster R-CNN算法基于R-CNNFast R-CNN改进得来,如果你对它们尚不了解,可以看看 R-CNNFast R-CNN 的相关知识。


0. 摘要

  • R-CNN的提出开创了目标检测新篇章,随后的SPPnet和Fast R-CNN明显减少了R-CNN的训练和测试时间。现在,减少时间的瓶颈就在于候选区域生成过程,生成候选区域的时间比检测网络要高出好几个数量级。
  • 针对这个问题,作者提出了 RPN(Region Proposal Network) 代替之前的 Selective Search 算法。RPN与检测网络共享特征,因此在候选区域上几乎不耗费额外时间。并且由于RPN的fully-concolutional特征,它可以实现end-to-end训练,比之前的Selective Search要快了不少。
  • 使用VGG-16模型时,GPU上实现了5fps的速度,且在VOC 2007的mAP达到73.2%,VOC 2012 的mAP达到70.4%,每张图片只用300个候选区域。

1. 简介和相关工作

  • 这一块没有什么需要特别交代的,该说的在摘要里已经说过了,因此略去。对此有兴趣的可以翻翻原文。

2. Faster R-CNN分析

  • RPN网络只是Faster R-CNN提取区域的部分。整个Faster R-CNN框架如下:
    这里写图片描述
  • 作为对比,Fast R-CNN框架如下,结构用框图不好描述,具体检测过程见http://blog.csdn.net/cyiano/article/details/70141957#t3
    Fast R-CNN框架
  • 可以发现,候选区域的提取从预处理(SS)变成了后续处理(RPN)。RPN完全包含在整个卷积神经网络之中,模型大大得到了简化。

CNN部分

  • CNN部分采用在分类方面效果良好的网络就足够了。作者选择了两种网络:ZFVGG。前者有5层可以共享参数的卷积层,而后者有13层。CNN部分的输出应该是一个W*H*R的特征图。

RPN部分

  • RPN部分的工作原理用论文中的插图就可以说清楚了。RPN主要涉及到了两个重要的操作:Sliding WindowTranslation-Invariant Anchors。:
    RPN结构

  • Sliding Window

    • Sliding Window我们再熟悉不过了。早期的区域候选算法就是基于滑动窗,卷积神经网络的卷积层操作也多少有点滑动窗的影子。给定一定步长,让窗口(作者设其大小为3*3)遍历整个feature map,每个窗口都将被映射成低维的特征向量(256-d for ZF and 512-d for VGG)。
  • Translation-Invariant Anchors

    • Translation-Invariant具体含义是什么本人不太清楚。。。我猜测意思可能是从候选区域转换到图片(边界框)的过程不变,也就是说每一个候选区域的转换过程都共享同一组参数。
    • 对于每个sliding-window location,网络同时预测k个候选框(作者设K=9),它们的中心和滑动窗口中心是一样的,这9个候选框就是所谓的“Anchors”。既然如此,reg layer将生成4k个输出(k个框,每个框用4个参数描述),cls layer生成2k个输出(每个框有两个scores,分别描述是物体/不是物体的可能性,至于为什么要用两个分数来评判,不是很清楚)。

损失函数部分

  • 训练时,有两类anchors被标记为1:与某个真实框IOU最大的和与某个真实框IOU大于0.7的;IOU小于0.3的被标记为0;其他的不用于训练。
  • 在Faster R-CNN中,作者依然采用上一版本中的多任务损失(如下),但稍有改动。关于参数的解释也贴出来了,但是 Ncls 和是 Nreg 这两个是什么意思不明白,文章好像也没有交代。
  • 另外, ti ti 数组的展开形式的解释本人也看不明白,我就贴在下面了,希望有大佬可以帮忙指点一下~~
  • 作者对bounding-box regression算法也做了相应改动。原先的边框回归方法是对来自任意大小区域的特征进行边界回归,并且所有不同大小的区域共享同一组权重;在Faster R-CNN中,由于sliding window的加入,用于回归的feature vector在特征图上具有相同的空间大小(n*n),为了从n*n生成k种anchors,则需要k组不同大小的权重(否则没法实现多种尺寸)。这看似增加了参数,但实际上并不影响。
    image_1bdjfhcgo1uiv1rga6rnqbu1kje13.png-17.2kB
    image_1bdjfp6idpd0tdf1no5tvr17ck2n.png-255.8kB

优化

  • 作者着重说了mini-batch的正负样本分配问题。如果对所有anchors随机优化,由于负样本居多,因此训练会逐渐偏向负样本(翻译不来了。。原文是 this will bias towards negative samples as they are dominate.)。改进方法是在一张图片中随机采256个anchors,其中正负样本比例为1:1。如果正样本不足128,再用负样本补齐。
  • 其他训练细节不再赘述了,贴出原文:

    We randomly initialize all new layers by drawing weights from a zero-mean Gaussian distribution with standard deviation 0.01. All other layers (i.e., the shared conv layers) are initialized by pretraining a model for ImageNet classification , as is standard practice. We tune all layers of the ZF net, and conv3 1 and up for the VGG net to conserve memory. We use a learning rate of 0.001 for 60k mini-batches, and 0.0001 for the next 20k mini-batches on the PASCAL dataset. We also use a momentum of 0.9 and a weight decay of 0.0005. Our implementation uses Caffe.
    

封装

  • 为了实现但尺度的特征提取,作者将图像重新缩放,使得更短的一边为600像素;
  • 滑动窗的步长为16(即窗口每次移动的距离);
  • 9种anchor的尺寸为:三种面积{ 1282,2562,5122 } 和三种长宽比{1:1, 1:2, 2:1} 的排列组合。当然最后回归得到的anchor尺寸只是近似,不是严格等于;
  • 由于512*512这种超大anchor的存在,势必会出现anchor超出图像的情况。处理方法是训练阶段忽视这些anchor,但在测试阶段加以考虑,并强行把超出图片的部分压缩到图片内
  • 有时会出现很多个anchor对应同一物体的情况,作者提出NMS(non-maximum suppression)算法来解决这个问题。具体操作并不清楚。。。

卷积特征共享

  • 再看看上面Faster R-CNN的结构图,CNN(Fast R-CNN)和RPN之间有一个共享的Feature map,而Fast R-CNN和RPN应该是单独训练的,如何实现feature map的共享呢?作者给出如下训练方法:
    • 先训练RPN,用imagenet预训练,得到许多候选区域;
    • 用第一步得到的候选区域训练Fast R-CNN,同样先用imagenet预训练;
    • 用detector网络训练RPN,但共享卷积层的参数不变,只微调RPN独有的部分。这一步开始实现了卷积层共享;
    • 只微调Fast R-CNN的全连接层(cls layer部分)。

3. 实验和结论

只放一些有用的结论:

  • 卷积层共享对提高性能起了很大作用。如果不共享卷积层mAP会下降1.3%左右;
  • 使用RPN效果的确比使用SS或EB好;
  • The cls scores account for the accuracy of the highest ranked proposals(抱歉不会翻译。。。);
  • 高质量的候选框主要归功于reg layer的回归处理,直接用RPN的anchor还不够准确;
  • 如果将ZF-net替换成VGG-net,mAP会提升,但也是以时间作为代价的;
  • 与SS相比,当每张图的候选区域从2000减少到300时,RPN的召回率下降不大,这也要归功于cls layer。(博主还不知道什么叫召回率嗯。。)
  • One-Stage Detection(Overfeat)Two-Stage Proposal + Detection(本文)性能要低,且速度要慢,这是因为Overfeat中有相当多的候选框要处理。
  • 最后,再贴上论文中各种实验的表格,内容在标题上已经写明了:
    image_1bdjljd2n15m2uab17nd18i11eie34.png-183.2kB
    image_1bdjljqvq1skj1vopcd7bf1hfq3h.png-247.2kB
    image_1bdjlk9kuda61vj2198i1cjk19i33u.png-82.9kB
    image_1bdjlkhlo46a1mkg1bd4mp29qq4b.png-91.8kB
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值