深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构
Posted 刘润森!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构相关的知识,希望对你有一定的参考价值。
@Author:Runsen
Faster R-CNN
由于Fast R-CNN 过程中仍然存在一个瓶颈,即ROI Projection。众所周知,检测对象的第一步是在对象周围生成一组潜在的边界框。在 Fast R-CNN 中,ROI Projection是使用Selective Search创建的,发现一个非常缓慢的过程是整个对象检测过程的瓶颈。
选择性搜索是一个缓慢且耗时的过程,会影响网络的性能。因此,任少清等人提出了一种对象检测算法,该算法消除了选择性搜索算法,让网络学习了区域提议区域提议。
Faster R-CNN与 Fast R-CNN 类似,图像作为输入,提供给提供卷积特征图的卷积网络。不是在特征图上使用选择性搜索算法来识别区域提议,而是使用单独的网络来预测ROI Projection。然后使用 RoI 池化层对预测的区域建议进行重新整理,然后使用 RoI 池化层对建议区域内的图像进行分类并预测边界框的偏移值。
从上图可以看出,Faster R-CNN 比Fast R-CNN要快得多。因此,它是目前先进的目标检测算法。
为什么不将这些相同的 CNN 结果重用于区域提议,而不是运行单独的选择性搜索算法
让我们看一个Faster R-CNN的思想,首先,让我们了解一下具有不同纵横比和尺度的重叠ROI的概念。
从图像中,我们看到很多物体相互重叠。在电视机里看到一辆汽车、一辆自行车、一个拿着电视机的人和一只狗。选择性搜索可以解决这个问题,但我们最终会得到大量的 ROI。我们需要想一个能有效解决这个问题的想法。
如果我们在不同的对象周围绘制边界框,它看起来是这样的。
实现这一点有点复杂,但 Anchor Boxes 的想法使它变得简单。让我们了解这些锚框的含义。
通常,对象可以放入方形盒子中,也可以放入长方形和宽,或长方形和高。从广义上讲,它们可以说是大的、小的或中等的。因此,通过实验发现,可以使用 3 种不同比例和 3 种不同纵横比的框检测图像中的任何对象。
在Feature Map上使用不同大小的滑动窗口(如上图的9个所示)。这个概念被称为特征金字塔。这涉及在特征图顶部使用 9 种不同大小的滑动窗口。
RPN
- 区域提议网络 (RPN) 从将输入图像馈送到卷积神经网络开始。首先调整输入图像的大小,使其最短边为 600 像素,长边不超过 1000 像素。
- 网络的输出特征(由
H x W
表示)通常比输入图像小得多,这取决于网络模型的步幅。在Faster R-CNN论文中使用的两个网络模型(VGG、ZF-Net),网络步长都是 16。这意味着网络输出特征中的两个连续像素对应于输入图像中相距 16 个像素的两个点。
下图显示了 在输入图像上,3 种不同纵横比和 3 种不同尺寸的 9 个可能的锚点放置,使用的锚点具有 128²、256²、512²
的 3 个盒子区域比例和 1:1、1:2 和 2:1 的 3 个纵横比。
Faster R-CNN架构
如下为整体框架结构,结合上述过程来看,主要是三部分,Extrator进行特征提取、RPN 生成候选框、RoIHead对候选框进行分类并调整目标预测框的位置与大小。
Faster R-CNN使用了预训练的VGG16作为backbone进行特征提取,实现方法是加载预训练模型,抽取并分离前面的卷积层和后面的全连接层,固定卷积层中部分层的权重,用作特征提取,而全连接层则给 RoIHead 用作分类和回归。
Faster R-CNN 联合训练有 4 个损失:
- RPN分类(IoU 大于 0.5 Object foreground/ IoU 介于 0.1 和 0.5background)
- RPN 回归(Anchor → ROI)
- Fast RCNN 分类(对象类)。
- Fast RCNN 回归(ROI → Bounding Box)
总结,R-CNN 和 Fast R-CNN 都使用基于 CPU 的区域提议算法,例如选择性搜索算法,每张图像大约需要 2 秒并在 CPU 计算上运行。Faster R-CNN论文通过使用另一个卷积网络(RPN)来生成区域提议来解决这个问题。这不仅将每个图像的区域提议时间从 2 秒降低到 10 毫秒,而且还允许区域提议阶段与以下检测阶段共享层,从而导致特征表示的整体改进。
以上是关于深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构的主要内容,如果未能解决你的问题,请参考以下文章
深度学习和目标检测系列教程 4-300:目标检测入门之目标变量和损失函数
深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构
深度学习和目标检测系列教程 19-300:关于目标检测APIoU和mAP简介