Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks(论文阅读)
论文名:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
论文作者:Shaoqing Ren et.al.
期刊/会议名:NIPS 2015
发表时间:2016-1
论文地址:https://arxiv.org/abs/1506.01497
源码:https://github.com/rbgirshick/py-faster-rcnn
1.引言
Faster R-CNN是在Fast R-CNN的基础上进一步加速的。
2.相关工作

Fast R-CNN对整张输出图像进行处理时,通过预设的一系列卷积层生成该图像的特征图,随后利用RoI投影技术将候选区域映射到相应的区域特征图中,接着通过RoI池化操作将候选区域特征转换为固定尺寸的标准特征图,并通过该标准候选区域特征实现对目标类别及精确定位结果的识别过程。然而,该算法在实现实时性方面存在局限性,因为其忽略了Region proposals生成所需的时间开销这一前提条件。实际上,Fast R-CNN算法除了上述工作流程之外,还需要额外的功能模块用于从原始图像中自动生成多个候选区域,只有当这些候选区域被生成后才能进行后续的操作。从单个过程来看,Fast R-CNN确实具备了良好的检测性能能力;但当实际应用于测试阶段时,必须首先完成候选区域的生成工作才能获得最终的结果反馈。值得注意的是,尽管候选区域生成过程对于算法的整体性能有着重要影响,但这一阶段往往耗时较长且复杂度较高,因此成为了制约算法实时性应用的关键瓶颈环节之一
3.Faster R-CNN
之前的R-CNN、SPPnet、Fast R-CNN在这一阶段均采用了selective search这一区域建议方法进行特征提取与候选区域生成过程的结合与优化尝试。然而由于该算法在速度上存在明显不足导致研究者转而采用edge boxes算法进行改进尝试但该算法同样未能显著提升效率为此我们不得不深入探讨现有技术瓶颈并寻求新的解决方案为此提出了基于卷积神经网络(CNN)加速计算的想法这种方法虽然有效但也存在一些局限性主要体现在未能实现计算资源的最佳利用率为此我们引入了共享计算的概念即希望能够在同一张图片中同时完成候选区域生成与特征提取两个关键步骤从而实现资源的有效复用这一思路直接启发了Faster R-CNN的设计方案其核心创新在于通过深度卷积神经网络实现候选区域生成过程并将其命名为region proposal network缩写为RPN这样不仅简化了系统架构还显著提升了整体性能表现具体来说该算法通过将候选区域生成过程与特征提取过程合并使得两个任务得以在同一时间线上完成从而实现了计算资源的最大化复用这种设计使得候选区域生成的速度从最初的每秒两帧降至现在的每秒10帧这一性能提升无疑是巨大且具有里程碑意义基于此我们可以清晰地看到Faster R-CNN所具有的创新性和技术深度这也为其在计算机视觉领域中的广泛应用奠定了坚实的基础

输入一张图像会通过深度卷积网络计算得到其卷积特征图,并将此特征图传递给RPN模块以生成候选区域的位置;接着通过对原始特征图进行ROI投影处理以获得RoI区域的特征,并基于这些候选区域的特征进行分类与回归处理。同样地,在Fast R-CNN架构中也会执行类似的步骤;不过两者的主要区别在于,在Fast R-CNN中是利用原图上的一个耗时的selective search算法独立地产生候选区域位置;而Faster R-CNN则是在共享的卷积特征空间中直接运用RPN模块来生成候选区域位置;因此,在Faster R-CNN算法中,关键创新点在于用RPN模块取代了传统的SS算法
3.1.RPN


