YOLOv3

YOLOv3: An Incremental Improvement

我们向YOLO展示一些更新!我们做了一大堆小的设计改动来使它变得更好。我们还训练了这个非常棒的新网络。它比上一次稍大,但更准确。不过,还是很快,别担心。在28.2 mAP下,320×320 YOLOv3在22 ms内运行,与SSD一样精确,但速度快三倍。当我们查看旧的.5 IOU mAP检测指标YOLOv3非常好。 它在Titan X上在51毫秒内达到57.9 AP50AP_{50} ,与RetinaNet相比,在198毫秒时达到57.5AP50AP_{50} ,性能相似,但速度提高3.8倍。

方法

Bounding Box Prediction

对于一个目标,我们预测四个值 tx,ty,tw,tht_x, t_y, t_w, t_h(分别对应网格中心坐标以及宽和高) 来表示目标框:

bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth\begin{aligned} b_{x} &=\sigma\left(t_{x}\right)+c_{x} \\ b_{y} &=\sigma\left(t_{y}\right)+c_{y} \\ b_{w} &=p_{w} e^{t_{w}} \\ b_{h} &=p_{h} e^{t_{h}} \end{aligned}

在训练中,我们使用误差平方和损失。

Class Prediction

每个框使用多标签分类来预测边界框可能包含的类别。我们不使用softmax,因为我们发现它对于良好的性能是不必要的,相反,我们只使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失进行分类预测。

当我们转移到更复杂的领域时,如开放图像数据集[ 7 ],这个公式会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用softmax会强制假设每个盒子都有一个类,而这通常不是这样。多标签方法可以更好地对数据建模。

Predictions Across Scales

YOLOv3预测3种不同尺度的方框。 我们的系统使用与金字塔网络相似的概念[8]从这些尺度中提取特征。 从我们的基础特征提取器中,我们添加了几个卷积层。 其中最后一个预测了三维张量编码边界框,对象和类预测。在我们用COCO [10]进行的实验中,我们预测每个尺度有3个框,因此对于4个边界框偏移预测,1个对象存在预测和80个分类预测,输出张量为 N×N×[34+1+80]N×N×[3 *(4 + 1 + 80)]

接下来,我们从前面的2个图层中获取特征图,然后将其乘以2×。 我们还从网络中的早期获取了一个功能图,并使用连接将其与我们的上采样功能合并。 这种方法允许我们从上采样的特征中获得更有意义的语义信息,并从早期的特征图中获得更细粒度的信息。 然后,我们再添加一些卷积层来处理这个组合特征映射,并最终预测相似的张量,尽管现在是两倍大小。

我们再次执行相同的设计来预测最终规模的容器。 因此,我们对3rd scale的预测受益于所有先前的计算以及网络早期的细粒度特征。

我们仍然使用k均值聚类来确定我们的bounding box先验。我们只是随便选择了9个clusters和3个scales,然后将clusters平均划分成不同的scales。在COCO数据集上,9个聚类是: (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)

Feature Extractor

我们使用一个新的网络进行特征提取。我们的新网络是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倍。

我们仍然在完整的图像上训练,没有任何硬性的负面挖掘。我们使用多尺度训练,大量的数据扩充,批量标准化,所有标准的东西。

性能

尝试了但是没有效果的方法

Last updated

Was this helpful?