PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices

  • Post author:
  • Post category:其他


论文链接:https://arxiv.org/pdf/2111.00902.pdf

代码:https://github.com/PaddlePaddle/PaddleDetection



一、论文概述

本文对骨干结构进行了改进,并设计了颈部的轻量化结构,提高了网络的特征提取能力。改进了标签分配策略和损失函数,使训练更加稳定和高效。

现如今大部分YOLO系列没有处理以下问题:

1)需要仔细和手动重新anchor boxes,以采用不同的数据集。

2)正负样本不平衡问题,产生的anchors大多为负的


本文提出了如下创新:


1、采用CSP结构构造CSP-PAN作为颈部。CSP-PAN将颈部所有分支的输入通道数用1 × 1卷积统一,显著提高了特征提取能力,降低了网络参数。把3×3深度可分卷积扩大到5×5个深度可分卷积来扩大感受域。

2、标签分配策略在对象检测中至关重要。采用了SimOTA动态标签分配策略,并优化了一些计算细节:使用变焦损失(VFL)[8]和GIoU损失的加权和来计算代价矩阵,在不损害效率的情况下提高了精度。

3、进一步改进了ShuffleNetV2网络结构,提出了一种新的骨干结构,即Enhanced ShuffleNet (ESNet),其性能优于ShuffleNetV2。

4、提出了一种改进的检测方法,即一次性神经体系结构搜索(NAS)管网,以自动找到目标检测的最优体系结构。直接在检测数据集上训练超级网络,节省了计算和检测器优化。NAS-generated models 实现了更好的效率和准确性的权衡。

在这里插入图片描述



二、文章核心思想



(一)、Better Backbone



(1)、Manually Designed Backbone

ShuffleNetV2在移动设备上比其他网络更优。为了进一步提高ShuffleNetV2的性能,作者构建一个新的骨干网络,即Enhanced ShuffleNet (ESNet)。下图为ESNet的ES Block。SE Block可以加权网络的通道来实现更好的特征提取。因此,将SE Block添加到所有Block中。和MobileNetV3一样,SE Block的两层激活函数分别是ReLU和H-Sigmoid。Channel shuffle提供了ShuffleNetV2通道间的信息交换,但会导致fusion features的丢失。为了解决这个问题,作者在stride为2时增加了depth – wise卷积和point – wise卷积来整合不同的通道信息(下图左)。GhostNet的作者提出了一种新的Ghost模块,它可以用更少的参数生成更多的特征映射,从而提高网络的学习能力。我们在stride设置为1的块中添加Ghost模块,以进一步增强ESNet的性能(下图右)。

在这里插入图片描述



(2)、Neural Architecture Search

配备高性能分类骨干网的目标探测器,可能由于不同任务之间的差距而不太理想。作者不寻找更好的分类器,而是直接在检测数据集上训练和搜索检测超级网络,这可以显著节省计算量,优化检测而不是分类。该框架仅包括两个步骤:

(1)在detection datasets上训练一次性超级网络

(2)在训练后的超级网络上使用进化算法(EA)进行体系结构搜索。

为了方便起见,作者只在文中只用channel-wise来搜索骨干。作者给出了灵活的比例选项来选择不同的通道比例。在[0.5,0.675,0.75,0.875,1]中随机粗略地选择比率。例如,0.5表示宽度是整个模型的0.5倍。通道数都可被8整除,提高了硬件设备的推理速度。因此,不使用原始模型中的通道数,而是先对每个channel-wise进行通道数为[128,256,512]的全模型训练。所有的比率选项也可以保持通道数被8整除。所选比率适用于每个块中的所有可修剪的卷积。所有输出通道均固定为完整模型。为了避免繁琐的超参数调优,作者在架构搜索中固定所有原始设置。在训练策略上,采用sandwich规则,每次训练迭代抽取最大(全)子模型和最小子模型,随机抽取6个子模型。在训练策略中没有更多的技术采用,如蒸馏,因为不同的技术不同模型上是执行不一致的,特别是检测任务。最后,对选定的体系结构在ImageNet数据集上进行再训练,然后在COCO上进行训练。



(二)、CSP-PAN and Detector Head

使用PAN构获得多级特征映射,使用CSP结构进行相邻特征映射之间的特征拼接和融合。CSP结构广泛应用于YOLOv4和YOLOX的颈部。在原始CSP-PAN中,每个输出特征图中的通道数量与来自骨干的输入保持一致。对于移动设备来说,具有较大通道数的结构具有较高的计算成本。可以通过1 × 1卷积使所有特征图中的所有信道数等于最小信道数来解决这个问题。然后通过CSP结构使用自顶向下和自底向上的特征融合。比例缩小的特征会使计算成本更低并且不会影响准确性。此外,在CSP-PAN的顶部添加一个新的尺度,以检测更多的目标。同时,除1 × 1卷积外,所有的卷积都是深度可分卷积。深度可分卷积通过5 × 5卷积扩展感受野。这种结构在参数少得多的情况下大大提高了精度。在头部,使用深度可分离卷积和5 × 5卷积扩展感受野。深度可分离卷积的个数可以设置为2、4或更多。颈部和头部都有四个分支。保持头部的通道数与颈部模块一致,并耦合分类和回归分支。YOLOX采用解耦头,通道数更少,以提高精度。本文中耦合没有减少通道数的情况下性能更好。参数和推理速度与解耦头基本一致。具体的结构如下所示。

