YOLO v2 – 对象检测


在速度方面,YOLO 是对象识别领域最好的模型之一,能够以高达 150 FPS 的速率识别对象并处理帧,适用于小型网络。然而,就准确率 mAP 而言,YOLO 并不是最先进的模型,但在 PASCAL VOC2007 和 PASCAL VOC 2012 上训练时,平均精度 (mAP) 相当好,为 63%。然而,当时最先进的 Fast R-CNN 的 mAP 为 71%。

YOLO v2 和 YOLO 9000 由 J. Redmon 和 A. Farhadi 于 2016 年在题为“YOLO 9000:更好、更快、更强”的论文中提出。在 67 FPS 时,YOLOv2 的 mAP 为 76.8%,在 67 FPS 时,它在 VOC 2007 数据集上的mAP 为78.6%,优于更快的 R-CNN 和 SSD 等模型。YOLO 9000 使用 YOLO v2 架构,但能够检测到 9000 多个类。然而,YOLO 9000 的 mAP 为 19.7%。

让我们看看 YOLO v2 的架构和工作:

架构变化与 YOLOv1:

与 Fast R-CNN 等最先进的方法相比,以前的 YOLO 架构存在很多问题。它犯了很多本地化错误,而且召回率很低。所以,本文的目标不仅是改善 YOLO 的这些缺点,而且要保持架构的速度。基本 YOLO 中进行了一些增量改进。让我们在下面讨论这些变化:

Darknet-19 简化版

  • 批量归一化:
  • 通过在架构中添加批量归一化,我们可以提高模型的收敛性,从而加快训练速度。这也消除了应用其他类型的归一化的需要,例如没有过拟合的 Dropout。还观察到,与基本 YOLO 相比,单独添加批量归一化会导致 mAP 增加 2%。
  • 高分辨率分类器:
  • 以前版本的 YOLO 在训练期间使用 224 *224 作为输入大小,但在检测时,它需要的图像大小最大为 448*448。这会导致模型调整到新的分辨率,进而导致 mAP 降低。
  • YOLOv2 版本在 ImageNet 数据上以更高的分辨率 (448 * 448) 训练 10 个时期。这让网络有时间调整过滤器以获得更高的分辨率。通过在 448*448 图像大小上进行训练,mAP 增加了 4%。
  • 将锚框用于边界框:
  • YOLO 使用全连接层来预测边界框,而不是像 Fast R-CNN、Faster R-CNN 那样直接从卷积网络预测坐标。
  • 在这个版本中,我们删除了全连接层,而是添加了锚框来预测边界框。我们在架构中进行了以下更改:

具有 1 个以上锚点的边界框(将提供更准确的定位)

  • 我们删除了负责预测边界框的全连接层,并将其替换为锚框预测。

删除了图层的 YOLOv1(填充红色)

  • 我们将输入的大小从 448 * 448 更改为 416 * 416。当我们将其下采样 32 倍时,这将创建一个大小为 13 * 13 的特征图。这背后的想法是,对象很有可能位于特征图的中心。
  • 删除一个池化层以获得 13 * 13 的空间网络,而不是 7*7
  • 通过这些更改,模型的 mAP 略有降低(从 69.5% 到 69.2%),但召回率从 81% 增加到 88%。

每个对象提案的输出


  • 维度集群:
  • 我们需要确定生成的锚点(先验)的数量,以便它们提供最佳结果。现在让我们以 K 为例。我们的任务是确定具有最高准确性的图像的前 K 个边界框。为此,我们使用 K-means 聚类分析算法。但是,我们不需要最小化欧几里得距离,而是最大化 IOU 作为该算法的目标。
  • YOLO v2 使用 K=5 来更好地权衡算法。从下图中我们可以得出结论,随着 K=5 值的增加,精度不会发生显著变化。
  • 基于 K = 5 的基于 IOU 的聚类得到 61% 的 mAP。

维度集群(每个锚点的维度数)与 mAP


  • 直接位置问题:
  • 以前版本的 YOLO 对位置预测没有约束,这使得它在早期迭代时不稳定。YOLOv2 预测 5 个参数 (tx、 ty、 tw、 th、 to(客观性分数))并应用 sigma 函数来约束其值介于 0 和 1 之间。


  • 此直接位置约束将 mAP 增加 5%。YOLO v2 – 对象检测的图6YOLO v2 – 对象检测的图7
  • 细粒度功能 :
  • 生成 13 * 13 的 YOLOv2 足以检测大型物体。但是,如果我们想检测更精细的对象,我们可以修改架构,将前一层 26 * 26 * 512 的输出更改为 13 * 13 * 2048,并与原始的 13 * 13 * 1024 输出层连接,使我们的输出层大小。
  • 多尺度训练:
  • YOLO v2 使用 32 步长在 320 * 320 到 608 * 608 的不同输入大小上进行了训练。此体系结构为每 10 个批次随机选择图像尺寸。可以在准确性和图像大小之间建立权衡。例如,图像大小为 288 * 288 且帧速率为 90 FPS 的 YOLOv2 提供的 mAP 与快速 R-CNN 一样多。
  • YOLO v2 – 对象检测的图8

架构:

YOLO v2 在不同的架构上进行了训练,例如 VGG-16 和 GoogleNet。该论文还提出了一种称为 Darknet-19 的架构。选择 Darknet 架构的原因是它的处理要求比其他架构低 5.58 FLOPS(相比之下,VGG-16 上的 30.69 FLOPS 图像大小为 224 * 224,定制的 GoogleNet 为 8.52 FLOPS)。Darknet-19 的结构如下:

出于检测目的,我们替换了此架构的最后一个卷积层,而是每 1024 个滤波器添加三个 3 * 3 卷积层,然后添加 1 * 1 卷积层,其中包含我们需要检测的输出数量。

对于 VOC,我们预测 5 个框和 5 个坐标(吨x、 ty、 tw、 th、 to(客观性分数))每个盒子有 20 个等级。所以过滤器的总数是 125。

Darknet-19 架构

Darknet-19 架构

训练:

YOLOv2 的训练有两个目的:

  • 对于分类任务,该模型在 ImageNet-1000 分类任务上训练了 160 个时期,使用 Darknet-19 架构,起始学习率为 0.1权重衰减为 0.0005动量为 0.9。此培训应用了一些标准的数据增强技术。
  • 为了进行检测,我们上面讨论过的 Darknet-19 架构中进行了一些修改。该模型在启动时训练了 160 个 epoch学习率 10-3权重衰减为 0.0005动量衰减为 0.9。在 COCO 和 VOC 上训练模型的策略相同。

结果和结论:

不同对象检测框架的结果

YOLOv2 在 PASCAL VOC 和 COCO 上提供了最先进的检测精度。它可以在不同尺寸上运行,从而在速度和准确性之间进行权衡。在 67 FPS 时,YOLOv2 可以提供 76.8 的 mAP,而在 40 FPS 时,检测器的精度为 78.6 mAP,优于更快的 R-CNN 和 SSD 等最新模型,同时运行速度明显快于这些模型。

不同物体检测的速度与精度曲线

该模型也是 YOLO9000 模型的基础,该模型能够实时检测 9000 多个类。

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1
1