Abstract
我们做了一堆小的设计改动来让YOLO性能更好。我们还训练了这个非常庞大的新网络。这比以前的网络打了一点但是更加准确。别担心,速度仍然很快。在320x320输入的图片 YOLOv3运行在22ms并能达到28.2mAP,精度如同SSD 但是比它快3倍.当我们用旧的.5 IOU mAP 检测指标,YOLOv3还是不错的。运行在TitanX,YOLO能达到57.9 AP50 需要51ms ,RetinaNet 能达到57.5 AP50需要198ms,相似的性能但是3.8x的速度。
2. The Deal
2.1. Bounding Box Prediction
遵循YOLO9000中我们的系统预测检测框使用维度聚类选择先验框。网络为每个锚框预测四个坐标值,tx,ty,tw,th。如果单元格从图像的左上角(cx,cy)开始偏移,先验框有宽高pw,ph,然后对应的预测值:
在训练时我们使用均方和误差损失。如果一些坐标的真实标签是\hat{t*}。我们的梯度是真实值(从真实框中计算得到的)减去我们的预测值\hat{t*}-t*。真实值\hat{t*}可以通过以上等号的逆运算轻松得到。(也就是对标签多做了一步,将x,y,w,h转成 tx,ty,tw,th与输出的值进行计算误差平方和)
YOLOv3为每个检测框预测物体分数(置信度)。如果一个包检测框先验比其它任何检测框更多地重叠一个真实对象,则该值应该为1。如果检测该检测框先验不是最好的但是与真实框重叠,在大于某个阈值的时候我们忽略这个检测框。我们使用阈值为0.5,不像Faster r-cnn,我们的系统仅对每个真实框仅分配一个检测框。如果一个先验框没有被分配到一个真实物体的话,它的没有坐标和类别loss,只有物体分数损失。
2.2. Class Prediction
每个框使用多标签分类预测边界框可能包含的类。我们不使用softmax 因为我们发现这对高性能不是必须的,取而代之的是我们简单地使用独立logistic 分类器。在训练期间,我们使用二分交叉熵损失来作类别预测。
当我们迁移到更复杂的领域,如Open Images Dataset [ 7 ]时,这个公式很有帮助。在这个数据集中有很多重叠的标签(比如男人和女人)。使用softmax假设每个盒子恰好有一个类,而通常情况并非如此。多标签方法可以更好地对数据进行建模。
2.3. Predictions Across Scales
YOLOv3在三个尺度上预测检测框。我们的系统使用与FPN相同的概念从这些尺度上提取特征。从我们基础特征提取器,我们添加了几个卷积层。其中最后一个预测了三维张量编码的检测框,置信度和类别预测。在COCO数据集上,我们在每个尺度上预测3个边界框,所以tensor形状是N×X ×[3*(4+1+80)],对应4个坐标,1个置信度,80个类别。
然后,我们采用从前两个层并上采样它到2x。我们还从早期提取的特征图,并使用拼接的方式与上采样的特征融合。这个方法让我们从上采样的特征图获取更多有意义的语义信息和从早期的特征图获取更加细粒度的信息。然后,我们添加了较少的卷积层来处理融合后的特征图,并最后预测一个相似的张量,虽然是两倍的大小。
我们再执行相同的设计来预测最后一个尺度。因此,我们对第三个尺度的预测受益于网络中所有的先验计算以及早期的细粒度特征。
我们仍然使用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
我们使用新的网络来执行特征提取。我们新网络是Darknet-19,YOLOv2中使用的网络与新提出的残差网络的混合方法。
我们的网络延续使用3x3 和 1x1 卷积层但是也有了一些残差连接,并且规模增大。图中是DarkNet53用来分类任务的结构,所以用Softmax输出。检测任务将使用卷积层输出。
这个新的网络比Darknet19强大很多且比ResNet-101 或者ResNet152 更高效,这是在ImageNet上的结果。
每个网络训练在相同的设定,并测试在256*256,运行时间在256 × 256的Titan X上测量。因此,Darknet- 53与目前最先进的分类器性能相当,但浮点运算更少,速度更快。DarkNet- 53优于ResNet - 101,速度快1.5倍。Darknet- 53与ResNet - 152性能相当,速度快2倍。
DarkNet- 53也实现了最高的实测每秒浮点运算。这也意味着网络结构可以更好地利用GPU,使它更有效地评估。这主要是深度残差网络地残差太多,效率不高。
2.5. Training
我们仍然在完整图像上训练。我们使用多尺度训练,大量数据增强,批量归一化,所有的标准。我们使用暗网神经网络框架进行训练和测试
YOLO难以识别小物体。然而,现在我们看到了这种趋势的逆转。通过新的多尺度预测,我们发现YOLOv3具有相对较高的AP性能。然而,它在中等和较大尺寸的物体上性能较差。这需要更多研究。
个人总结
YOLOv3所做地改进
1.增加网络层数,使用残差块,以及在网络中添加一些route 用来拼接高层语义和浅层结构信息。
2.引入FPN多尺度预测,希望能解决小目标效果差。
3.使用logistic损失 替换softmax ,解决多标签问题。