在这里插入图片描述



(三)、Label Assignment Strategy and Loss

正负样本的标签分配对物体探测器有重要的影响。大多数对象检测器使用固定的标签分配策略。这些策略很简单。RetinaNet直接用anchor和ground truth的IoU划分正样本和负样本。FCOS选取中心点在ground truth内部的anchor作为正样本,YOLOv4和YOLOv5选取ground truth中心点及其邻近anchor的位置作为正样本。ATSS根据离ground truth最近的锚点的统计特征确定正样本和负样本。作者使用SimOTA动态标签分配策略来优化训练过程。SimOTA首先通过中心先验确定候选区域,然后计算预测框和候选区域中的ground truth的IoU,最后求ground truth最大的IoU的和n得到参数κ,通过直接计算候选区域内所有预测框和ground truth的损失,得到代价矩阵。对于每个ground truth,选择最小的κ损失对应的锚点作为阳性样本。最初的

SimOTA采用CE损失和IoU损失的加权和来计算成本矩阵。为了使SimOTA中的成本与目标函数一致,本文使用Varifocal损失和GIoU损失的加权和作为cost matrix。GIoU损失的权重为



λ

λ






λ





,实验结果表明,设置为6是最理想的。具体公式为:

在这里插入图片描述

在检头部使用Varifocal损失函数将分类预测和quality预测结合起来进行分类。对于回归,使用GIoU损失和Distribution Focal损失函数。公式如下:

在这里插入图片描述



(四)、Other Strategies

H-wish是Swish激活功能的简化版本,计算速度更快,对移动设备更友好。将探测器中的激活函数由ReLU替换为H-Swish。在保持推理时间不变的情况下,性能显著提高。与linear step学习速率衰减不同,余弦学习速率衰减是指学习速率的指数衰减。余弦学习速率平稳下降,有利于训练过程,特别是当批量较大时。对于轻量级模型,过多的数据增强往往会增加正则化效果,使训练更加难以收敛。因此,在本研究中,我们只使用随机翻转、随机裁剪和多尺度调整来增强训练中的数据。



三、实验细节

使用随机梯度下降(SGD),动量为0.9,权值衰减为4e-5。采用余弦衰减学习速率调度策略,初始学习速率为0.1。所有实验都是在COCO-2017训练集上进行训练,该训练集有80个类和118k张图像,并在COCO-2017验证集上进行评价。指数移动平均线(EMA)大量利用近期信息,直观地维持长期影响。轻量级模型更有可能陷入局部最优,也更难收敛。因此,引入了一种类似于正则化的机制,命名为Cycle-EMA,它可以重置历史记录的内容,由遗forget step控制。对于架构搜索任务,所有用于supernet训练的超参数和数据集的设置与原模型相同,具体如下:使用L2范数梯度裁剪来避免爆炸梯度。

另一个区别是,由于搜索空间很大,为每一步训练8个候选对象。



(一)、消融实验

所有实验结果均在COCO-2017验证集上进行,结果如下:

在这里插入图片描述



(1)、SP-PAN

首先得到类似于NanoDet的基模型,骨干采用ShuffleNetV2-1x,颈部采用无卷积PAN, loss采用标准GFL loss,标签分配策略采用ATSS。所有激活函数都使用LeakyRelu。得到的mAP(0.5:0.95)是25.3。此外,采用CSP-PAN结构。特征图比例为3。mAP(0.5:0.95)最后增加到28.1,在CSP-PAN的顶部添一个新的尺度。就像CSP-PAN的最终结构一样,参数的数量增加了不到50K。mAP(0.5:0.95)进一步提高到29.1。



(2)、Loss

比较了在相同配置下Varifocal Loss(VFL)和Quality Focal Loss(QFL)的影响。两者是相近的,Varifocal Loss只比Quality Focal Loss稍好一点。用VFL代替QFL, mAP(0.5:0.95)从29.1提高到29.2。



(3)、Label Assignment Strategy

用原始的SimOTA和修改后的SimOTA替换ATSS,发现n越大,效果越差。然后将参数n设置为10。ATSS的性能与原始的SimOTA几乎相同。修改后的SimOTA的mAP(0.5:0.95)达到30.0。

进一步比较SimOTA在Varifocal Loss和GIoU损失具有不同权重时的效果。改λ进行消融实验。结果如下所示。当GIoU损失的权重为6时,得到了最佳的结果。

在这里插入图片描述



(四)、ESNet Backbone

比较ESNet-1x和原始ShuffleNetV2-1.5x的性能,下图显示,在推理时间较短的情况下,ESNet实现了更高的精度。

在这里插入图片描述

比较了原始模型和搜索的模型的性能,结果如下所示。延迟约束下的搜索模型mAP仅降低0.2%,而移动CPU推理时间速度提高了41.5%(使用Paddle Lite时提高了54.9%)。用ESNet0.75x替换了上述探测器的主干,参数数量减少了近200K, mAP(0.5:0.95)最终为29.7。

在这里插入图片描述



(五)、H-Swish Activation Function

用H-Swish替换所有的LeakyRelu,mAP(0.5:0.95)最终增加到30.6。



版权声明:本文为qq_52302919原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。