YOLOv3: An Incremental Improvement
YOLOv3: 一个增量的改进
关键词:标签多对一、多尺度、边界框先验( 聚类 )、 维度集群、Darknet-53
目录
一、摘要
二、随性介绍
三、改进的细节
(1)Bounding Box Prediction
(2)Class Prediction
(3)Predictions Across Scales
(4)Feature Extractor
(5)Training
四、对比实验
五、我们尝试的没有奏效的方法
六、作者的三观:这一切意味着什么?
我们对YOLO做了一些更新!我们做了一堆小的设计变更,使其变得更好。我们还训练了这个非常庞大的新网络。它比上次大一点,但更准确。不过还是很快的,不用担心。在320 × 320时,YOLOv3在22 ms内以28.2 mAP运行,与SSD一样精确,但速度快3倍。当我们查看旧的0.5 IOU的mAP检测度量YOLOv3是相当不错的。在Titan X上,它在51ms内达到 57.9 ,而RetinaNet在198ms内达到 57.5 ,性能相似,但速度快3.8倍。
论文链接:[1804.02767] YOLOv3: An Incremental Improvement (arxiv.org)
注意:图1 的纵坐标是mAP,图2 的纵坐标是mAP-50。
图1 我们从《Focal loss for dense object detection》中调整了这个图像。YOLOv3的运行速度明显快于其他具有类似性能的检测方法。无论是M40还是Titan X,它们基本上都是相同的GPU。
图3 同样改编自《Focal loss for dense object detection》,这次在mAP上以0.5 IOU度量显示速度/精度权衡。你可以告诉YOLOv3是好的,因为它非常高,而且离左边很远。你能引用你自己的论文吗? 猜猜谁会尝试,this guy→《Yolov3: An incremental improve-ment》。Oh, I forgot, 我们还修复了YOLOv2中的一个数据加载bug,这个bug得到了类似2 mAP的帮助。Just sneaking this in here to not throw off layout.
有时候你只是打了一年电话,you know? 我今年没有做过很多研究。在Twitter上花费了大量的时间。与GANs一起玩了一会儿。我从去年《Philosophiae naturalis principia mathematica》《Analogy》遗留了一点动力;我设法对YOLO做了一些改进。但是,honestly,没有什么像超级有趣的,只是一堆小的变化,使它变得更好。我也对其他人的研究有所帮助。
实际上,这就是今天带我们来到这里的原因。我们有一个相机就绪的截止日期[ 4 ],我们需要引用我对YOLO做的一些随机更新,但是我们没有源代码。所以准备好一个技术报告!
科技报告的伟大之处在于它们不需要介绍,你们都知道我们为什么在这里。因此,这篇介绍的结尾将为论文的其余部分提供路标。首先,我们将告诉您与YOLOv3的交易是什么。然后我们会告诉你我们怎么做。我们也会告诉你一些我们尝试过却不起作用的事情。最后,我们将考虑这一切意味着什么。
YOLOv3的细节:我们主要从其他人的研究成果中采取好主意。我们还训练了一个新的分类器网络,它比其他分类器更好。我们只是带你从头开始,整个系统,所以你可以理解这一切。
图2 具有维度先验和位置预测的边界框。我们预测box的宽度和高度作为集群质心( cluster centroids )的偏移量。我们使用sigmoid函数预测box相对于滤波器应用位置的中心坐标。这个图从《Yolo9000:Better,faster,stronger》中公然地自我剽窃。
在YOLO9000之后,我们的系统使用维度集群( dimension clusters )作为锚框来预测边界框。网络为每个bbox预测4个坐标 。如果单元格被从图像的左上角偏移,并且边界框先验具有宽度和高度,则预测对应:
在训练期间,我们使用误差损失的平方和。如果某个坐标预测的真实值是,那么,我们的梯度=真实值 - 预测:。通过对上述方程求逆,可以很容易地计算出这个 ground truth。
YOLOv3使用逻辑回归预测每个边界框的客观性得分。如果bounding box prior与一个真实物体重叠超过其他bounding box prior,则应该为1。如果bound-ing box prior不是最好的,但确实重叠了一个ground truth对象超过一定的阈值,我们忽略预测,如《Faster r-cnn》。我们使用0.5的阈值。与《Faster r-cnn》不同,我们的系统只为每个真值对象分配一个边界框。如果一个边界框先验没有分配给一个真实对象,那么它不会导致坐标或类预测的损失,只有客观性。
每个框使用多标签分类预测边界框可能包含的类。我们没有使用softmax,因为我们发现这对于良好的性能是不必要的,而是简单地使用独立的逻辑分类器。在训练过程中,我们使用二进制交叉熵损失进行类预测。
当我们移动到更复杂的领域,如Open Images Dataset《A public dataset for large-scale multi-label andmulti-class image classification》,这个公式很有帮助。在这个数据集中有很多重叠的标签( 即,Woman and Person )。使用softmax需要假设每个框恰好有一个类,而通常情况并非如此。多标签方法可以更好地对数据进行建模。
YOLOv3预测了3个不同尺度的box。我们的系统使用类似于特征金字塔网络的概念从这些尺度中提取特征。从我们的基本特征提取器中,我们添加了几个卷积层。最后一个预测是3 - d张量编码边界框、客观性得分和类预测。在COCO的实验中,我们在每个尺度上预测3个框,因此对于4个边界框偏移量、1个对象性预测和80个类预测,张量为N × N × [ 3 * ( 4 + 1 + 80 ) ]。
接下来,我们从前面的2层提取特征图,并上采样2 ×。我们还从网络中提取了一个早期的特征图,并使用级联的方式将其与我们的上采样特征进行融合。这个方法允许我们从上采样的特征中获得更有意义的语义信息,从早期的特征映射中获得更细粒度的信息。然后,我们添加了更多的卷积层来处理这个组合的特征图,并最终预测一个类似的张量,虽然现在是两倍的大小。
我们再进行一次相同的设计来预测最终量表的box。因此,我们对3级的预测受益于所有以前的计算以及网络中早期的细粒度特征。
我们仍然使用 k-means 聚类来确定我们的边界框先验。我们只是任意地选择了9个集群和3个尺度,然后将集群均匀地划分在尺度上。在COCO数据集上,9个聚类分别为:( 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的卷积层,但现在也有一些捷径连接,并且明显更大。它有53个卷积层,so we call it....wait for it.....Darknet-53 !
Table 1. Darknet-53
这个新的网络比Darknet-19强大得多,仍然比ResNet-101或ResNet-152更高效。以下是ImageNet的一些结果:
表2 Backbones的比较。准确性,数十亿次运算,每秒数十亿次浮点运算,以及各种网络的FPS。
每个网络都使用相同的设置进行训练,并在256 × 256的single crop accuracy下进行测试。在256 × 256的Titan X上测量运行时间。因此,Darknet-53的性能与最先进的分类器不相上下( on par with ),但浮点运算更少,速度更快。Darknet-53比ResNet-101更好,速度快1.5倍。Darknet-53具有与ResNet-152相似的性能,并且速度快2倍。
补充:
Definition of on (a) par with : at the same level or standard as (someone or something else) The new version of the software is on a par with the old one.
on (a) par with 的定义:与(某人或某物)处于同一水平或标准 软件的新版本与旧版本相当。
His new book is on par with his best sellers.
他的新书与他的畅销书不相上下。
Darknet-53也实现了最高的每秒测量浮点运算。这意味着网络结构更好地利用了GPU,使其更有效地评估,从而更快。这主要是因为深度残差网络有太多的层,而且效率不高。
我们仍然在完整图像上进行训练,没有任何困难的负挖掘或任何这些东西。我们使用多尺度训练,大量的数据增强,batch normalization,所有的标准东西。我们使用Darknet神经网络框架进行训练和测试《Darknet: Open source neural networks in c》。
YOLOv3相当不错!见表3。在COCOsweird平均AP度量方面,它与SSD变量相当,但速度快3倍。但与RetinaNet等模型相比,该指标仍有一定差距。
表3 我真的只是从《Focal loss for dense object detection》中偷走了所有这些表,它们需要很长时间才能从头开始。Ok, YOLOv3 is doing alright。记住,RetinaNet处理一幅图像的时间大约为Darknet-53的3.8× 时长。YOLOv3在AP50指标上远远优于SSD变体,与最先进的模型相当。
然而,当我们看mAP在IOU = 0.5( 或图表中的AP50 )YOLOv3处的"old"检测度量时,则非常强。它几乎与RetinaNet相媲美,远远高于SSD变体。这表明YOLOv3是一个非常强大的检测器,它擅长为物体制造合适的box。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3很难获得与对象完全匹配的box。
在过去,YOLO与小物体搏斗。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,我们发现YOLOv3具有相对较高的性能。然而,它在中等和较大尺寸对象上的性能相对较差。需要进行更多的调查才能了解到这一点。
图5 根据这两幅图像上的mAP,这两个假想检测器是完美的。两者都是完美的。完全相等。
当我们在指标上绘制精度与速度的关系图( 见图5 )时,我们看到YOLOv3比其他检测系统有显著的优势。也就是说,它更快更好。
我们在YOLOv3上工作时尝试了很多东西。很多都没有奏效。Here’s the stuff we canremember。
我们非常喜欢我们目前的配方,它似乎至少在一个局部最优。有可能其中的一些技术最终能产生良好的效果,也许它们只是需要一些调优来稳定训练。
YOLOv3是一个很好的检测器。它是快速的,它是准确的。在COCO平均AP在. 5到. 95IOU之间的度量上表现并不理想。但是它在旧的检测度量 .5 IOU上表现很好。
我们为什么要切换度量呢? 最初的COCO论文只有这句神秘的句子:"一旦评估服务器完成,将添加对评估指标的充分讨论"。Russakovsky等人报告说,人类很难区分. 3和. 5的IOU ! 训练人类视觉检测一个IOU为0.3的bbox,并将其与IOU为0.5的bbox区分开来是非常困难的。如果人类很难说出其中的区别,那有多重要?
但也许一个更好的问题是:"我们现在有了这些检测器,我们要做什么? " 做这项研究的很多人都在谷歌和Facebook上。我想至少我们知道技术掌握得很好,并肯定不会被用来收集您的个人信息,并将其出售给...... wait,you’re saying that’s exactly what it will be used for ?? Oh.
好吧,其他大量资助视觉研究的人都是军人,他们从来没有做过任何可怕的事情,比如用新技术killing很多人等等......(作者受海军研究办公室和谷歌的资助)
我有很多希望,大多数使用计算机视觉的人只是在做快乐的、好的事情,比如在国家公园里计算斑马的数量,或者跟踪他们的猫在他们的房子周围徘徊。但是,计算机视觉已经被用于可疑的用途,作为研究人员,我们有责任至少考虑我们的工作可能造成的伤害,并考虑如何减轻这种伤害。我们欠这个世界那么多。
In closing,do not@me.(Because I finally quit Twitter).