PP-YOLO论文阅读笔记

PP-YOLO: An effective and efficient implementation of object detector
期刊: arXiv preprint年份:2020
主要内容列举:
① :实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景;
② ②:添加了一系列几乎不会增加推断时间的技巧,以提高模型的整体性能;
③:PP-YOLO可以在有效性(45.2%mAP)和效率(72.9 FPS)之间实现更好的平衡,超过现有的最先进探测器,如EfficientDet和 YOLOv4。
(一)数据方面
1.数据集
CoCo
(二)方法方面
1.创新工作
PP-YOLO 的目标是实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景,而不是提出一种新的检测模型。PP-YOLO主要尝试将现有的各种技巧结合起来,在保证速度几乎不变的情况下,尽量不增加模型参数和触发器的数量,以达到尽可能提高检测器精度的目的。通过结合多种技巧,PP-YOLO可以在有效性(45.2%mAP)和效率(72.9FPS)之间实现更好的平衡,超过现有的最先进探测器,如EfficientDet和 YOLOv4
PP-YOLO的重点是如何堆叠一些几乎不影响效率的有效技巧以获得更好的性能。这些技巧中的许多无法直接应用于YOLOv3的网络结构,因此需要进行小的修改。此外,在哪里添加技巧也需要仔细考虑和实验。它更像是一个配方,告诉你如何一步一步地构建一个更好的检测器。
2.模型结构
PP-YOLO论文阅读笔记_第1张图片

