百度:YOLOX 和 NanoDet 都没我优秀!轻量型实时目标检测模型 PP-PicoDet 开源
百度提出新型移动端实时检测模型 PP-PicoDet。本文对 anchor-free 策略在轻量型检测器中的应用进行了探索;对骨干结构进行了增强并设计了一种轻量 Neck 部件;同时对 SimOTA 策略与 Loss 进行了改进。通过上述改进,所提 PP-PicoDet 取得了超越其他实时检测模型的性能。
论文链接:https://arxiv.org/abs/2111.00902代码链接:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3/configs/picodet
比 YOLOX 还要优秀,百度提出新型移动端实时检测模型 PP-PicoDet。本文对 anchor-free 策略在轻量型检测器中的应用进行了探索;对骨干结构进行了增强并设计了一种轻量 Neck 部件;同时对 SimOTA 策略与 Loss 进行了改进。通过上述改进,所提 PP-PicoDet 取得了超越其他实时检测模型的性能。比如:PicoDet-S 仅需 0.99M 参数即可取得 30.6%mAP,比 YOLOX-Nano 高 4.8%同时推理延迟降低 55%,比 NanoDet 指标高 7.1%,同时推理速度高达 150fps(骁龙 865)。
一、Abstract
更佳的精度-效率均衡已成为目标检测领域极具挑战性问题。本文致力于目标检测的关键技术优化与架构选择以提升其性能与效率。
我们对 anchor-free 策略在轻量型目标检测模型中的应用进行了探索;我们对骨干结构进行了增强并设计了一种轻量型 Neck 结构以提升模型的特征提取能力;我们对 label assignment 策略与损失函数进行了改进以促进更稳定、更高效的训练。通过上述优化,我们构建了一类实时目标检测器 PP-PicoDet,它在移动端设备上取得了非常优异的性能。
相比其他主流检测模型,所提方案取得了更好的精度-效率均衡。比如
· PicoDet-S 仅需 0.99M 参数即可取得 30.6%mAP,比 YOLOX-Nano 高 4.8%同时推理延迟降低 55%,比 NanoDet 指标高 7.1%;当输入尺寸为 320 时,在移动端 ARM CPU 上可以达到 123FPS 处理速度,推理框架为 PaddleLite 时,推理速度可达 150FPS。
· PicoDet-M 仅需 2.15M 参数即可取得 34.3%mAP 指标;
· PicoDet-L 仅需 3.3M 参数即可取得 40.9%mAP,比 YOLOv5s 高 3.7%mAP,推理速度快 44%。
· 如下图所示,所提方案具有最佳的精度-效率均衡。
二、Contribution
本文贡献主要包含以下几点:
· 采用 CSP 架构构建 CSP-PAN,它通过 1×1 卷积对所有分支输入通道进行统一,大幅提升特征提取能力,同时减少了参数量。与此同时,我们将深度卷积从 3×3 扩展到 5×5 提升感受野;
· label assignment 是目标检测非常重要的模块。我们在 SimOTA 的基础上对某些计算细节进行了优化,在不损失效率的同时增强了性能。具体来说,我们采用 VarifocalLoss 与 GIoULoss 的加权组合计算损失矩阵 。
· ShuffleNetV2 在移动端非常高效,我们对其进行了增强并提出一种新的骨干 ESNet(Enhanced ShuffleNet, ESNet);
· 提出一种用于检测的改进版 One-Shot NAS 方案以寻找最佳的架构。
三、Method
接下来,我们将首先呈现设计思路与 NAS 搜索方案,这有助于提升精度、降低推理延迟;然后我们再介绍关于 Neck 与 Head 模块的增强策略;最后我们对 Label Assignment 以及其他提升性能的策略进行介绍。
Better Backbone 实验发现:相比其他模型,ShuffleNetV2 在移动端具有更好的鲁棒性 。为提升 ShuffleNetV2 的性能,我们参考 PP-LCNet 对其进行了增强并构建一种新的骨干 ESNet。
上图给出了 ESNet 中的 ESBlock 结构示意图。SE 是一种非常棒的提升特征表达能力的操作,故 ESBlock 中包含了 SE 模块。SE 模块的设计参考了 MobileNetV3,即两个激活函数分别为 Sigmoid、H-Sigmoid。
通道置换为 ShuffleNetV2 中的通道提供了信息交换,但它会导致融合特征损失。为解决该问题,当 stride=2 时,我们添加了 depth 与 point 卷积对不同通道信息进行融合(见上图 3-a)。
GhostNet 中的 Ghost 模块能够用更少的参数生成更多特征并提升模型的学习能力。因此,当 stride=1 时,我们在 ESBlock 中引入 Ghost 模块以提升其性能(见上图 3-b)。
上述部分内容是手工方式的模块设计,文中还用到了 NAS 技术对 ESNet 进行搜索以更好的适配检测模型。对该部分内容感兴趣的同学建议查看原文,笔者对此暂时略过。
CSP-PAN and Detector Head
上图给出了 PP-PicoDet 整体架构示意图。接下来,我们重点关注 CSP-PAN 与 Head 部分。CSP 结构已被广泛应用于 YOLOv4 与 YOLOX 的 Neck 部分。
在原始 CSP-PAN 中,每个输出特征的通道数与源自骨干的输入通道数保持相同。大通道数的结构在移动端存在昂贵的计算消耗。我们通过 1×1 卷积将输出特征的通道数调整到最小通道数以解决上述问题。
Top-down 与 bottom-up 两路特征融合通过 CSP 结构执行。此外,我们还在 CSP-PAN 的基础上添加了一个特征尺度以检测更多目标(见上图 P6 分支)。与此同时,除了 1×1 卷积外,其他卷积均为 5×5 深度卷积。这种结构设计可以带来可观的性能提升,同时参数量更少。
在检测头部分,我们采用深度分离卷基于 5×5 卷积提升感受野。深度分离卷积的数量可以设置为 2、4 或者更多。Neck 与 Head 均具有四个尺度分支,我们保持两者的通道数一致。YOLOX 采用更少通道数的“解耦头”提升性能;而 PP-PicoDet 的“耦合头”具有更好的性能,且无需减少通道数 。该方案的 Head 与 YOLOX 的 Head 具有几乎相同的参数量和推理速度。
Label Assignment Strategy and Loss 正负样本的标签分类对于目标检测器有着非常重要的影响。RetinaNet 通过 IoU 进行正负样本划分;FCOS 则将中心点位于 GT 的 anchor 视作正样本;YOLOv4 与 YOLOv5 则选择中心点与近邻 anchor 作为正样本;ATSS 则通过统计信息进行正负样本划分;SimOTA 则是一种随训练过程而动态变换的标签分配策略,具有更好的性能。因此,我们选择 SimOTA 作为标签分配方案。
在 SimOTA 的基础上,我们对其 cost 矩阵进行优化,采用 VarifocalLoss 与 GIoULoss 的加权组合计算。定义如下:
对于分类头,我们采用 VarifocalLoss 耦合分类预测与质量预测;对于回归头,我们采用 GIoU 与 DistributionFocalLoss。整体损失定义如下:
Other Strategies 近年来,越来越多的激活函数取得了比 ReLU 更优的性能。其中,H-Swish 是一种移动端友好的算子,故我们将检测器中的 ReLU 替换为 H-Swish,性能大幅提升同时推理速度不变 。
相比线性学习率机制,cosine 学习率机制更为平滑且有益于训练稳定性。
过多的数据增强可以提升增强效应,但会影响轻量型模型的训练难度。因此,我们仅使用 RandomFlip, RandomCrop, Multi-scale Resize 等数据增广。
四、Experiments
上表给出了所提方案与其他轻量型检测器的性能对比,从中可以看到:无论是精度还是速度,所提方案均大幅超越了所有 YOLO 模型。性能的提升主要源于以下几点改进:
· Neck 部分比其他 YOLO 模型更轻量,故骨干与 Head 可以赋予更多计算量;
· VarifocalLoss 的组合可以处理类别不平衡、动态学习样本分类与 FOCS 的回归方案在轻量模型中表现更佳;
在相同参数量下,PP-PicoDet-S 超越了 YOLOX-Nano 与 NanoDet;PP-PicoDet-L 的精度与速度均超越了 YOLOv5s。此外,由于更高效的卷积优化,PaddleLite 的推理速度要比 NCNN 更快。总而言之,PP-PicoDet 在极大程度上领先其他 SOTA 模型。
五、Ablation Study
上表给出了 PP-PicoDet 从基线模型逐步优化而来的性能对比。基线模型类似 NanoDet,骨干为 ShuffleNetV2-1x,Neck 采用了无卷积 PAN,损失采用了 GFL,标签分配采用 ATSS,激活函数为 LeakyReLU。从中可以看到:
· 采用本文所提 CSP-PAN 可以带来 3.8%mAP 指标提升,而参数量提升少于 50K;
· 相比 QFL,VFL 可以带来 0.1%mAP 指标提升;
· ATSS 与 SimOTA 具有相同的性能,而改进版 SimOTA 可以将性能提升到 30.0%mAP;
· 相比 LeakyReLU,H-Swish 可以带来 0.9%mAP 指标提升。
上表对比了 ShuffleNetV2-1.5x 与 ESNet-1x 的性能,可以看到:ESNet 具有更高的性能、更快的推理速度、更少的计算量。
上表对比了人工设计模型与 NAS 搜索模型的性能,可以看到:搜索到的模型的指标仅下降 0.2%mAP,而推理延迟减少 41.5% 。因此,我们将基线模型的骨干替换为 ESNet-0.75x,参数量减少约 200K,而性能仅下降 0.3%mAP。
本文来自:公众号【极市平台】作者:happy
Illustrastion by Natasha Remarchuk from Icons8
版权声明: 本文为 InfoQ 作者【百度开发者中心】的原创文章。
原文链接:【http://xie.infoq.cn/article/1fca675e9f71f7ab2b32d053e】。文章转载请联系作者。
评论