【目标检测】|PPYOLO

PP-YOLO: An Effective and Effificient Implementation of Object Detector
在这里插入图片描述

引言

PP-YOLO是PaddleDetection优化和改进的YOLOv3的模型,其精度(COCO数据集mAP)和推理速度均优于YOLOv4模型,PP-YOLO在COCO test-dev2017数据集上精度达到45.9%,在单卡V100上FP32推理速度为72.9 FPS, V100上开启TensorRT下FP16推理速度为155.6 FPS。

没有探索不同的主干网络和数据扩充方法,也没有使用NAS搜索超参数。对于主干,我们直接使用最常见的ResNet[13]作为PP-YOLO的主干。对于数据扩充,我们直接使用了最基本的合成(主干网的更换和数据扩充是相对独立的因素,几乎与讨论的技巧无关)

本文的重点是如何堆叠一些几乎不影响效率的有效技巧以获得更好的性能。这些技巧中的许多无法直接应用于YOLOv3的网络结构,因此需要进行小的修改。此外,在哪里添加技巧也需要仔细考虑和实验。本文并不打算介绍一种新型的物体检测器。它更像是一个配方,告诉你如何一步一步地构建一个更好的检测器。我们发现了一些对YOLOv3探测器有效的技巧,可以节省开发人员的试错时间。

在这里插入图片描述

模型总体结构在这里插入图片描述

backbone

将yolov3中的darknet53替换为resnet50_vd+DCN
。DCN本身不会显著增加模型中的参数和FLOPS,但是过多的DCN层将大大增加推断时间。因此,为了平衡效率和有效性,我们仅在最后阶段用可变形卷积网络DCN替换3×3卷积层。我们将这种修改后的主干表示为ResNet50 vd dcn,将第3、4和5级的输出表示为C3、C4、C5

Neck:FPN结构

在这里插入图片描述

Head

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

采用技巧

1.Larger Batch Size

较大的批量使用较大的批量可以提高训练的稳定性,获得更好的结果。在这里,我们将训练批大小从64更改为192,并相应地调整训练计划和学习速率。

2.EMA

指数滑动平均(EMA)使用指数衰减计算训练参数的滑动平均值。

3.DropBlock
DropBlock是一种结构化的drop out形式
只将DropBlock应用到FPN中,因为我们发现在主干中添加DropBlock会导致性能下降。

ref
https://mp.weixin.qq.com/s?__biz=MzA4MjY4NTk0NQ==&mid=2247485664&idx=1&sn=e6e2215977973efe6da04803369c10c8&scene=21#wechat_redirect
4.IoU Loss
添加了另一个分支来计算IoU损耗。我们发现各种IoU损失的改善是相似的,因此我们选择了最基本的IoU损失
5.IoU Aware
增加了一个IoU预测分支来衡量定位精度。在训练过程中,采用IoU感知丢失来训练IoU预测分支。在推理过程中,将预测的IoU乘以分类概率和客观得分,计算最终检测置信度,该置信度与定位精度更相关。然后将最终检测置信度用作后续NMS的输入。IoU感知分支将增加额外的计算成本。然而,只添加了0.01%的参数和0.0001%的FLOPS,这几乎可以忽略。

6.Grid Sensitive

YOLO中的grid使得很难预测仅位于栅格边界上的边界框的中心。
在这里插入图片描述

7.Matrix NMS

8.CoordConv
其工作原理是通过使用额外的坐标通道,让卷积访问自己的输入坐标。CoordConv允许网络学习完全翻译不变性或不同程度的翻译依赖性。考虑到CoordConv将向卷积层添加两个输入通道,只使用CoordConv替换FPN中的1x1卷积层和检测头中的第一卷积层。

在这里插入图片描述它在输入特征图,添加了两个通道,一个表征i坐标,一个表征j坐标。这两个通道带有坐标信息,从而允许网络学习完全平移不变性和变化 平移相关度。

9.SPP
YOLOv4通过将最大池输出与内核大小k×k串联起来应用SPP模块,其中k={1,5,9,13},步长等于1。在这种设计下,相对较大的k×k max池有效地增加了主干特征的感受野。
10.Better Pretrained Model

实验

在大批量设置下,整个网络采用随机梯度下降(SGD)算法进行250K次迭代训练,初始学习率为0.01,小批量192幅图像分布在8个GPU上。在迭代150K和200K时,学习速率分别除以10。权重衰减设置为0.0005,动量设置为0.9。应用320到608像素的多尺度训练。数据扩充采用MixUp[43]。

消融实验

在这里插入图片描述
A->B
首先就是搭建基础版本的PP-YOLO

B->C
基础模型搭建好后,我们尝试优化训练策略
选用的是更大的batch和EMA提高模型的稳定性,并应用DropBlock防止模型过度拟合 ,mAP提升到了41.4%

C->D->E->F
我们在这个阶段分别增加了IOU Loss,IOU Aware,Grid Sensitive这三个损失函数的改进。分别得到了0.5%, 0.6%, 0.3%的提升,将mAP提升到了42.8%,IoU-Aware和Grid-Sensitive将使后处理时间分别增加0.7ms和0.1ms,推理速度下降仍属于可接受范围内
F->G
检测框的处理部分也是能提升性能的,通过增加Matrix NMS,mAP提高了0.6%。这个表格暂时不考虑NMS对推理时间的影响,在实际测试中,MatrixNMS是能比传统NMS降低推理时间的

G->I
到了最后阶段,不增加网络复杂度很难提高mAP,因此我们将SPP和CoordConv放到这里再来考虑。这两个结构所带来的额外参数较少,而实验也证明了将mAP提高到44.3%。添加这两个模块后,推断时间增加了0.3ms

I->J
分类模型的好坏不能代表整个检测模型的性能,因此我们最后才考虑是否用更好的预训练模型。
我们仍然是在ImageNet上进行预训练得到了一个更好的模型,并且提升了0.3%的mAP

对比实验

在这里插入图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值