这个RPN网络位于该黄箭头旁的位置上,并会让人产生一种错觉:即RPN网络仅涉及这一过程。然而这并不完全准确因为RPN其最根本的作用是利用CNN来实现这一过程。因此它实际上指的是从输入原始图像到生成候选区域的完整流程只不过其中前面的卷积层恰好与Fast R-CNN实现了层上的共享。因此在阅读博客内容时你会看到有些人将RPN简单地理解为卷积操作而另一些人则将其视为一个完整的网络体系两者具体采用哪种形式需根据上下文语境来确定而在本文中作者倾向于将RPN视为一个完整的网络体系
它接收的是图片作为输入,并输出一系列矩形的目标建议区域。在最后一个共享卷积层生成的空间金字塔特征图上运行一个小网络,在这个过程中我们并没有直接使用RPN而是采用了另一种方法来生成目标建议。这就证明了作者所说的RPN实际上是整个过程的一部分而非单独的部分。

假设有H × W尺寸的一个特征图,并且该特征图包含c个通道。在此情境中仅展示了其中一个通道的情况:如果C设为256,则理论上剩余还有255个通道(即同样尺寸)的特征图存在。假设我们设定的空间窗口尺寸为3 × 3,则需要将这一区域内的所有(H × W) × 256通道(即局部)特征传递给后续的小网络使其能够基于这些局部特征求取原始图像相应局部是否存在候选框的可能性。确定完当前位置后将此窗口向右移动一小格并再次检查该(H × W) × 256维度空间中的局部是否能生成候选框如此不断移动至图像右下角边缘处则可获得整个图像上所有位置对应的候选框信息
当移动到特定位置时,该网络内部执行了哪些操作?每个滑动窗口被映射至一个低维特征空间。若该层采用的是ZF模型,则该低维特征具有256个通道数量;若采用VGG模型,则通道数则增加至512。这些低维特征随后会被两个并行的全连接层接收处理:其中一个层负责框回归任务;另一个则用于分类操作。整个过程体现了该小网络的核心功能机制。

在图三中展示了针对特定的一个3×3x256通道设计了一个窗口,在此过程中通过中间层级生成了一个256维的空间,并将此空间的信息传递至分类器以识别类别;接着将此空间的数据传递至回归器以确定目标位置。对于中间层级的设计方案,则采用了另一个三维卷积模块进行处理;而对于分类器部分,则可以选择使用单通道卷积或全连接网络配合Softmax激活函数完成识别任务;而回归器部分同样支持这两种方案。

3.1.1 Anchors
接下来解释一下为什么这里输出的是2K和4K?
在这个地方(4)相对容易理解。这是因为整个RPN网络的主要目标是根据特定区域的特征,在原始图像中相应位置附近生成候选矩形框的中心点以及宽度和高度参数(共4个参数),这些信息足以唯一确定一个矩形框的位置。因此,在此位置上就是4的数量值。在这个理想状态下(红色框所示),马的位置应该是精确匹配的目标点;然而,在实际应用中(RPN模型),输出结果并不总是如此精确可靠;因此必须依靠另一个分支预测的结果(即2)来评估每个候选框是否包含目标物体。输出应为每个候选框对应的目标存在与否的概率值分布情况。那么问题来了:为什么这些输出结果后面都跟了一个K呢?这是因为目标检测领域中的一个重要概念——锚框(Anchor)。所谓锚框其实就是参考基准框,在利用特定区域特征生成候选框时,并不是凭空产生这些随机基准框(因为这样的随机基准效果通常不够好)。所以为了提高检测精度,在生成候选框之前就需要预先定义一组高质量的基础参考基准框(共有K个),然后通过计算每个基准框架偏移量的方式来得到最终的目标定位结果

