关于YOLOv3:我们主要是从其他人那里获得好点子。我们还训练了一个更好的新的分类网络。本文将从头开始介绍整个系统。
图1:这张图是从Focal Loss论文拿来并修改的。 YOLOv3的运行速度明显快于其他性能相似的检测方法。运行时间来自M40或Titan X,基本上用的是相同的GPU。
边界框预测
在YOLO9000之后,我们的系统使用维度聚类(dimension cluster)作为anchor box来预测边界框[13]。网络为每个边界框预测4个坐标,,。如果单元格从图像的左上角偏移了,并且之前的边界框具有宽度和高度,则预测对应以下等式:
在训练期间,我们使用平方误差损失的和。如果一些坐标预测的ground truth是
YOLOv3使用逻辑回归来预测每个边界框的 objectness score。如果边界框比之前的任何其他边界框都要与ground truth的对象重叠,则该值应该为1。如果先前的边界框不是最好的,但确实与ground truth对象重叠超过某个阈值,我们会忽略该预测,如Faster R-CNN一样[15]。我们使用.5作为阈值。 但与[15]不同的是,我们的系统只为每个ground truth对象分配一个边界框。如果先前的边界框未分配给一个ground truth对象,则不会对坐标或类别预测造成损失,只会导致objectness。
图2: 具有dimension priors和location prediction的边界框。我们预测了框的宽度和高度,作为cluster centroids的偏移量。我们使用sigmoid函数预测相对于滤波器应用位置的边界框的中心坐标。这个图是从YOLO9000论文拿来的。
类别预测
每个框使用多标签分类来预测边界框可能包含的类。我们不使用softmax,因为我们发现它对于性能没有影响,而是只是使用独立的逻辑分类器。在训练过程中,我们使用二元交叉熵损失来进行类别预测。
这个公式有助于我们转向更复杂的领域,如Open Images数据集[5]。在这个数据集中有许多重叠的标签(例如,Woman和Person)。可以使用softmax强加一个假设,即每个box只包含一个类别,但通常情况并非如此。多标签方法可以更好地模拟数据。
不同尺度的预测
YOLOv3可以预测3种不同尺度的box。我们的系统使用一个特征金字塔网络[6]来提取这些尺度的特征。在基本特征提取器中,我们添加了几个卷积层。其中最后一层预测三维tensor编码的边界框,objectness 和类别预测。我们在COCO[8]数据集的实验中,每个尺度预测3个box,因此tensor为N×N×[3 *(4 + 1 + 80)],4个边界框offset,1 objectness预测,以及80个类别预测。
接下来,我们从之前的2个层中取得特征图,并对其进行2倍上采样。我们还从网络获取特征图,并使用 element-wise 添加将其与我们的上采样特征进行合并。这种方法使我们能够从上采样的特征和早期特征映射的细粒度信息中获得更有意义的语义信息。然后,我们再添加几个卷积层来处理这个组合的特征图,并最终预测出一个相似的Tensor,虽然现在它的大小已经增大两倍。
我们再次执行相同的设计来对最终的scale预测box。因此,我们对第3个scale的预测将从所有之前的计算中获益,并从早期的网络中获得精细的特征。
我们仍然使用k-means聚类来确定bounding box priors。我们只是选择了9个clusters和3个scales,然后在整个scales上均匀分割clusters。在COCO数据集上,9个cluster分别为(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卷积层,但现在也有一些shortcut连接,并且网络的大小显著更大。它有53个卷积层,所以我们称之为...... Darknet-53!
这个新网络比Darknet19强大得多,而且比ResNet-101或ResNet-152更高效。以下是在ImageNet上的结果:
表2:网络的比较。各网络的准确性、Bn Ops、每秒浮点运算次数,以及FPS。
每个网络都使用相同的设置进行训练,并在256×256的单精度进行测试。Runtime是在Titan X上以256×256进行测量的。可以看到,Darknet-53可与最先进的分类器相媲美,但浮点运算更少,速度更快。Darknet-53比ResNet-101性能更好,而且速度快1.5倍。Darknet-53与ResNet-152具有相似的性能,速度提高2倍。
Darknet-53也可以实现每秒最高的测量浮点运算。这意味着网络结构可以更好地利用GPU,从而使其评估效率更高,速度更快。这主要是因为ResNets的层数太多,效率不高。
训练
我们仍然用完整的图像进行训练。我们使用不同scale进行训练,使用大量的数据增强,批规范化,等等。我们使用Darknet神经网络框架进行训练和测试[12]。