admin管理员组

文章数量:1794759

PP

PP

检测中有效的tricks集合,不包括backbone以及数据增广方面的tricks
Github:

Abstract:

目标检测是计算机视觉中最重要的领域之一,在各种实际场景中发挥着关键作用。由于硬件的限制,在实践中通常必须牺牲精度以确保检测器的推断速度。因此,必须考虑物体检测器的有效性和效率之间的平衡。本文的目的是实现一种可以在实际应用场景中直接应用的具有相对平衡的有效性和效率的目标检测器,而不是提出一种新颖的检测模型。考虑到YOLOv3已在实践中得到广泛应用,我们开发了一种基于YOLOv3的新型目标检测器。我们主要尝试结合各种几乎不增加模型参数和FLOP数量的技巧,以实现在确保速度几乎不变的情况下尽可能提高检测器精度的目标。由于本文中的所有实验都是基于PaddlePaddle进行的,因此我们将其称为PP-YOLO。通过结合多种技巧,PP-YOLO可以在效率(45.2%mAP)和效率(72.9 FPS)之间取得更好的平衡,超越了现有的最新检测器,例如EfficientDet和YOLOv4。

Architecture:


1.Backbone:将yolov3中的darknet53替换为resnet50_vd+DCN

2.Neck:FPN结构

3.Head:FPN的3个层级特征分别输出1个Head,所以输出为3(k+5)。其中,k为类别个数,4为回归的相对坐标,1为Objectness(目标可靠性)的得分

Tricks:

1.Larger Batch Size:由于BN的问题,所以训练采用大的batch size有助于性能提升

2.Exponential Moving Average (EMA):训练模型时,保持训练参数的移动平均值通常是有益的。 使用平均权重参数在评估有时会产生比最终训练值更好的结果。其中公式为:

3.DropBlock:图中的三角形标记,与原始论文不同,本文是将DropBlock应用于检测的Head,因为本文发现将DropBlock添加到Backbone会导致性能下降。 Drop-Block的详细注入点在图2中用“三角形”,即将DropBlock应用在FPN结构中

4.IoU Loss:回归损失函数使用IoU Loss替换yolov3中的L1 loss

5.IoU Aware:yolov3中使用分类得分与objectness分数相乘作为最终的检测置信度,而这不考虑定位的精度,为了解决这个问题,增加了一个IoU预测分支来测量定位的准确性。 在训练过程中,采用IoU感知损失来训练IoU预测分支。 在推论过程中,将预测的IoU乘以分类概率和客观性得分,以计算最终的检测置信度,这与定位精度更加相关。 然后将最终的检测置信度用作后续NMS的输入。

6.Grid Sensitive

yolov3采用的回归方法如上式,其中x,y是目标中心,s为尺度因子,gx,gy为预测的网格中心整数。显然,x和y不能精确等于s x gx或s x(gx + 1)。 这使得很难预测仅位于网格边界上的边界框的中心。 通过将公式更改如下,其中a设置为1.05,这使模型更容易预测准确位于网格边界上的边界框中心:

7.Matrix NMS:Solov2中提出的速度更快的nms方法,在soft-nms等基础上进行并行化加速,并且性能还略有提升

8.CoordConv:

CoordConv的工作原理是通过使用额外的坐标通道使卷积访问其自身的输入坐标。 CoordConv允许网络学习完整的变换不变性或不同程度的变换依赖性。 考虑到Coord-Conv将向卷积层添加两个输入通道,因此将添加一些参数和FLOP。 为了尽可能减少效率的损失,本文不更改backbone网络中的卷积层,而仅用CoordConv替换了FPN中的1x1卷积层和检测头中的第一个卷积层。 CoordConv的详细注入点在图2中用“钻石”标记

9.SPP:

经典方法之一了,YOLOv4通过串联内核大小为k x k的最大池输出来应用SPP模块,其中k = {1、5、9、13},步长等于1。在这种设计下,相对较大的k x k最大池有效地增加了 骨干特征感受野范围。 详细而言,SPP仅应用于图2中带有“星号”标记的顶部特征图。

10.Better Pretrain Model:好的预训练模型对于性能提升不用多说

Experiments:


本文标签: pp