YOLO V3
全名
YOLOv3: An Incremental Improvement
源码
https://pjreddie.com/yolo/
2.The Deal
2.1.Bounding Box Predection
YOLO V3 使用维簇作为锚框来预测边界框。网络预测每个边界框tx、ty、tw、th的4个坐标。如果单元格从图像的左上角偏移(Cx,Cy)并且边界框先前具有宽度和高度Pw,Ph,那么有:
我们预测盒子的宽度和高度是由聚类中心的偏移量决定的。我们使用sigmoid函数来预测盒子的中心坐标相对于滤波器的位置。
在训练过程中,我们使用误差损失的平方和。如果某个坐标预测的真值是,那么梯度就是真值(根据ground truth box计算)减去我们的预测:。
YOLO v3使用Logistic回归预测每个边界框的客观性分数。如果边界框先验与目标真值的重叠程度大于任何其他边界框先验的重叠程度,则该值应为1。
如果边界框先验不是最好的,但与ground truth重叠超过某个阈值,我们就采用Faster R-CNN的做法。阈值我们设置为0.5。与Faster R-CNN不同的是,我们的系统只为每个ground truth对象预先分配一个边界框。如果没有将边界框先验分配给ground truth对象,则不会造成坐标或类别预测的损失,只会造成客观性损失。
2.2.Class Prediction
每个框使用多标签分类来预测边界框可能包含的类。我们没有使用Softmax,而是使用独立的逻辑分类器。在训练过程中,我们使用binary cross-entropy loss(二进制交叉熵损失)进行类预测。当我们移动到更复杂的领域(如Open Images数据集)时,此公式会有所帮助。在这个数据集中有许多重叠的标签(即女人和人)。使用Softmax会强制假设每个盒子只有一个类,但实际情况往往并非如此。多标签方法可以更好地对数据进行建模。
2.3.Predictions Across Scales
YOLO v3可以预测3种不同比例的方框。我们的系统使用类似于特征金字塔网络的概念从这些尺度中提取特征。从我们的基本特征提取器中,我们添加了几个卷积层。最后一个预测了一个三维张量编码的边界框、对象和类预测。在我们使用COCO的实验中,我们在每个尺度上预测了3个框,因此张量为N×N×[3∗(4+1+80)],用于4个边界框偏移、1个客观性预测和80个类别预测。
接下来,我们从前面的两层中提取特征地图,并对其进行2倍的上采样。我们还从网络的早期获取一个feature map,并使用连接将其与我们的上采样功能合并。这种方法允许我们从上采样的特性中获得更有意义的语义信息,并从早期的feature map中获得更细粒度的信息。然后,我们再添加几个卷积层来处理这个组合的特征图,并最终预测出一个类似的张量,尽管现在它的大小是原来的两倍。
我们再次执行相同的设计来预测最终比例的框。
我们仍然使用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
我们使用一种新的网络进行特征提取。我们的新网络是在YOLOv2,Darknet-19中使用的网络和新奇的残差网络之间的混合方法。我们的网络使用连续的3×3和1×1的卷积层。它有53层卷积层,所以我们叫它Darknet-53!
这个新网络比Darknet19强大得多,但仍然比ResNet-101或ResNet-152更有效率。下面是一些ImageNet的结果:
每个网络都使用相同的设置进行训练,并以256×256分辨率的 single crop accuracy 进行测试。
3.How We Do
就COCOs奇异平均AP指标而言,YOLO V3与SSD变体相当,但速度快3倍。尽管如此,在这个指标上,它仍然远远落后于RetinaNet等其他模型。
但是,当我们查看IOU=0.5(或图表中的AP50)的mAP的“旧”检测度量时,YOLO v3非常强大。它几乎与RetinaNet平起平坐,远远超过SSD变种。这表明YOLO v3是一种非常强大的探测器,擅长为对象生成像样的盒子。
但是,随着IOU阈值的增加,性能会显著下降,这表明YOLOv3很难使盒子与对象完全对齐。
现在,YOLO不仅仅针对于小物件,但是仍然在中型和较大尺寸的对象上的性能相对较差。通过新的多尺度预报,我们看到YOLO v3具有相对较高的APs性能。然而,它在中型和较大尺寸的对象上的性能相对较差。
4. Things We Tried That Didn’t Work
Anchor box x, y offset predictions.
我们尝试使用普通锚框预测机制,其中使用线性激活将x,y偏移量预测为框宽或框高的倍数。然而其降低了模型的稳定性,效果不是很好。
Linear x, y predictions instead of logistic.
我们尝试使用线性激活来直接预测x,y偏移量,而不是Logistic激活。这会导致mAP下降。
Focal loss.
我们试着用焦距损失。它使我们的mAP下降了大约2个点。YOLOv3可能已经对焦点损失试图解决的问题很健壮了,因为它有单独的客观性预测和条件类预测。
Dual IOU thresholds and truth assignment.
Faster R-CNN在训练中使用两个IOU阈值。如果一个预测与真值重叠达到0.7,他就是一个正样本,如果是0.3-0.7,就会被忽略,如果小于0.3,那么对于所有的真值目标,他都是一个负样本。我们在YOLOv3中使用相似的策略,但是没有得到较好的结果。