一个anchor-based的one-stage的检测器通常由backbone、neck(通常为特征金字塔网络(feature pyramid network,FPN))和用于对象分类和定位的head组成。它们也是大多数基于anchor-point的one-stage anchor-free检测器中的常见部件。PP-YOLO首先修改了YOLOv3的结构,并引入了一个改进版本,该版本取代了作为 baseline的ResNet50-vd-dcn的主干。
对于backbone,直接使用最常见的ResNet。对于数据扩充,直接使用了最基本的MixUp。一个原因是ResNet 的应用越来越广泛,使得各种深度学习框架针对ResNet系列进行了深度优化,在实际部署中会更加方便,在实际应用中会有更好的推理速度。另一个原因是主干网的更换和数据扩充是相对独立的因素,几乎与论文讨论的技巧无关。

  1. Backbone
    1)Backbone
    PP-YLO中用ResNet50-vd替换原来YOLOv3的主干DarkNet-53。因为直接用ResNet50-vd代替DarkNet-53会影响YOLOv3探测器的性能。因此,PP-YOLO用deformable convolutional layers替换ResNet50-vd中的一些卷积层。DCN (Deformable Convolutional Networks)的有效性已在许多检测模型中得到验证。DCN本身不会显著增加模型中的参数和FLOPs,但在实际应用中,过多的DCN层会大大增加传输时间。因此,为了平衡效率和有效性,PP-YOLO在最后阶段仅使用DCN替换3x3卷积层。PP-YOLO将这种改良后的backbone记为ResNet50-vd-dcn,第3、4和5阶段的输出表示为C、C和Cs。
    2)Detection Neck
    然后使用FPN构建特征金字塔,特征地图之间具有横向连接。特征图C3、C4、C5输入FPN模块。我们将金字塔级别1的输出特征映射表示为P,在实验中,1-3,4,5。
    3)Detection Head
    YOLOv3的Detection Head非常简单。它由两个卷积层组成。采用3×3卷积层和1×1卷积层进行最终预测。每个最终预测的输出通道为3(K+5),其中K为类数。每个最终预测图上的每个位置都与三个不同的anchor关联。对于每个anchor,前K个通道是K类概率的预测,
    剩下4个通道是边界框定位的预测,最后一个通道是预测的客观评分。对于分类和定位,相应地采用了交叉嫡损失和L1损失。
    4)Tricks
    (1) Larger Batch Size:使用较大的批量可以提高训练的稳定性并获得更好的结果。在 PP-YOLO里,将训练批大小从64更改为192,并相应地调整训练计划和学习速率。
    (2)EMA:在训练模型时,保持训练参数的移动平均值通常是有益的。使用平均参数的评估有时会产生比最终训练值更好的结果。指数移动平均(EMA)使用指数衰减计算训练参数的移动平均值。
    (3)DropBlock: DropBlock是结构化的 dropout 的一种形式,其中要素图的相邻区域中的单元一起被删除。与其他的文章不同,PP-YOLO只将 DropBlock应用到FPN中,因为实验发现在 backbone中添加 DropBlock 会导致性能下降。
    (4)loU Loss:边界框回归是目标检测的关键步骤。在YOLOv3中,采用Ll Loss进行边界盒回归。它不是根据mAP评估指标定制的, mAP评估指标强烈依赖于联合上的交集(IoU)。已提出loU损失和其他变化,如CloU损失和 GloU损失,可以解决这一问题。与YOLOv4不
    同的是,PP-YOLO不直接用loU Loss替换Ll Loss,而是添加另一个分支来计算loU Loss.实验发现各种loU Loss的改进结果是相似的,因此选择了最基本的loULoss。
    (5)loU Aware:在 YOLVO3中,将分类概率和目标分数作为最终的检测置信度,不考虑定位精度。为了解决这个问题,增加了一个loU预测分支来测量定位精度。在训练过程中,采用loU感知丢失来训练loU预测分支。在推理过程中,将预测的 IoU乘以分类概率和客观评分来计算最终检测置信度,这与定位精度更相关。然后将最终检测置信度用作后续NMS 的输入。 loU感知分支将增加额外的计算成本。但是,只添加了0.01%的参数和0.0001%的FLOPs,这几乎可以忽略。
    (6) Grid Sensitive:
    x=s·(g,+α·o(P,)-(a -1)/ 2)y=s -(g,+a -a(p,)-(a-1)/ 2)
    其中α为sigmoid 函数,g,和g,为整数,s为比例因子,x和y是边界框中心的坐标。其中α设置为1.05。这使得模型更容易预测精确位于栅格边界上的边界框中心。Grid Sensitive添加的FLOPs非常小,可以完全忽略。
    (7)Matrix NMS: Matrix NMS源于Soft-NMS,Soft-NMS 将其他检测分数衰减为其重叠的非单调递减函数。然而,这种过程与传统Greedy NMS一样是顺序的,不能并行实现。Matrix NMS从另一个角度观察此过程,并以并行方式实施。因此,Matrix NMS 比传统NMS 更快,不会带来任何效率损失。
    (8)CoordConv : CoordConv工作原理是通过使用额外的坐标通道,让 convolution访问自己的输入坐标。CoordConv允许网络学习完全translation invariance或不同程度的translation dependence。考虑到Coord-Conv将向卷积层添加两个输入通道,将添加一些参数和 FLOPs。
    为了尽可能地减少效率损失,PP-YOLO不改变 backbone中的卷积层,只使用CoordConv替换FPN中的1x1卷积层和检测头中的第一卷积层。
    (9)SPP:空间金字塔池〈Spatial Pyramid Pooling,SPP)将SPM集成到CNN 中,并使用最大池化操作而不是词袋操作。YOLOv4通过将最大池输出与内核大小kk
    接走己来来s用SPP模块,其中 k={1,5,9,13},步长等于1。在这种设计下,相对较大的k×k最大池化有效地增加了主干特征的接收视野。具体而言,SPP仅应用于顶部特征图。SPP本身不引入任何参数,但后续卷积层的输入通道数将增加。因此,引入了大约2%的额外参数和1%的额外FLOPs。
    (10) Better Pretrain Model:在 ImageNet 上使用分类精度更高的预训练模型可能会产生更好的检测性能。这里,PP-YOLO使用蒸馏后的ResNet50-vd模型作为预训练模型。这显然不会影响检测器的效率。
    结果方面:

PP-YOLO论文阅读笔记_第2张图片

PP-YOLO论文阅读笔记_第3张图片

你可能感兴趣的:(论文阅读,1024程序员节,python,机器学习,论文阅读,人工智能)