【论文学习笔记003】Faster RCNN

1.论文信息

题目 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
作者 Shaoqing Ren & Kaiming He & Ross Girshick & Jian Sun
年份 2015
期刊 NIPS
论文地址 https://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf
项目地址 https://github.com/rbgirshick/py-faster-rcnn

2. 论文创新点

  • 设计了RPN网络,利用CNN卷积后的特征图生成候选区域,取代了SS和EB等方法,极大地提升了生成候选区域的速度;
  • 训练RPN与Fast RCNN共享部分卷积层,极大地提升了检测速度;

3.欲解决的问题

  • 在候选区域,特征提取,分类回归三大任务中,候选区域采用SS或EB等方法仍很耗时。

4.解决方案

4.1 概述

在这里插入图片描述

  • 网络结构图如上所示。
  • 首先,任意大小的图片输入CNN,经过共享的卷积层,一方面得到RPN的特征图,另一方面继续前向传播至特有的卷积层,产生高维特征图;
  • 其次,特征图经过RPN网络得到区域建议和区域得分,对区域得分采用NMS,输出TOP-N得分的区域建议给Fast RCNN网络的ROI池化层;
  • 最后,RPN的区域建议与Fast RCNN的区域建议同时输入ROI池化层,提取对应区域建议的特征,通过全连接层,输出该区域的分类得分以及回归后的bbox
4.2 RPN

在这里插入图片描述

  • 单个RPN网络结构图如上所示。
  • 首先,输入任意大小的图片,利用ZF或VGG16网络的部分卷积层产生原始图片的特征图;
  • 其次,用nxn的滑动窗口在特征图上滑动扫描,每个滑窗位置通过卷积层映射到一个低维的特征向量(ZF:256;VGG:512),然后采用ReLU激活函数,同时为每个滑窗位置考虑k(k=9)种可能的参考窗口(anchors),因此,每个滑窗位置最多可预测9个区域建议(超出边界的不考虑);
  • 最后,低维特征向量输入两个并行的卷积层(reg窗口回归层,cls窗口分类层),分别产生bbox和分类得分,其中reg输出4k个参数(x,y,w,h),cls输出2k个参数(前景概率,背景概率)
4.3 Anchors

在这里插入图片描述

  • anchors示意图如上所示
  • anchors是一组大小固定的参考窗口,有三种尺度(128x128,256x256,512x512)和三种长宽比(1:1,1:2,2:1)
  • 根据图像大小计算滑窗中心点对应原图区域的中心点,通过中心点和大小就可以得到滑窗位置和原图位置的映射关系,由此原图位置并根据与ground truth重复率贴上正负标签,让RPN学习该anchor是否有物体
  • anchors方法具有平移不变性,即图像中平移了物体,窗口建议也会平移;同时这种方式减少了模型大小,输出层512x(4+2)x9个参数(512是前一层特征维度,4和2分别是bbox参数及前景背景概率,9是参考窗口个数),较小的参数在较小的数据集上能降低过拟合的风险
4.4 RPN训练
  • RPN训练时对正样本有两种定义:一是与ground truth box有最大的IOU的anchors作为正样本;二是与ground truth box的IOU大于0.7的作为正样本
  • RPN训练定义的负样本为与ground truth box的IOU小于0.3的样本;其余的不参与训练
  • RPN训练的loss函数如下式所示。
    L ( { p i } , { t i } ) = 1 N d s i L c l s ( p i , p i ) + λ 1 N r e g i p i L r e g ( t i , t i ) L\left(\left\{p_{i}\right\},\left\{t_{i}\right\}\right)=\frac{1}{N_{d s}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right)+\lambda \frac{1}{N_{r e g}} \sum_{i} p_{i}^{*} L_{r e g}\left(t_{i}, t_{i}^{*}\right)
    其中,i表示mini-batch中第i个anchor, p i p_{i} 表示第i个anchor是前景的概率,当第i个anchor是前景时 p i p_{i}^{*} 为1反之为0, t i t_{i} 表示bbox坐标, t i t_{i}^{*} 表示ground truth box的坐标。
  • 坐标的4个参数如下式所示。
    t x = ( x x a ) / w a , t y = ( y y a ) / h a , t w = log ( w / w a ) , t h = log ( h / h a ) t x = ( x x a ) / w a , t y = ( y y a ) / h a , t w = log ( w / w a ) , t h = log ( h / h a ) \begin{aligned} t_{\mathrm{x}}=\left(x-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, & t_{\mathrm{y}}=\left(y-y_{\mathrm{a}}\right) / h_{\mathrm{a}}, \quad t_{\mathrm{w}}=\log \left(w / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}=\log \left(h / h_{\mathrm{a}}\right) \\ t_{\mathrm{x}}^{*}=\left(x^{*}-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}^{*}=\left(y^{*}-y_{\mathrm{a}}\right) / h_{\mathrm{a}}, & t_{\mathrm{w}}^{*}=\log \left(w^{*} / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}^{*}=\log \left(h^{*} / h_{\mathrm{a}}\right) \end{aligned}
    其中, x , x a , x x, x_{\mathrm{a}}, \text x^{*} 分别来自于预测框,anchor框以及ground truth框
4.5 RPN与Fast RCNN的权值共享
  • RPN与Fast RCNN的权值共享是为了降低计算量,提升检测速度
  • 首先,进行RPN的预训练及以区域建议为目的的RPN网络end-to-end微调训练;
  • 其次,进行Fast RCNN预训练,用RPN的区域建议进行以检测为目的的Fast RCNN网络end-to-end微调训练;
  • 再次,利用微调后的Fast RCNN网络重新初始化RPN网络,固定共享卷积层(学习率设置为0),只微调RPN独有的层(共享卷积层);
  • 最后,固定共享卷积层,利用以上得到的区域建议,只微调Fast RCNN独有的层

5.几点思考

5.1 Anchors为什么考虑三种尺度和三种长宽比

在这里插入图片描述

  • 如上图所示,相比于单一尺度和长宽比,采用单尺度多长宽比和多尺度单长宽比都能提升mAP,所以选取了最高mAP的3种尺度和3种长宽比。
5.2 RPN相比于SS与EB方法有何优势
  • 传统方法是训练一个能检测物体的网络,然后对整张图片进行滑窗判断,由于无法判断区域建议的尺度和长宽比,所以需要多次缩放,这样找出一张图片有物体的区域就会很慢;RPN网络的滑窗是在特征图上进行,维度降低了很多倍。

6.论文结果

  • 帧率5fps;
  • mAP在VOC2007和VOC2012上分别为73.2%和70.4%

7.待解决的问题

  • 帧率只有5fps,还没有达到实时。
发布了15 篇原创文章 · 获赞 14 · 访问量 1258

猜你喜欢

转载自blog.csdn.net/chiyukunpeng/article/details/102518562