YOLOv3: An Incremental Improvement

Abstract

我们向YOLOv3提供了一些更新!我们在设计上做了些小变动使它变得更好。我们另外训练了更棒的新网络。它和过去的相比有一点大,但是精度更高。它仍然很快,别担心。用320*320在YOLOv3运行22 ms得到了28.2的精度,相比使用SSD精度更好但是速度**倍。当我们看以前在0.5 IOU mAP检测标准YOLOv3表现是相当好的。他在Titan X实现了在51 ms 得到57.9 AP,相比在RetinaNET上用198 ms得到57.5 AP性能相似但是速度快3,8倍。
代码链接

1、Introduction

有时候你只是打了一年电话,你知道吗?今年我没有做很多的研究。花费了很多的时间在Twitter上。和GANs玩了一会。我从去年有了一点动力。我设法对YOLO做了一些改进,仅仅一点点的改进使它更快了。我还帮助别人做了一些研究。

事实上这就是我们今天来到这里的原因。我们有一个相机准备的最后期限,我们需要引入一些随机更新我给了YOLO但是我们没有原始数据,所以准备一份技术报告。

科技报告的伟大之处在于他们不需要自我介绍,你们都知道为什么我们在这里。所以这篇引文的结尾将会是这篇文章的标志。首先我们将会告诉你YOLOv3做了什么处理。之后我们会告诉你我们怎样去做。我们还会告诉你我们尝试但没有成功的事。最后,我们将考虑这一切意味着什么。

2、The Deal

所以YOLOv3是这样的:我们主要从别人那里获得好的想法。我们还训练了一个新的分类器,比其他的分类器都要好。我们将从头开始介绍整个系统这样你就能理解。

YOLOv3: An Incremental Improvement

2.1 Bounding Box Prediction

在YOLO9000之后我们的系统使用作为anchor box来预测bounding box。该网络预测每个bounding box的4个坐标 tx,ty,tw,th。如果单元格从图像左上角偏移(出现,cy),边界框先验具有宽度和高度pw\ph,则预测对应
YOLOv3: An Incremental Improvement
在训练中我们使用误差损失平方和。如果某个坐标预测的地面真值是t *我们的gra- dient是ground truth 值(从ground truth 框中计算)减去我们的预测:t * t *。这个ground truth 可以很容易地通过反演上面的方程来计算。

YOLOv3使用逻辑回归预测每个边界框的对象得分。如果边界框先验与ground truth对象的重叠比任何其他边界框先验都多,那么这个值应该是1。如果边界框先验不是最好的,但与地面真值对象重叠超过某个阈值,我们就忽略预测,在[17]之后。我们使用的阈值是0.5。与[17]不同的是,我们的系统只为每个ground truth对象分配一个优先的边界框。如果一个边界框先验没有分配给一个ground truth对象,它不会对坐标或类预测造成损失,只会对object造成损失。
YOLOv3: An Incremental Improvement

2.2 Class Prediction

每个框预测使用多标签分类边界框可能保留的类。我们没有使用softmax,因为我们发现它对于良好的性能是不必要的,我们只是使用独立的逻辑分类器。在训练中,我们使用二元交叉熵损失来预测类。

当我们移动到更复杂的领域,比如开放图像数据集[7]时,这个公式会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax强加了这样一个假设,即每个box只有一个类,但通常不是这样。多标签方法可以更好地建模数据。

2.3. Predictions Across Scales

YOLOv3在3种不同的尺度上预测盒子。本系统采用与特征金字塔网络[8]相似的概念从这些尺度中提取特征。从基本特征提取器中,我们添加了几个卷积层。最后预测了一个三维张量编码的边界框、可推测性和类预测。在COCO[10]的实验中,我们在每个尺度上预测了3个盒子,所以对于4个包围盒偏移量、1个物体预测和80个类预测,张量为N*N[3(4+1+80)]。

接下来,我们从前面的两层中提取feature map,并对其进行2倍的上采样。我们还从网络早期获取一个特征映射,并使用连接将其与我们的上采样特征合并。这种方法允许我们从上采样的特征中获得更有意义的语义信息,并从早期的特征映射中获得更细粒度的信息。然后我们添加更多的卷积层来处理这个组合的特征图,并最终预测出一个类似的张量,尽管现在的张量是原来的两倍。

我们再次执行相同的设计来预测最终的比例。因此,我们对第三尺度的预测受益于所有之前的计算以及网络早期的细粒度特征。

我们仍然使用k-means聚类来确定我们的包围框先验。我们只是随便选了9个集群和3个尺度然后把这些集群平均地分成不同的尺度。在COCO数据集上,9个集群分别为:(10*13)、(16×30)、(33 ×23)、(30× 61)、(62 ×45)、(59 ×119)、(116 ×90)、(156 ×198)、(373 ×326)。

2.4. Feature Extractor

我们使用一个新的网络来执行特征提取。我们的新网络是YOLOv2、Darknet-19中使用的网络和那些新奇的残余网络之间的混合方法。我们的网络使用了连续的33和11的卷积层,但现在也有了一些快捷连接,而且要大得多。它有53个卷积层所以我们称之为。等待…Darknet-53

