YOLOv3
Last updated
Last updated
我们向YOLO展示一些更新!我们做了一大堆小的设计改动来使它变得更好。我们还训练了这个非常棒的新网络。它比上一次稍大,但更准确。不过,还是很快,别担心。在28.2 mAP下,320×320 YOLOv3在22 ms内运行,与SSD一样精确,但速度快三倍。当我们查看旧的.5 IOU mAP检测指标YOLOv3非常好。 它在Titan X上在51毫秒内达到57.9 ,与RetinaNet相比,在198毫秒时达到57.5 ,性能相似,但速度提高3.8倍。
对于一个目标,我们预测四个值 (分别对应网格中心坐标以及宽和高) 来表示目标框:
在训练中,我们使用误差平方和损失。
每个框使用多标签分类来预测边界框可能包含的类别。我们不使用softmax,因为我们发现它对于良好的性能是不必要的,相反,我们只使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失进行分类预测。
当我们转移到更复杂的领域时,如开放图像数据集[ 7 ],这个公式会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax会强制假设每个盒子都有一个类,而这通常不是这样。多标签方法可以更好地对数据建模。
YOLOv3预测3种不同尺度的方框。 我们的系统使用与金字塔网络相似的概念[8]从这些尺度中提取特征。 从我们的基础特征提取器中,我们添加了几个卷积层。 其中最后一个预测了三维张量编码边界框,对象和类预测。在我们用COCO [10]进行的实验中,我们预测每个尺度有3个框,因此对于4个边界框偏移预测,1个对象存在预测和80个分类预测,输出张量为 。
接下来,我们从前面的2个图层中获取特征图,然后将其乘以2×。 我们还从网络中的早期获取了一个功能图,并使用连接将其与我们的上采样功能合并。 这种方法允许我们从上采样的特征中获得更有意义的语义信息,并从早期的特征图中获得更细粒度的信息。 然后,我们再添加一些卷积层来处理这个组合特征映射,并最终预测相似的张量,尽管现在是两倍大小。
我们再次执行相同的设计来预测最终规模的容器。 因此,我们对3rd scale的预测受益于所有先前的计算以及网络早期的细粒度特征。
我们仍然使用k均值聚类来确定我们的bounding box先验。我们只是随便选择了9个clusters和3个scales,然后将clusters平均划分成不同的scales。在COCO数据集上,9个聚类是:
我们使用一个新的网络进行特征提取。我们的新网络是YOLOv2,Darknet-19中使用的网络和新奇的遗留网络之间的混合方法。 我们的网络使用连续的3×3和1×1卷积层,但现在有一些快捷连接,并且显着更大。
每个网络都使用相同的设置进行培训,并测试256×256,单一裁剪精度。 运行时间以Titan X在256×256处测量。 因此,Darknet-53有最先进的分类性能,但浮点运算更少,速度更快。 Darknet-53优于ResNet-101,速度提高1.5倍。 Darknet-53与ResNet-152具有相似的性能,速度快2倍。
我们仍然在完整的图像上训练,没有任何硬性的负面挖掘。我们使用多尺度训练,大量的数据扩充,批量标准化,所有标准的东西。