首发于新智元
最新YOLOv3:物体检测速度快SSD和RetinaNet三倍!

最新YOLOv3:物体检测速度快SSD和RetinaNet三倍!

你肯定很少见到这样的论文,全文像闲聊一样,不愧是 YOLO 的发明者。物体检测领域的经典论文 YOLO(You Only Look Once)的两位作者,华盛顿大学的 Joseph Redmon 和 Ali Farhadi 最新提出了 YOLO 的第三版改进 YOLO v3,一系列设计改进,使得新模型性能更好,速度更快。达到相似的性能时,相比 SSD,速度提高 3 倍;相比 RetinaNet,速度提高 3.8 倍。


代码地址:pjreddie.com/yolo/

论文地址:pjreddie.com/media/file


我今年没怎么做研究。我花了很多时间玩 Twitter。玩了一下 GAN。我去年留下了一些工作 [10] [1]; 我设法对 YOLO 进行了一些改进。但是,说实话,不是什么超级有趣的工作,只是做了一系列更新,使它变得更好。我也有帮其他人做了一些研究。

没有错,你看的确实是一篇论文的开头。

今天,新智元为你带来一篇不走寻常路的工作,计算机视觉经典模型 YOLO 作者的更新。

不只是开头,整片文章到处都嵌入诙谐,在结尾处还不忘告诉读者,不要 @他。

放心,大多数研究计算机视觉的人都只是做点令人愉快的、好的事情,比如计算国家公园里斑马的数量 [11],或者追踪溜进他们院子时的猫 [17]。但是计算机视觉已经被用于被质疑的使用,作为研究人员,我们有责任至少思考一下我们的工作可能造成的损害,并思考如何减轻这种损害。我们非常珍惜这个世界。

这是两位有趣的家伙写的有趣的论文。

那么,在作者沉浸 Twitter 的一年里,他们对 YOLO 做了哪些更新呢?

我们对 YOLO 进行了一些更新!我们做了一些小设计,使它的表现更好。我们还对这个新网络进行了训练。更新版的 YOLO 网络比上一版本稍大,但更准确。它的速度也还是很快,这点不用担心。在 320 × 320 下,YOLOv3 以 22.2 mAP 在 22 ms 运行完成,达到与 SSD 一样的精确度,但速度提高了 3 倍。与上个版本的 0.5 IOU mAP 检测指标相比,YOLOv3 的性能是相当不错的。在 Titan X 上,它在 51 ms 内达到 57.9 AP50,而 RetinaNet 达到 57.5 AP50 需要 198 ms,性能相似,但速度提升 3.8 倍。

所有代码都在以下网址提供:pjreddie.com/yolo/


DEMO 视频:

https://www.zhihu.com/video/961994332052570112


简介

我今年没怎么做研究。我花了很多时间玩 Twitter。玩了一下 GAN。我去年留下了一些工作 [10] [1]; 我设法对 YOLO 进行了一些改进。但是,说实话,不是什么超级有趣的工作,只是做了一系列更新,使它变得更好。我也有帮其他人做了一些研究。

这篇文章接下来将介绍 YOLOv3,然后我会告诉你我们是怎么做的。我还会写一下我们尝试过但失败了的操作。最后,我们将思考这一切意味着什么。


YOLOv3

关于 YOLOv3:我们主要是从其他人那里获得好点子。我们还训练了一个更好的新的分类网络。本文将从头开始介绍整个系统,以便大家理解。

图 1:这张图是从 Focal Loss 论文 [7] 拿来并修改的。 YOLOv3 的运行速度明显快于其他性能相似的检测方法。运行时间来自 M40 或 Titan X,基本上用的是相同的 GPU。


边界框预测

在 YOLO9000 之后,我们的系统使用维度聚类(dimension cluster)作为 anchor box 来预测边界框 [13]。网络为每个边界框预测 4 个坐标, t_x , t_y , t_w , t_h 。如果单元格从图像的左上角偏移了 (c_x, c_y) ,并且之前的边界框具有宽度 p_w 和高度 p_h ,则预测对应以下等式:

在训练期间,我们使用平方误差损失的和。如果一些坐标预测的 ground truth 是

梯度就是 ground truth 值(从 ground truth box 计算出来)减去预测,即:

通过翻转上面的方程可以很容易地计算出这个 ground truth 值。