YOLOv3: An Incremental Improvement
这个新网络比Darknet-19强大得多,但仍然比ResNet-101或ResNet-152高效得多。下面是一些ImageNet的结果:
YOLOv3: An Incremental Improvement
每个网络都用相同的设置进行训练,并在256× 256,单一作物精度下进行测试。运行时间是在Titan X上以256×256测量的。因此,Darknet-53与最先进的分类器性能相当,但浮点运算更少,速度更快。Darknet-53比ResNet-101更好,速度快1.5×。Darknet-53也有类似的性能resnet-152和速度快2×。

Darknet-53还实现了每秒最高的浮点运算。这意味着网络结构更好地利用了gpu,使其评估更有效率,从而更快。这主要是因为ResNets的图层太多,效率不高。

2.5. Training

我们仍然在完整的图像上运行,没有硬的负面挖掘或其他任何东西。我们使用多尺度训练,大量的数据扩充,批处理标准化,所有标准的东西。我们使用Darknet神经网络框架对[14]进行训练和测试。

3. How We Do

YOLOv3非常好!见表3。就COCOs怪异的平均AP度量而言,它与SSD变体相当,但速度要快3倍。但在这个指标上,它仍然远远落后于RetinaNet等其他模型。
YOLOv3: An Incremental Improvement

然而,当我们查看IOU= 0.5(或图表中的AP 50)时旧的mAP检测指标时,YOLOv3非常强大。它几乎与RetinaNet相当,远高于SSD变体。这表明YOLOv3是一种非常强大的检测器,它擅长为对象生成合适的盒子。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3很难使盒子与对象完全对齐。

在过去,YOLO会与小目标搏斗。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,我们看到YOLOv3具有相对较高的AP S性能。但是,它在中、大型对象上的性能相对较差。要弄清这件事的真相还需要更多的调查。

当我们在AP 50指标上绘制精度与速度的对比图时(参见图5),我们看到YOLOv3比其他检测系统具有显著的优势。也就是说,它更快更好。

4. Things We Tried That Didn’t Work

我们在YOLOv3上做了很多尝试。很多都没用。这是我们能记住的东西。

锚箱x,y偏移预测。我们尝试使用常规的锚盒预测机制,即通过线性**来预测盒子宽度或高度的倍数的x,y偏移量。我们发现这个公式降低了模型的稳定性,效果不太好。

线性x,y预测,而不是逻辑推理。我们尝试用线性**来直接预测x,y的偏移量,而不是逻辑**。这导致mAP下降了几个点。

焦的损失。我们试着用焦距损失。它让我们的地图下降了2个点。YOLOv3可能已经对焦点丢失试图解决的问题具有鲁棒性,因为它具有独立的对象预测和条件类预测。因此,对于大多数例子,类预测没有损失吗?还是什么?我们不能完全确定。

YOLOv3: An Incremental Improvement
双重IOU阈值和真值分配。更快的R- CNN在训练中使用两个IOU阈值。如果一个predic- tion与ground truth重叠了0.7,那么它就是一个正的例子。在[0.3-0.7]小于0.3它被忽略了,对于所有的 ground truth对象,它是一个负面的例子。我们尝试了类似的策略,但没有得到好的结果。
我们很喜欢现在的公式,它看起来至少是局部最优解。有可能这些技术中的一些最终会产生好的结果,也许它们只是需要一些调整来稳定训练。

5. What This All Means

YOLOv3是一个很好的检测器。它快,它准确。这不是很强大在COCO平均AP0.5至0.95IOU之间的指标。但它在0.5 IOU的旧检测指标上非常好。
我们为什么要改变指标呢?最初的COCO论文只有这样一个模糊的句子:一旦评估服务器完成,将添加对评估指标的完整讨论。Russakovsky等人报告说,人类很难区分0.3和0.5的 IOU!训练人们目视检查一个IOU为0.3的边框,并将其与IOU为0.5的边框区分开来,这是非常困难的。[18]中如果人类很难分辨两者的区别,这有多大关系?

但也许更好的问题是:既然我们有了这些探测器,我们将如何利用它们?做这项研究的很多人都在谷歌和Facebook。我想,至少我们知道技术掌握得很好,绝对不会被用来收集你的个人信息,然后卖给……等等,你是说这正是它的用途?哦。
另一些为视觉研究提供大量资金的人是军方他们从来没有做过可怕的事情比如用新技术杀死很多人等等…1

我非常希望大多数使用计算机视觉的人只是在用它做一些快乐的、有益的事情,比如数一数国家公园[13]里的斑马数量,或者跟踪他们的猫在[19]房间里闲逛。但是计算机视觉已经被认为是有问题的用途,作为研究人员,我们有责任至少考虑到我们的工作可能造成的危害,并想办法解决它。我们欠世界那么多。
YOLOv3: An Incremental Improvement
YOLOv3: An Incremental Improvement