YOLO系列目标检测算法——PP-YOLOE

YOLO系列目标检测算法目录 - 文章链接


本文总结:

  1. 本文借鉴YOLOX的成功方法,在PP-YOLOv2的基础上进行了优化,使用了anchor-free模式、更强大的backbone和neck结构,配备了CSPRepResStage、ET-head和动态标签分配算法TAL等等;
  2. PP-YOLOE避免使用可变形卷积和Matrix NMS等操作,以支持更好的部署在各种硬件上。

深度学习知识点总结

专栏链接:
https://blog.csdn.net/qq_39707285/article/details/124005405

此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。



YOLO系列目标检测算法-PP-YOLOE
2022.3.30 PP-YOLOE:《PP-YOLOE:PP-YOLOE: An evolved version of YOLO》

1. PP-YOLOv2回顾

PP-YOLOv2的主要功能点包含:

  • Backbone:带有可变性卷积的ResNet50-vd
  • Neck:带有SPP layer和DropBlock的PAN
  • Head:轻量级的IoU aware head
  • ReLU激活函数用于backbone中,Mish激活函数用于neck
  • 和YOLOv3保持一致,PP-YOLOv2仅为每个GT目标分配一个anchor
  • 除了分类loss、回归loss和objectness loss之外,PP-YOLOv2还使用IoU loss和IoU aware loss来提高性能
  • 更多细节参考文章PP-YOLOv2

2 PP-YOLOE的改进

2.1 Anchor-free

  PP-YOLOv2中使用的使anchor-based的模式,这种模式引入了许多参数,且在不同数据集上需要进行不同的手工配置,扩展到其他数据集很复杂,所以在PP-YOLOE中将其改为anchor-free模式。

  参考FCOS(在每个像素上平铺一个锚点)之后,本文为三个检测head设置上限和下限,以将GT分配给相应的特征图。然后,计算边界框的中心以选择最近的像素作为正样本。参考YOLO系列,预测4D向量(x,y,w,h)用于回归,实验结果如表2所示,该修改使模型速度稍快,但损失了0.3AP。尽管根据PP-YOLOv2的锚点大小仔细设置了上限和下限,但基于锚点的方式和无锚点的方式之间的分配结果仍存在一些细微的不一致,这可能会导致精度下降。
在这里插入图片描述

2.2 Backbone和Neck

在这里插入图片描述
  通过结合残差连接和dense连接,提出了一种新的RepResBlock,用于backbone和neck。

  参考TreeBlock,RepResBlock在训练阶段如图3(b)所示,推理阶段如图3(c)所示。
首先简化了TreeBlock(如图3(a)),然后将串联操作替换为元素加法操作,因为RMNet在某种程度上显示了这两种操作的结果相近,因此,在推断阶段,将RepResBlock重参数化为ResNet-34以RepVGG样式使用的基本残差块。

  使用RepResBlock构建backbone和neck。与ResNet类似,backbone命名为CSPRepResNet——包含一个stem由三个卷积层和由RepResBlock堆叠的四个后续阶段组成,如图3(d)所示。在每个阶段,使用跨阶段部分连接,以避免大量3×
3个卷积层。ESE((Effective Squeeze and Extraction)层还用于在构建backbone时在每个CSPRepResStage中施加通道attention。

  在PP-YOLOv2之后,使用RepResBlock和CSPRepResStage构建neck,与backbone不同,RepResBlock中的快捷方式和CSPRepResStage中的ESE层在neck中被删除。

  像YOLOv5一样,本文使用宽度系数α和深度系数β来缩放基本backbone和neck。因此,可以得到一系列具有不同参数和计算成本的检测网络。backbone的宽度设置为[64、128、256、512、1024],backbon的深度设置为[3,6,6,3],neck的宽度设置和深度设置分别为[192、384、768]和3。表1显示了不同模型的宽度乘数α和深度乘数β的规格。如表2所示,此类修改可提高0.7%的AP性能–49.5%的AP
在这里插入图片描述

2.3 Task Alignment Learning (TAL)

  YOLOX中使用SimOTA作为标签分配策略,以提高性能。然而,为了进一步克服分类和定位的失准,TOOD中提出了任务对齐学习(TAL),它由动态标签分配和任务对齐loss组成。动态标签分配意味着预测/损失感知。根据预测,它为每个GT实况分配动态数量的正锚。通过明确对齐两个任务,TAL可以同时获得最高的分类分数和最精确的边界框。

  对于任务对齐loss,TOOD使用标准化的t,即t^来替换丢失的目标,它采用每个实例中最大的IoU作为标准化。分类的Binary Cross Entropy(BCE)可以改写为:
在这里插入图片描述
  本文使用不同的标签分配策略来研究性能,在上述修改的模型上进行了这个实验,该模型使用CSPRepResNet作为backbone。如表3所示,TAL实现了最好的45.2%AP性能。使用TAL替代FCOS风格的标签分配,并得到了0.9%的AP改善(50.4%的AP),如表2所示。
在这里插入图片描述

2.4 Efficient Task-aligned Head (ET-head)

  在目标检测中,分类和定位任务之间的冲突是一个众所周知的问题。许多论文中给出了相应的解决办法,例如YOLOX的去耦头借鉴了大多数一阶段和两阶段检测器的经验,并成功应用于YOLO模型以提高精度。但是,解耦头可能会使分类和定位任务分离和独立,并且缺乏特定任务的学习。

在这里插入图片描述
  本文改进了头部,并提出了以速度和精度为目标的ET头部。如图2所示,使用ESE来替换TOOD中的层注意力,简化分类分支到捷径的对齐方式,并用分布Focal loss(DFL)层替换回归分支的对齐。

  对于分类和定位任务的学习,分别选择变焦距损失(varifocal loss,VFL)和分布focal loss(distribution focal loss,DFL)。对于的VFL,与的质量focal loss(quality focal loss,QFL)不同,VFL使用目标分数来加权正样本的损失。这种实现使得具有高IoU的正样本对loss的贡献相对较大。这也使得模型在训练时更加关注高质量的样本,而不是那些低质量的样本。相同的是,两者都使用IoU-aware分类分数(IoU-aware classification score,IACS)作为预测目标。这可以有效地学习分类分数和定位质量估计的联合表示,实现了训练和推理之间的高度一致性。对于DFL,为了解决边界框表示不灵活的问题,有论文中提出使用一般分布来预测边界框。本文的模型的损失函数如下:
在这里插入图片描述
  其中t^表示标准化目标分数,见等式(1)。如表2所示,ET-head获得0.5%的AP改善,达到50.9%的AP。

3. 结论

  本文对PPYOLOv2进行了一些更新,包括可扩展的backbone-neck架构、高效的任务对齐head、高级标签分配策略和精确的目标损失函数,这一切的改进形成了PP-YOLOE。同时,提出了s/m/l/x模型,这些模型可以涵盖实际中的不同场景。

猜你喜欢

转载自blog.csdn.net/qq_39707285/article/details/128340341