YOLOv3 使用逻辑回归来预测每个边界框的 objectness score。如果边界框比之前的任何其他边界框都要与 ground truth 的对象重叠,则该值应该为 1。如果先前的边界框不是最好的,但确实与 ground truth 对象重叠超过某个阈值,我们会忽略该预测,如 Faster R-CNN 一样 [15]。我们使用. 5 作为阈值。 但与[15] 不同的是,我们的系统只为每个 ground truth 对象分配一个边界框。如果先前的边界框未分配给一个 ground truth 对象,则不会对坐标或类别预测造成损失,只会导致 objectness。

图 2: 具有 dimension priors 和 location prediction 的边界框。我们预测了框的宽度和高度,作为 cluster centroids 的偏移量。我们使用 sigmoid 函数预测相对于滤波器应用位置的边界框的中心坐标。这个图是从 YOLO9000 论文 [13] 拿来的。


类别预测

每个框使用多标签分类来预测边界框可能包含的类。我们不使用 softmax,因为我们发现它对于性能没有影响,而是只是使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失来进行类别预测。

这个公式有助于我们转向更复杂的领域,如 Open Images 数据集 [5]。在这个数据集中有许多重叠的标签(例如,Woman 和 Person)。可以使用 softmax 强加一个假设,即每个 box 只包含一个类别,但通常情况并非如此。多标签方法可以更好地模拟数据。


不同尺度的预测

YOLOv3 可以预测 3 种不同尺度的 box。我们的系统使用一个特征金字塔网络 [6] 来提取这些尺度的特征。在基本特征提取器中,我们添加了几个卷积层。其中最后一层预测三维 tensor 编码的边界框,objectness 和类别预测。我们在 COCO[8]数据集的实验中,每个尺度预测 3 个 box,因此 tensor 为 N×N×[3 *(4 + 1 + 80)],4 个边界框 offset,1 objectness 预测,以及 80 个类别预测。

接下来,我们从之前的 2 个层中取得特征图,并对其进行 2 倍上采样。我们还从网络获取特征图,并使用 element-wise 添加将其与我们的上采样特征进行合并。这种方法使我们能够从上采样的特征和早期特征映射的细粒度信息中获得更有意义的语义信息。然后,我们再添加几个卷积层来处理这个组合的特征图,并最终预测出一个相似的 Tensor,虽然现在它的大小已经增大两倍。

我们再次执行相同的设计来对最终的 scale 预测 box。因此,我们对第 3 个 scale 的预测将从所有之前的计算中获益,并从早期的网络中获得精细的特征。

我们仍然使用 k-means 聚类来确定 bounding box priors。我们只是选择了 9 个 clusters 和 3 个 scales,然后在整个 scales 上均匀分割 clusters。在 COCO 数据集上,9 个 cluster 分别为(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90) ,(156×198),(373×326)。


特征提取器

我们使用一个新的网络来执行特征提取。该新网络是用于 YOLOv2,Darknet-19 的网络和更新的残差网络的混合方法。我们的网络使用连续的 3×3 和 1×1 卷积层,但现在也有一些 shortcut 连接,并且网络的大小显著更大。它有 53 个卷积层,所以我们称之为...... Darknet-53

这个新网络比 Darknet19 强大得多,而且比 ResNet-101 或 ResNet-152 更高效。以下是在 ImageNet 上的结果:

图 2: 具有 dimension priors 和 location prediction 的边界框。我们预测了框的宽度和高度,作为 cluster centroids 的偏移量。我们使用 sigmoid 函数预测相对于滤波器应用位置的边界框的中心坐标。这个图是从 YOLO9000 论文 [13] 拿来的。

每个网络都使用相同的设置进行训练,并在 256×256 的单精度进行测试。Runtime 是在 Titan X 上以 256×256 进行测量的。可以看到,Darknet-53 可与最先进的分类器相媲美,但浮点运算更少,速度更快。Darknet-53 比 ResNet-101 性能更好,而且速度快 1.5 倍。Darknet-53 与 ResNet-152 具有相似的性能,速度提高 2 倍。

Darknet-53 也可以实现每秒最高的测量浮点运算。这意味着网络结构可以更好地利用 GPU,从而使其评估效率更高,速度更快。这主要是因为 ResNets 的层数太多,效率不高。


训练

我们仍然用完整的图像进行训练。我们使用不同 scale 进行训练,使用大量的数据增强,批规范化,等等。我们使用 Darknet 神经网络框架进行训练和测试 [12]。


具体做法和结果

