【论文学习】YOLOv3:An Incremental Improvement

论文:YOLOv3
源代码:pjreddie.com/yolo/
视频:https://youtu.be/MPU2HistivI

1. Abstract

作者对YOLO进行了进一步的更新,做了一些小设计更改让其表现更好。YOLOv3比YOLOv2相较大了一些,却更加准确,但是依然很快。在320×320 YOLOv3在28.2mAP上仅运行了22ms,和SSD的准确度相同但是快了3倍。在关注原有的0.5 IOU mAP 检测指标时,YOLOv3表现相当棒。在Titan X在52ms内实现了57.9 AP50,与RetinaNet在198ms内实现57.5AP50相当,但是快了3.8倍。

2. Key insight

准确来讲,在阅读论文的时候并没有很准确的找到作者优化YOLOv2的motivation。作者只是提到在Twitter上游走了一年,玩儿了一下GAN。由于之前的一些工作,作者对YOLO进行了一些改进,主要采取了一些其他学者的想法,训练了一个比其他人更好的分类网络。
【论文学习】YOLOv3:An Incremental Improvement
Bounding Box Prediction:在YOLO9000之后,作者用维度聚集器(dimension clusters)作为anchor boxes预测bounding boxes。这样的网络给每个bounding boxes预测了4个坐标值:txtytwth;单元格和左上角的偏移量是(cx,cy),bounding box的边界框宽和高分别是pxph,则预测值为:
【论文学习】YOLOv3:An Incremental Improvement
在训练的时候采用均方误差损失和(sum of squared error loss)。假设对于一些坐标预测的值是t^ ,梯度就是由ground truth box计算出的ground truth的值减去预测值:t^t。逆算这个方程就可以算出ground truth的值。
YOLOv3使用逻辑回归(logistic regression)的方法给每个bounding box预测一个对象分数。如果bounding box prior比任何一个其他的bounding box prior重叠ground truth对象都多,这个值应该是1。如果bounding box不是最佳的但是重叠部分比某个阈值高就忽略此次预测,而是按照Faster R-CNN中的方法进行,阈值使用0.5。作者系统只为每个ground truth对象分配一个bounding box prior。如果一个bounding box prior没有分配给ground truth对象,则不会对坐标或者类别预测造成损失,仅会对对象造成损失。
【论文学习】YOLOv3:An Incremental Improvement
Class Prediction:每一个框(box)使用多标签分类来预测bounding box可能包含的类,softmax对于高性能并不必要,因而作者并没有使用softmax函数,而是使用独立的逻辑分类器。在训练过程中,作者使用二元交叉熵损失进行类别预测。
这个构想在更复杂的数据集上很有帮助。使用softmax强加一种假设,即:每一个框内仅由一个类,但是事实常不如此。多标签方法能更好的模拟数据。
Predictions Across Scales: YOLOv3在3中不同的尺度预测box。作者的系统使用一个类似特征金字塔网络的概念从这些尺度中提取特征。作者在基本的特征提取器中增加了几个卷积层。最后一个预测一个3维张量编码bounding box、objecness和class predictions。在COCO数据集的实验中在每个尺度预测3个框,因此张量数目就是:N×N×[3*(4+1+80)],其中有4个bounding box偏置,1个对象预测和80个类别预测。
然后,从之前的2层中提取特征图并进行2倍上采样。而且作者还较早地从网络中提取一个特征图并把它和上采样的特征结果用element-wise addition方式合并。这种方法可以从上采样的特征图和较早特征的细粒度信息中获得更有意义的语义信息。然后,作者增加了一些卷积层来处理这种结合后的特征图并最终预测一个相似的张量,但是大小是之前的2倍。
作者再一次执行相同的设计来给最终尺度预测框。因此第3种尺度的预测可以由所有之前的计算获益,并从早期的网络中获得细粒度特征。
在决定bounding box的同时也用到了k-means clustering
Feature Extractor:作者新网络是在YOLOv2、Darknet-19的网络和新颖的残差网络的混合方法。网络使用3×3和1×1卷积层,但也有一些shortcut连接,该网络明显更大。这个网络有53个卷积层,因而叫Darknet-53。
【论文学习】YOLOv3:An Incremental Improvement
在ImageNet实验结果如下:
【论文学习】YOLOv3:An Incremental Improvement
Darkenet-53也可以实现每秒最高的测量浮点运算。这就意味着这个网络结构可以更好地利用GPU。
Traing:作者训练的时候仍然采用完整的图片进行训练,使用不同的scale、大量的data argumentation、batch normalization等很多trick。

3. Experimental

YOLOv3的实验结果如表3。就COCO数据集的mAP指标而言,虽然YOLOv3和SSD变体相当,但是仍然比RetianNet这样的网络落后很多。
YOLOv3在IOU=0.5时,即表3中的AP50的时候十分强大。几乎与RetinaNet相当,远高于SSD的变体。但是YOLOv3的性能也会在IOU阈值增加的时候有很严重的下降,这表明YOLOv3使bounding box和目标物体完美贴合的效果不是很好。
之前的YOLO结构对于小物体的检测效果不是很好,现在却反过来了。新的多尺度检测使得YOLOv3有较高的APS性能。但是在中等尺寸或者大尺寸的物体检测时效果不是很好。
作者尝试了一些其他想法,但是没有很好的效果,比如预测anchor box x和y的偏置量、使用线性x和y的预测、focal loss、二重IOU阈值和truth分配。
【论文学习】YOLOv3:An Incremental Improvement

4.Analysis

YOLOv3在基本保证准确度的前提下,速度大幅度提升,比SSD和RetinaNet快了3倍,骨干网是DarkNet,有人说DarkNet是一个被轻视的网络。作者在网络中提到了上采样方法、多尺度检测等很多方法,当然在特征提取的时候也用到了深度可分离卷积。