以K=3为例进行说明,在这一区域中设置了三个独特的参考框。每个框均负责预测与其形状相似的候选框。其中黄框生成的4值对应于马所在位置的候选区域边界;紫色边界值则指向人所在位置的关键区域;而蓝色边界值可能指向另一个潜在的目标范围。若该区域不包含特定目标,则其对应的检测概率较低;随后可通过筛选这些低概率候选方块来去除不必要的边界。因此该网络输出包括2K个基础边界块和4K个增强边界块。
这里还有一个问题需要解决就是这些anchor默认的尺寸和比例需要怎么去确定?作者也在这里写了在每一个滑动位置,作者默认都使用三个尺度和三个长宽比的anchor,共就是九个anchor。带3.3在3.3小节实现细节,这里作者也写了对于anchor来说,作者使用的三个尺度分别是128的平方,256的平方和,512平方的像素值大小的这个anchor,并且每个尺度都有三个长宽比分别是一比一,一比二和二比一。所以说如果这个蓝框就是128平方,一比一长宽比的话,这个紫框就是同尺度下一比二长宽比的anchor,这个黄框就是同尺度下二比一长宽比的anchor。除了128平方面积大小的这个anchor外,还有256大小的anchor和512大小的anchor,然后以及它们相对应的各自一比一,一比二,还有二比一比例的anchor,这就一共构成了九个anchor。每个anchor负责预测这个区域内和它们形状比较接近的候选框,这九个anchor一般足以覆盖你使用的数据集里边的目标形状。
作者在后文中提到如果采用COCO数据集时,则会因为QQ数据集中这类小目标数量较多而采取相应措施,在此情况下额外增加了64平方这一尺寸来专门解决此类问题。这些 anchor 大小设置的原则性也很强,在不同场景中通常会根据不同类型的数据集合相应的 anchor 进行设计配置;当 anchor 尺寸与检测目标尺寸越匹配时,在实际应用中所获得的效果也会越好。值得注意的是,在这篇论文中一共采用了9个不同的 anchor 大小进行配置,并且这种设计特点使其具备了较强的适应性与平移不变性特征;因此在后续讨论过程中将主要围绕基于锚框的设计展开分析
3.1.2损失函数
RPN网络的主要损失函数是通过衡量模型训练过程中预测结果与实际结果之间的差异来实现预测准确性的一种方法。该网络的总损失函数主要包含分类损失部分和回归损失部分。

3.2 RPN和Fast R-CNN的共享特征
在本节中详细探讨了以下三种具体的训练策略:异步优化方法、混合优化策略以及并行优化方案。

在交替训练过程中, 首先作者会单独训练一个RPN网络, 这是由于该RPN网络能够生成候选区域. 接着, 作者会利用这些候选区域单独对Fast R-CNN网络进行训练. 在这一阶段中, Fast R-CNN网络将利用第一步中获得的预处理权重来进行参数初始化. 此后, 在第三步中, 作者将固定共享卷积层的同时微调RPN的独特模块以优化其结构. 最终在第四步中, 作者将继续固定共享卷积层并仅对Fast R-CNN的独特后期模块进行微调. 通过这种四阶段交替训练方法, 初始阶段分别独立优化了两个模型的基础参数. 最终结果表明, 经过这四步交替优化后, 原始模型中的共享参数已经实现了完全统一. 这种方法使得最终得到的Faster R-CNN模型不仅具备优秀的候选区域提取能力, 同时也能高效地从特征图中提取出具有代表性的候选区域特征
在方法二的近似联合训练框架中,将RPN与Fast R-CNN整合成为一个完整的网络结构,在每一次输入一张完整的图像进行传播的情况下,RPN网络会产生对应的损失信息,Fast R-CNN也会产生相应的损失值。因此,RPN网络对应的损失与Fast R-CNN对应的损失分别被计算出来后就可以直接相加得到总的损失函数值并用于参数优化过程。为了实现这一点我们可以直接将两者进行融合形成一个统一的目标函数然后通过反向传播算法对其进行优化从而解决问题这一思路相对直接但存在一定的局限性
方法三被称为非近似联合训练;既然如此,则能够解决方法二中无法求取坐标偏导数的问题。具体来说,在方法三中采用了RoI warping这个模块。
4.实验
4.1.PASCAL VOC实验




4.2.MS COCO实验


参考视频
在目标检测领域中深入解析Faster R-CNN算法的原理及其实现细节讲解