YOLOv3 的表现非常好!请参见表 3。就 COCO 奇怪的平均 mean AP 指标而言,它与 SSD 的变体性能相当,但速度提高了 3 倍。不过,它仍比 RetinaNet 模型差一些。

当时,以 mAP 的 “旧” 检测指标比较时,当 IOU = 0.5(或表中的 AP50)时,YOLOv3 非常强大。它的性能几乎与 RetinaNet 相当,并且远高于 SSD 的变体。这表明 YOLOv3 是一个非常强大的对象检测网络。不过,随着 IOU 阈值增大,YOLOv3 的性能下降,使边界框与物体完美对齐的效果不那么好。

过去,YOLO 不擅长检测较小的物体。但是,现在我们看到了这种情况已经改变。由于新的多尺度预测方法,我们看到 YOLOv3 具有相对较高的 APS 性能。但是,它在中等尺寸和更大尺寸的物体上的表现相对较差。

当用 AP50 指标表示精确度和速度时(见图 3),可以看到 YOLOv3 与其他检测系统相比具有显着的优势。也就是说,YOLOv3 更快、而且更好。

图 3

一些试了没用的方法

我们在研究 YOLOv3 时尝试了很多方法。很多都不起作用。这些可以了解一下。

  • Anchor box x,y 偏移量预测。我们尝试使用常规的 anchor box 预测机制,可以使用线性激活将 x,y 的偏移预测为 box 的宽度或高度的倍数。我们发现这种方法降低了模型的稳定性,并且效果不佳。
  • 线性 x,y 预测,而不是逻辑预测。我们尝试使用线性激活来直接预测 x,y 的偏移,而不是用逻辑激活。这导致了 MAP 的下降。
  • Focal loss。我们尝试使用 Focal loss。这一方法使 mAP 降低了 2 点左右。YOLOv3 对 Focal loss 解决的问题可能已经很强健,因为它具有单独的对象预测和条件类别预测。因此,对于大多数例子来说,类别预测没有损失?或者其他原因?这点还不完全确定。
表 3:再次,这张图来自论文 [7],稍作了调整。这里显示的速度 / 准确度在 mAP 上以 0.5 IOU 度量进行折衷。你可以看到,YOLOv3 很厉害,因为它非常高,而且离左轴远。

双 IOU 阈值和 truth 分配。 Faster RCNN 在训练期间使用两个 IOU 阈值。如果一个预测与. 7 的 ground truth 重叠,它就是一个正面的例子,[.3-.7] 它被忽略。如果对于所有 ground truth 对象,它都小于. 3,这就是一个负面的例子。我们尝试了类似的策略,但无法取得好的结果。


这一切意味着什么

YOLOv3 是一个很好的检测器。速度很快,而且很准确。在 COCO 上,平均 AP 介于 0.5 和 0.95 IOU 时,准确度不是很好。但是,对于 0.5 IOU 这个指标来说,YOLOv3 非常好。

为什么我们要改变指标?原始的 COCO 论文上只有这样一句含糊不清的句子:“一旦评估服务器完成,我们会添加不同评估指标的完整讨论”。Russakovsky 等人在论文中说,人类很难区分 0.3 与 0.5 的 IOU。“人们目测检查一个 IOU 值为 0.3 的边界框,并将它与 IOU 0.5 的区分开来,这是非常困难的事情。”[16] 如果人类都很难区分这种差异,那么它就没有那么重要。

也许更值得思考的问题是:“现在我们有了这些检测器,我们拿它们来做什么?” 很多做这类研究的人都在 Google 或 Facebook 工作。我想至少我们已经知道这项技术已经被掌握得很好了,绝对不会用来收集你的个人信息并将其出售给.... 等等,你说这正是它的目的用途?Oh.

放心,大多数研究计算机视觉的人都只是做点令人愉快的、好的事情,比如计算国家公园里斑马的数量 [11],或者追踪溜进他们院子时的猫 [17]。但是计算机视觉已经被用于被质疑的使用,作为研究人员,我们有责任至少思考一下我们的工作可能造成的损害,并思考如何减轻这种损害。我们非常珍惜这个世界。

最后,不要 @我。(因为我终于放弃 Twitter 了)。


(reference见原论文)


2018 新智元 AI 技术峰会倒计时 2 天】

查看嘉宾与日程

峰会门票火热抢购,抢票链接:

2018新智元AI技术峰会--产业.跃迁www.huodongxing.com图标

编辑于 2018-03-27

文章被以下专栏收录