📜  更快的 R-CNN |机器学习

📅  最后修改于: 2022-05-13 01:55:45.729000             🧑  作者: Mango

更快的 R-CNN |机器学习

将 R-CNN 中的目标检测网络架构改进为 Fast R_CNN。网络的训练和检测时间显着减少,但网络速度不足以用作实时系统,因为在输入图像上生成输出大约需要(2 秒)。架构的瓶颈是选择性搜索算法。因此,K He 等人。提出了一种称为 Faster R-CNN 的新架构。它不使用选择性搜索,而是提出了另一种称为区域提议网络的区域提议生成算法。让我们讨论一下 Faster R-CNN 架构。

更快的 R-CNN 架构

Faster R-CNN 架构包含 2 个网络:

  1. 区域提案网络 (RPN)
  2. 目标检测网络

在讨论 Region 提案之前,我们需要研究 CNN 架构,它是该网络的骨干。这种 CNN 架构在区域建议网络和目标检测网络之间是通用的。我们尝试使用 ZF(具有5 个可共享的 Conv 层)或 VGG-16(具有13 个可共享的 Conv)作为其架构的主干。两个主干网络的网络步长都是 16,这意味着尺寸为1000 * 600的图像在传递到区域提议网络之前被缩小到(1000/16 * 600/16)或大约(~ 62 *37)大小的特征图。

区域提案网络(RPN):
该区域提议网络将主干层生成的卷积特征图作为输入,并输出应用在输入特征图上的滑动窗口卷积生成的锚点。

RPN 的函数(Feature Map to Region Proposal)

锚点:
对于每个滑动窗口,网络生成最大数量的 k-anchor box。默认情况下,对于每个不同的滑动, k=9的值( 3 个比例(128*128、256*256 和 512*512)3 个纵横比(1:1、1:2 和 2:1))图像中的位置。因此,对于W * H的卷积特征图,我们得到N = W * H * k个锚框。然后这些区域建议传递到3*3卷积和1 个填充和256(对于 ZF)512(对于 VGG-16)输出通道的中间层。该层产生的输出被传入两层1*1卷积,分类层和回归层。回归层有4*N (W * H * (4*k))输出参数(表示边界框的坐标),分类层有2*N (W * H * (2*k))输出参数(表示对象或非对象的概率)。

锚生成

训练和损失函数(RPN):
首先,我们移除了所有的跨界锚点,这样它们就不会增加损失函数。对于典型的1000*600图像,大约有20000(~60*40*9)个锚点。如果我们移除跨界锚点,那么每张图像大约剩下6000 个锚点。该论文还基于它们的分类和 IoU 使用非最大抑制。在这里,他们使用0.7的固定 IoU。这也将锚点的数量减少到2000个。使用非最大抑制的优点是它也不会损害准确性。 RPN 可以通过使用反向传播和随机梯度下降进行端到端的训练。它从单个图像的锚点生成每个小批量。它不会在每个锚点上训练损失函数,而是选择256个随机锚点,正负样本 s 的比例为1:1 。如果图像包含 <128 个正样本,则它使用更多负样本。对于训练 RPN,首先,我们需要分配二进制类标签(相关锚点包含对象或背景的天气)。在更快的 R-CNN 论文中,作者使用两个条件将正标签分配给锚点。这些都是 :

  • 那些与真实框具有最高交并比(IoU)的锚,或
  • 与任何真实框的 IoU 重叠高于 0.7 的锚点。

对于所有ground truth box,IoU重叠的负标签<0.3。那些没有正面或负面标签的锚对训练没有贡献。现在损失函数定义如下:

\kern 6pc \mathbf{L\left ( \left \{ p_{i}\right \}, \left \{ t_{i}\right \} \right ) = 1\div N_{cls}(\sum_{i} L_{cls}\left ( p_{i}, p_{i}^{*}\right )) + \lambda \div N_{reg}(\sum_{i} p_{i}^{*} \times L_{reg}\left (t_{i}, t_{i}^{*}\right ))}

其中,p i = 预测的锚点包含或不包含对象的概率。 p i * = 锚点的真实值是否包含和对象。 t i = 预测锚点的坐标。 t i * = 与边界框相关的地面实况坐标。 L cls = 分类器损失(两个类的二进制对数损失)。 L reg = 回归损失(这里,L reg = R(t i- t i *),其中 R 是平滑的 L 1损失)N cls = 小批量大小的归一化参数(~256)。 N reg =回归的归一化参数(等于锚位置的数量~2400)。 \lambda = 10为了使 n=both 损失参数的权重相等。

对象检测网络:
Faster R-CNN 中使用的目标检测网络与 Fast R-CNN 中使用的非常相似。它还兼容 VGG-16 作为骨干网络。它还使用 RoI 池化层来制作固定大小的区域提议和双层 softmax 分类器,并且边界框回归器也用于对象及其边界框的预测。

快速 R-CNN 架构

投资回报率池:
我们将 region proposal 生成的输出作为输入并传递给 RoI pooling 层,这个 RoI pooling 层的函数与它在 Fast R-CNN 中执行的功能相同,可以将 RPN 生成的不同大小的 region proposal 变成一个固定大小的特征地图。我们已经在本文中详细讨论了 RoI 池化。这个 RoI 池化层生成大小为(7*7*D)的输出(其中D = 256 对于 ZF 和 512 对于 VGG-16 )。

Softmax 和边界框回归层:
然后将在 RoI 池化中生成的大小为(7 * 7 * D)的特征图发送到两个全连接层,这些全连接层将特征图展平,然后将输出发送到两个并行的全连接层,每个层分配不同的任务给他们:

  • 第一层是N+1 个输出参数的 softmax 层( N是类标签和背景的数量),用于预测区域提议中的对象。第二层是一个边界框回归层,有4*N 个输出参数。该层回归图像中对象的边界框位置。

Softmax 分类器和边界框回归器

培训(完整架构):
我们已经讨论过训练 RPN,但在这一部分中,我们将讨论训练整个架构。 Faster R-CNN 论文的作者使用了一种称为 4 步交替训练方法的方法。这种方法如下

  • 我们首先使用 ImageNet 权重初始化主干 CNN 网络,并为区域提议微调这些权重。现在,我们如上所述训练了 RPN。
  • 我们使用 RPN 网络生成的提议分别训练对象检测网络。在这一部分中,骨干网络也用 ImageNet 权重初始化,直到现在它还没有连接到 RPN 网络。
  • RPN 现在使用来自检测器网络 (Fast R-CNN) 的权重进行初始化。这一次,只有 RPN 独有的层的权重被微调。
  • 使用新的微调 RPN,对 Fast R-CNN 检测器进行微调。同样,只有检测器网络特有的层被微调,公共层权重是固定的。

结果和结论:

  • 由于 Fast R-CNN 架构的瓶颈是通过选择性搜索生成区域提议。 Faster R-CNN 用自己的 Region Proposal Network 代替了它。与选择性相比,该区域提议网络更快,并且在训练时还改进了区域提议生成模型。与 fast R-CNN 相比,这也有助于我们减少整体检测时间(Faster R-CNN(VGG-16 网络)为0.2秒,而 Fast R-CNN 为2.3秒)。
  • 使用 COCO、VOC 2007 和 VOC 2012 数据集训练时,Faster R-CNN(共享 RPN 和 VGG)生成的 mAP 为78.8% ,而在 VOC 2007 测试数据集上的 Fast R-CNN 中为70%
  • 与选择性搜索相比,Region Proposal Network (RPN) 也对 mAP 的改进贡献很小。

参考 :

  • 快速 R-CNN 论文
  • 更快的 R-CNN 论文