YOLO系列目标检测算法目录 - 文章链接
本文总结:
深度学习知识点总结
专栏链接:
https://blog.csdn.net/qq_39707285/article/details/124005405
此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。
2018.4.8 YOLOv3:《YOLOv3: An Incremental Improvement》
YOLOv3在YOLOv2基础上做了一点小小的改动,网络变得稍大了一点但更加准确。
在YOLOv2中,网络预测4个框的坐标 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th,如果单元格与图像左上角的偏移量为 c x , c y c_x,c_y cx,cy,先验框的宽度和高度是 p w , p h p_w,p_h pw,ph,则预测值对应于:
训练的使用的是平法差loss,如果某个坐标的真值为 t ∗ ^ \hat{t_*} t∗^,则梯度为真值(从GT框计算得到)减去我们的预测值: t ∗ ^ − t ∗ \hat{t_*}-t_* t∗^−t∗。通过转换上述方程,可以很容易地计算出该真值。
YOLOv3使用逻辑回归预测每个边界框的objectness分数。如果先验框与GT目标的重叠度大于之前的任何其他边界框,则该值应为1。如果先验框不是最好的,但与GT目标的重叠度超过了设定的阈值(像Faster R-CNN一样),则忽略该预测结果,本文设置的阈值为0.5。 与Faster R-CNN不同,我们的系统只为每个GT目标分配一个先验框。如果先验框未指定给GT目标,则坐标或类预测没有loss,只有objectness有loss。
每个框使用多标签分类预测可能包含的类。YOLOv3没有使用softmax,因为我们发现它是不必要的,而只是使用独立的逻辑分类器。在训练期间,我们使用binary cross-entropy loss (BCE Loss)进行类别预测。
当我们转向更复杂的领域,如Open Images Datasets时,此公式会有所帮助。在这个数据集中,有许多重叠的标签(即女性和人)。使用softmax强加了一个假设,即每个框都只有一个类,但通常情况并非如此。多标签方法可以更好地建模数据。
YOLOv3以3种不同的比例预测框。使用类似于特征金字塔网络的概念从这些尺度中提取特征。从基本特征提取器中,添加了几个卷积层,最后一个预测了三维张量编码的边界框、objectness和class。在对COCO的实验中,在每个尺度上预测了3个box,因此张量是N×N×[3∗(4+1+80),用于4个边界框偏移量、1个objectness预测和80个类别预测。
接下来,从前面的两层中提取特征图,并将其上采样放大2倍。还从网络早期层中获取了一个特征图,并使用串联将其与上采样特征图合并。 这种方法使得从上采样的特征中获取更有意义的语义信息,并从早期的特征映射中获取更细粒度的信息。然后,再添加一些卷积层来处理这个组合的特征图,并最终预测出一个类似的张量。
YOLOv3再次进行相同的设计,以预测另一尺度的box。 因此,对第三尺度的预测得益于所有先前的计算以及网络早期的细粒度特征。
仍然使用k-means聚类来确定的先验框。只是随意选择了9个簇和3个尺度,然后在尺度上平均划分簇。在COCO数据集上,9个簇为:(10×13); (16×30); (33×23); (30×61); (62×45); (59×119); (116 × 90); (156 × 198); (373 × 326).
下图中蓝色框为聚类得到的先验框。黄色框式ground truth,红框是对象中心点所在的网格。
新设计了特征提取网络,结合YOLOv2的Darknet19和残差网络结构,新的网络使用连续的3×3和1×1卷积层,现在新增一些shortcut连接,并且模型增大了,共有53个卷积层,所以称之为Darknet-53!
这个新网络比Darknet-19强大得多,但仍比ResNet-101或ResNet-152更高效。以下是在ImageNet上的一些结果:
Darknet-53还实现了每秒最高的浮点运算。这意味着网络结构可以更好地利用GPU,使其评估更高效,从而更快。这主要是因为ResNets的层太多,效率不高
仍然使用完整的图像训练,没有使用硬负样本采用或任何其他东西。使用多尺度训练、大量的数据增强、BN以及所有标准的方法。
YOLOv3表现,对比结果见表3。就COCO的奇怪平均AP度量方法而言,它与SSD变体相当,但速度快了3倍。但在这种评价指标下,它仍然落后于其他像RetinaNet这样的模型。
然而,当使用“旧”的检测指标IOU=0.5(或图表中的AP50)时,YOLOv3非常强大。它几乎与RetinaNet不相上下,远远高于SSD变体。这表明YOLOv3是一种非常强大的检测器,擅长为物体制作适当的框。然而,随着IOU阈值的增加,性能显著下降,这表明YOLOv3很难使框与目标完全对齐。
过去,YOLO检测小目标表现太好。然而,现在我们看到了这一趋势的逆转。通过新的多尺度预测,可以看到YOLOv3具有相对较高的APs性能。然而,它在中型和大型目标上的性能相对较差。还需要更多的调查来弄清真相。
当在AP50度量上绘制精度与速度的关系图时(见图3),可以看到YOLOv3比其他检测系统有显著的优势。也就是说,它更快更好。
除了以上技术之外,还在YOLOv3上尝试了很多方法,很多都不起作用,这也是很重要的。
目前来说YOLOv3方案非常不错,至少看起来是局部最优的。这些技术中的一些可能最终会产生好的结果,也许它们只是需要一些调整来稳定训练。
YOLOv3是一个很好的检测器,快、准确,虽然在AP0.5-AP0.95这种评价指标上不是最优的,但是在AP0.5指标上是非常好的。
为什么要改变指标呢? 最初的COCO论文只有一句话:“评估服务器完成后,将添加评估指标的完整讨论”。Russakovsky等人报告说,人类很难区分0.3和0.5的差距!“训练人类目视检查差别为0.3的边界框,并将其与差别为0.5的边界框区分开来是特别困难的”。如果人类很难分辨出差异,这又有什么重要的呢?