我们向YOLO提供了一些更新!我们在设计上做了一些小的改变,让它做得更好。我们还训练了这个非常棒的新网络。比上次大一点,但更准确。不过,但速度还是很快,不用担心。在输入大小为320×320时,YOLOv3运行时间为22 ms,达到了28.2mAP,与SSD同样准确,但快三倍。当我们看旧的。0.5 IOU mAP检测度量YOLOv3是相当好的。它在TitanX上以51 ms达到57.9AP50,而在198 ms上达到57.5AP50,性能类似,但速度快3.8×。和往常一样,所有的代码都在网上https://pjreddie.com/yolo/.
这是YOLO v3的详细介绍:我们大多从其他人那里得到好的点子。我们还训练了一个比其他分类器网络更好的新的分类器网络。我们会带你从头开始了解整个系统,这样你就能理解这一切了。
在YOLO9000之后,我们的系统使用维度集群作为锚盒[15]来预测边界框。该网络预测了每个边界框的4个坐标,tx,ty,tw,th。如果单元格从图像的左上角被(cx,cy)偏移,并且前面的边界框的宽度和高度为pw、ph,则预测对应于:
在训练过程中,我们使用误差损失的平方和。如果某些坐标预测的地面真值是tˆ*,那么我们的梯度是地面真值(从地面真值框计算)减去我们的预测:tˆ*−t*。这个地面真值可以很容易地计算出来。
YOLOv3使用逻辑回归预测每个边界框的客观性得分。如果边界框与地面真实对象的重叠超过任何其他边界框,则应该为1。如果边界框先验不是最好的,但确实与一个地面真实对象重叠超过一些阈值,我们忽略预测,遵循[17]。我们使用的阈值为0.5。与[17]不同,我们的系统只为每个地面真实对象分配一个边界框。如果一个边界框先验没有被分配给一个地面真实对象,它不会造成坐标或类预测的损失,只有对象。
每个框使用多标签分类来预测边界框可能包含的分类。我们没有使用softmax,因为我们发现它对于良好的性能是不必要的,而我们只是使用独立的逻辑分类器。在训练过程中,我们使用二进制交叉熵损失来进行类预测。
当我们移动到更复杂的领域,如开放图像数据集[7]时,这个公式会有帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax假设每个盒子都有一个类,但通常不是这样。一种使用多标签的方法可以更好地对数据进行建模。
YOLOv3预测了3个不同尺度的盒子。我们的系统使用类似的概念从金字塔网络[8]中提取特征。从我们的基本特征提取器中,我们添加了几个卷积层。最后一个预测了一个三维张量编码边界框、客观性和类预测。在我们的COCO[10]实验中,我们预测每个尺度上有3个盒子,所以张量是N×N×[3∗(4+1+80)],对于4个边界盒子偏移,1个对象预测和80个类预测。
接下来,我们从之前的两层中提取特征图,并通过对其进行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)。
我们使用了一个新的网络来进行特征提取。我们的新网络是YOLOv2中使用的Darknet-19中使用的网络和新奇的剩余网络之间的混合方法。我们的网络使用连续的3×3和1×1卷积层,但现在也有一些快捷连接,而且要大得多。它有53个卷积层,所以称它为Darknet-53!
这个新的网络比darknet-19强大得多,但仍然比ResNet-101或ResNet-152更有效。以下是ImageNet的一些研究结果:
每个网络都用相同的设置进行训练,并在256×256,单个作物的精度下进行测试。运行时间在TitanX 输入大小为256×256。因此,Darknet-53的性能与最先进的分类器相当,但浮点操作更少,速度更快。darknet-53比ResNet-101好,并且快1.5×。Darknet-53与ResNet-152具有类似的性能,而且速度快2×。
darknet-53也实现了每秒最高的浮点运算。这意味着网络结构更好地利用了GPU,使其更有效率的评估,从而更快。这主要是因为ResNets的层太多了,效率不是很高。
YOLOv3很好!详见表3。在COCOs奇怪的mAP度量方面,它与SSD变体相当,但速度快3×。不过,在这个指标上,它仍然相当落后于其他型号,如RetinaNet。
然而,当我们查看IOU=.5(或图表中的AP50)中的mAP的“旧”检测度量时,YOLOv3非常强。它几乎可以与RetinaNet相媲美,也远远高于SSD的变体。这表明YOLOv3是一个非常强的检测器,擅长为物体制作像样的框。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3正在努力使方框与对象完美对齐。
在过去,YOLO一直在与小物体作斗争。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,我们可以看到YOLOv3具有相对较高的APS性能。然而,它在中等和较大尺寸的物体上的性能相对较差。目前还需要更多的调查才能弄清真相。
当我们在AP50度量上绘制精度和速度时(见图5),我们可以看到YOLOv3比其他检测系统有显著的好处。也就是说,它更快更好。
我们在开发YOLOv3的时候尝试了很多东西。很多方法都不起作用。这是我们能记住的东西。
Anchor box x, y offset predictions. 我们尝试使用普通的锚盒预测机制,其中你使用线性激活来预测x,y偏移为盒子宽度或高度的倍数。我们发现这个公式降低了模型的稳定性,而且效果不是很好。
Linear x, y predictions instead of logistic. 我们尝试使用线性激活来直接预测x,y的偏移量,而不是逻辑激活。这导致了mAP值下降了几个百分点。
Focal loss. 我们尝试使用焦点损失。它使我们的mAP下降了大约2%。YOLOv3可能已经对焦点损失试图解决的问题具有鲁棒性,因为它有独立的客观性预测和条件类预测。因此,对于大多数例子来说,类别预测没有损失吗?还是什么?我们不太确定。
Dual IOU thresholds and truth assignment. Faster RCNN在训练过程中使用了两个IOU阈值。如果IOU>0.7,作为一个积极的例子,[0.3−0.7]它被忽略,对于IOU<0.3,这是一个消极的例子。我们尝试了类似的策略,但没有取得好的结果。
我们很喜欢我们目前的公式,它似乎至少是在一个局部最优的状态。这些技术中的一些最终可能会产生好的结果,也许它们只需要一些调整来稳定训练。
YOLOv3是一个很好的探测器。速度快,准确。在COCO0.5和0.95之间的IOU平均指数上没有那么好。但它在旧的0.5IOU的检测指标上非常好。
为什么我们还是要改变指标呢?COCO的原始论文中只有这样一个神秘的句子:“一旦评估服务器完成,将会添加对评估指标的全面讨论。”俄罗斯萨科夫斯基等人报道说,人类很难区分0.3和0.5!“训练人类目视检查一个IOU为0.3的边界框,并将其与一个IOU为0.5的边界框区分开来,这是令人惊讶的困难。”[18]如果人类很难分辨出区别,那又有多重要呢?
但也许一个更好的问题是:“既然我们有了这些探测器,我们该怎么办呢?”很多做这项研究的人都在谷歌和Facebook上。我想至少我们知道这项技术有良好的掌握,绝对不会被用来收集你的个人信息并把它卖给……等等,你是说这正是它的用途??哦。
其他大量资助视觉研究的人是军队,他们从来没有做过任何可怕的事情,比如杀死很多人哦,等等……我很希望大多数使用计算机视觉的人只是在做快乐的好事情,比如计算国家公园[13]斑马的数量,或者追踪他们的猫在他们的房子[19]。但是计算机视觉已经被投入了可疑的使用,作为研究人员,我们有责任至少考虑我们的工作可能造成的危害,并想办法减轻这种危害。我们欠这个世界那么多钱。