简介

图1:论文原文
本文介绍的是百度于2020年提出的目标检测算法,PP-YOLO,它主要是基于YOLOv3实现。首先,PP-YOLO改进了YOLOv3中的骨干网络、网络颈、网络头等,然后添加诸多技巧完成对改进网络的优化。实验结果为在COCO数据集上的mAP为45.2%、FPS为72.9,好于当前热门的EfficientDet和YOLOv4等模型。论文原文 源码
0. Abstract
目标检测在计算机视觉任务中扮演了重要角色。通常,由于计算机硬件的限制,需要牺牲模型精度来保证其推理速度。因此在设计网络时应充分考虑精度与速度之间的平衡。而PP-YOLO的主要考虑点是在一定程度上平衡模型的精度和速度,而非设计一个新颖的检测模型。PP-YOLO基于YOLOv3实现,通过添加大量技巧来提高模型的精度,同时也保证了模型的推理速度。
论文贡献:(一)提出对YOLOv3的改进,PP-YOLO;(二)PP-YOLO兼顾了模型的精度和速度;(三)PP-YOLO超越了YOLOv4和EfficientDet。
1. Introduction
YOLO系是目标检测检测算法中的一个重要系列,它们在精度和速度间作了有效的平衡。从YOLOv1到YOLOv3,模型均发生了很大的改变。而YOLOv4则是在YOLOv3的基础上通过添加大量的技巧来显著提高模型的性能。论文提出的PP-YOLO也是基于以上思路,在不增加模型推理时间的基础上通过添加大量技巧来提高模型的整体性能。
与YOLOv4不同,PP-YOLO没有试图设计新颖的骨干网络或数据增强方法,亦或是使用NAS得到超参数。在骨干网络部分,PP-YOLO使用ResNet;数据增强使用MixUp。上述选择的原因有两点:ResNet系列优化力度很大,能够很好地满足实际部署等需求;骨干网络的替换和数据增强方法是相对独立的部分,不会对后续提到的技巧产生影响。同时,NAS通常会消耗更多的计算资源,其不具有通用性。所以,PP-YOLO的超参数设置同YOLOv3。
论文的设计初衷是使用大量技巧来提高模型的性能,同时不会降低其推理速度。通常,技巧不能直接应用于YOLOv3而需要一些小改动。论文并没有设计一个新颖的检测器,而是以PP-YOLO的例子来说明如何一步步构建一个高效的目标检测器。
2. Related Work
当前,Anchor-Based仍是主流的目标检测算法。其最早可追溯到RCNN系列,它的核心思想是引入锚框,可以看作是预定义的先验框,以此为边界框回归提供先验知识。其中又可以分为一阶段检测算法和两阶段检测算法两个分支:一阶段检测算法中,YOLO系列、RetinaNet、RefineDet、EfficientDet等较为经典的模型;两阶段检测算法中,RCNN系列、ReidentNet等较为经典的模型。除此之外,Anchor-Free方法正受到广泛的关注,出现大量如DenseBox、UnitBox、FSAF、FCOS、FoveaBox、SAPD、CornerNet、CenterNet、ExtremeNet、RepPoint等经典方法。这类方法消除了手工设计的限制,在多尺度目标检测下展现出了巨大的潜力
3. Method
3.1 Architecture
Backbone 在原始的YOLOv3中,特征提取部分使用的是DarkNet53。论文使用残差网络提取特征,同时为了保证模型的精度而引入DCN。最后,使用ResNet50-vd-dcn作为骨干网络。
Detection Neck 论文使用FPN作为网络颈。
Detection Head 论文沿用YOLOv3的检测头,每一个分支的输出通道数是3(K+5)。对于分类和定位,分别使用交叉熵损失函数和L1损失函数。综上,PP-YOLO的基本结构如下:

图2:PP-YOLO结构
3.2 Selection of Tricks
上一部分介绍了PP-YOLO的基本结构,这部分将介绍其中使用的基本技巧。
Large Batch Size 增大批次可以提高训练稳定性,从而能够获得更好的结果。论文使用的批次大小为192,同时相应地调整训练策略以及学习率。
EMA 在训练模型时,保持训练参数平均移动往往有益于训练更优的模型, 使用平均参数评估有时会产生比最终训练值更好的结果。 指数平均移动是深度学习中常用到的优化方法,由于在训练深度学习模型时,模型权重在最后几步可能会在最优点处徘徊。EMA的思路是取最后几步的平均值作为最后的结果,从而增加模型的鲁棒性。即:WEMA=λWEMA+(1−λ)W(1)
其中,λ=0.99998。
DropBlock DropBlock是在网络模型上随机丢弃的一种正则化方法,例如将特征图上的连续区域丢弃。不同于以往,PP-YOLO仅在FPN使用DropBlock。
IoU Loss 与YOLOv4中使用IoU损失替换L1损失不同的是,PP-YOLO通过额外添加一个分支引入IoU损失。
IoU Aware 在YOLOv3中,将分类概率和目标分数的乘积作为最后的分类置信度,而没有考虑定位精度。为了处理这个问题,论文引入一个IoU预测分支。在训练过程中,使用感知IoU损失来训练这个分支。在推理阶段,最后的分类置信度由分类概率、目标分数和IoU值乘积得到。
Grid Sensitive Grid Sensitive是YOLOv4中采用的一种优化方法。在原始的YOLOv3中,边界框中心坐标通过以下式子得到:x=s⋅(gx+σ(px)) y=s⋅(gy+σ(py))(2)
其中,σ是Sigmoid函数、g∗是坐标值、s是缩放因子。显然,x或y的值不可能为s⋅gx或s⋅(gx+1),这样边界框的中心不可能到达网格的边界。论文对此做了如下改动:x=s⋅(gx+σ(px)−(α−1)/2)(3)
y=s⋅(gy+σ(py)−(α−1)/2)(4)
其中,α=1.05。
Matrix NMS Matrix NMS是在Soft NMS的基础上改进得到的,解决了Soft NMS无法并行实现的问题。
CoordConv CoordConv的提出是为了解决经典卷积神经网络无法感知坐标信息的问题。CoordConv在普通卷积的基础上添加两个通道分别表示横向和纵向的位置,用于给卷积操作提供自身位置信息。CoordConv使得网络可以具备完全或部分平移不变性。
SPP SPP最早来自于SPPNet,其提出的目的是解决卷积神经网络的输入需要固定尺寸的问题。在PP-YOLO中引入SPP以增大网络感受也,且仅引入少量额外的参数。
Better Pretrain Model 使用预训练的ResNet50-vd模型。
4. Experiment

图3:各trick的实验结果对比

图4:各目标检测算法的实验结果对比
5. Conclusion
本文介绍的PP-YOLO是针对YOLOv3的又一改进,效果优于YOLOv4,模型基于PaddlePaddle实现。与YOLOv4类似,PP-YOLO通过引入诸多技巧逐步提高模型性能。但作者也提到,不能一味地引入技巧,而必须要平衡模型的精度与速度,以及保证训练模型时的稳定性。
参考
- Long X, Deng K, Wang G, et al. PP-YOLO: An Effective and Efficient Implementation of Object Detector[J]. arXiv preprint arXiv:2007.12099, 2020.
完