前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)

ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)

作者头像
集智书童公众号
发布2021-11-05 10:21:26
2K0
发布2021-11-05 10:21:26
举报
文章被收录于专栏:集智书童集智书童集智书童

作者研究了anchor-free 策略在轻量级目标检测模型中的适用性。作者增强了Backbone结构,设计了Neck的轻量化结构,提高了网络的特征提取能力。改进了标签分配策略和损失函数,使训练更加稳定和高效。 通过这些优化,创建了一个新的实时物体检测系列架构,名为PP-PicoDet,它在移动设备上实现了优越的物体检测性能。与其他流行的模型相比,该模型架构在准确性和延迟之间实现了更好的权衡。PicoDet-S只有0.99M参数,mAP值为30.6%,与YOLOX-Nano相比,mAP提高了4.8%,同时移动CPU延迟降低了55%,与NanoDet相比,mAP提高了7.1%。当输入尺寸为320时,在移动ARM CPU上达到123 FPS(使用Paddle Lite时达到150 FPS)。PicoDet-L仅3.3M参数的mAP值为40.9%,mAP值提高了3.7%,比YOLOv5s快44%。如图1所示,本文模型远远优于轻量级目标检测的最新结果。

1简介

目标检测被广泛应用于许多计算机视觉任务中,包括自主驾驶、机器人视觉、智能交通、工业质量检测、目标跟踪等。

两阶段模型通常会带来更高的性能。然而,这种消耗计算资源的网络限制了部署的需求。为了克服这一问题,轻量级物体检测器的研究越来越受到关注,旨在设计高效的物体检测。

YOLO系列的目标检测器已经流行起来,因为它们只是考虑资源约束的一小部分工作。与两阶段模型相比,YOLO系列具有更高的效率和高精度。但是,YOLO系列没有解决以下问题:

  1. 采用不同的数据集需要手动重新设计Anchor boxes;
  2. 由于生成的Anchor 多为负值,容易导致正、负样本不平衡问题。

近年来,许多工作都致力于开发更高效的探测器体系结构,如Anchor-Free检测器。

FCOS解决了Ground-truth标签内的重叠问题。与其他Anchor-Free检测器相比,不存在复杂的超参数调节。然而,大多数Anchor-Free检测器都是大型检测器;

在少数情况下,NanoDet和YOLOX-Nano是Anchor-Free检测器和移动检测器。问题是轻量Anchor-Free检测器通常不能很好地平衡精度和效率。因此,在这项工作中,受到FCOS和GFL的启发,作者提出了一种改进的移动友好和高精度Anchor-Free探测器,名为PP-PicoDet。总的来说,主要贡献如下:

  1. 采用CSP结构构建CSP-PAN作为Neck。CSP-PAN通过1×1卷积对Neck各分支的输入通道数进行统一,显著提高了特征提取能力,减少了网络参数。将3 × 3深度可分卷积扩大到5 × 5深度可分卷积,以扩大感受野;
  2. 标签分配策略是目标检测的关键。这里使用SimOTA动态标签分配策略,并优化了一些计算细节。具体地说,使用了Varifocal Loss (VFL)和GIoU Loss来计算cost matrix ,在不降低效率的前提下提高了精度;
  3. 进一步对ShuffleNetV2网络结构进行了改进,提出了一种新的Backbone,即Enhanced ShuffleNet (ESNet),其性能优于ShuffleNetV2;
  4. 提出了一种改进的一次性神经网络检测方法体系结构搜索(NAS) Pipeline,以自动找到最优的体系结构进行目标检测。直接在检测数据集上训练SuperNet,这带来了显著的计算节省和检测优化。本文的NAS方法生成的模型实现了更好的效率和准确性权衡。

2相关工作

目标检测是一项经典的计算机视觉挑战,旨在识别图像或视频中的目标类别和目标位置。现有的目标检测器,可以分为2类:

  • Anchor-Based检测器
  • Anchor-Free的检测器

两阶段检测器通常是基于Anchor的,从图像生成区域建议,然后从区域建议生成最终的边界框。为了提高目标定位的精度,FPN融合了多尺度的高级语义特征。两阶段探测器对目标定位精度较高,但在CPU或ARM设备上难以实现实时检测。

单阶段目标探测器也是基于Anchor的,具有较好的速度和精度平衡,因此在实践中得到了广泛的应用。SSD是用于检测多尺度物体的方法,虽然对小物体比较友好,但在精确度上没有竞争力。同时,YOLO系列(YOLOv1除外)在精度和速度上都表现良好。但是,它并没有解决在前面分析的一些问题。

Anchor-Free检测器的目的是消除Anchor Box,这是目标检测的一个重要改进。

  • YOLOv1的主要思想是将图像分割成多个网格,然后在靠近物体中心的点上预测BBox。
  • CornorNet检测边界框的一对角,而不将Anchor Box设计为先验框。
  • CenterNet放弃左上角和右下角,直接检测中心点。
  • FCOS首先以逐像素预测的方式重新制定目标检测,并提出中心分支。

Anchor-Free检测器解决了Anchor-Based检测器的一些问题,降低了存储成本,并提供了更精确的BBox计算。

之后的工作从不同方面进一步改进了目标检测器。ATSS提出了一种自适应训练样本选择,根据目标的统计特征自动选择正样本和负样本。Generalized Focal Loss (GFL)消除FCOS中的“中心”分支,将质量估计融合到类预测向量中,形成定位质量和分类的联合表示。

在移动端目标检测领域,人们一直致力于实现更准确、更高效的目标检测:

  • 通过YOLOv4的压缩编译协同设计,YOLObile实现了移动端的实时物体检测。
  • PP-YOLOTiny采用MobileNetV3 Backbone和基于PP-YOLO的TinyFPN结构。
  • NanoDet使用ShuffleNetV2作为Backbone,使模型更轻,并使用ATSS和GFL提高精度;
  • YOLOX-Nano是目前YOLOX系列中最轻的结构,使用动态标签分配策略SimOTA在可接受的参数内实现最佳性能。

手工设计的技术很大程度上依赖于专业的知识和繁琐的试验。近年来,NAS在发现和优化网络架构(如MobileNetV3、EfficientNet和Mnasnet)方面显示了很有前景的结果。因此,NAS可以是一个很好的选择,以产生一个更好的效率-精度平衡的检测器。一键式NAS方式通过共享相同的权重来节省计算资源。近年来,许多Oneshot NAS都在进行图像分类,如ENAS、SMASH等。

据作者所知,很少有人尝试开发用于物体探测的NAS。NAS-FPN用于搜索特征金字塔网络。DetNas第一次在ImageNet上训练SuperNet Backbone,然后在COCO上对SuperNet Backbone进行微调。MobileDets使用了NAS,并提出了一个扩展的搜索空间系列,以在移动设备上实现更好的延迟与精度的平衡。

3本文方法

首先展示NAS的搜索方法可以得到具有较好性能的Backbone,这有助于提高准确性和减少延迟。然后,提供了Neck和Head模块的增强策略。最后,描述了标签分配策略和其他进一步提高性能的策略。

3.1 Better Backbone

1、手工设计

经过多次实验发现ShuffleleNetV2在移动设备上比其他网络更稳定。为了进一步提高ShuffleleNetV2的性能,作者采用了PPLCNet的一些方法来增强网络结构,并建立了一个新的Backbone,即Enhanced ShuffleNet (ESNet)。图3详细描述了ESNet的ES块。SE模块很好地权衡了网络通道以获得更好的特性。因此,在所有块中添加SE模块。

与MobileNetV3一样,SE模块的2层激活函数分别为ReLU和H-Sigmoid。Channel Shuffle提供了ShuffleNetV2通道的信息交换,但也会导致融合特性的丢失。为了解决这个问题,增加了depthwise卷积和pointwise卷积,在stride=2时整合不同的通道信息(图3a)。

GhostNet的作者提出了一种新的Ghost模块,可以用更少的参数生成更多的特征图,以提高网络的学习能力。作者将Ghost模块添加到stride=1的块中,以进一步增强ESNet的性能(图3b)。

2、结构搜索

首次提出了目标检测器的one-shot搜索方法。由于不同任务之间的差距,配备了高性能分类Backbone的物体检测器可能不是最佳选择。这里不寻找更好的分类器,而是直接在检测数据集上训练和搜索检测SuperNet,这大大节省了计算量,优化了检测效果。

该搜索框架由2个步骤组成:

  1. 在检测数据集上训练One-shot SuperNet,
  2. 在训练后的SuperNet上使用进化算法(EA)进行架构搜索。

为了方便,在这里简单地使用通道搜索Backbone。具体来说,作者提供灵活的比率选项,以选择不同的通道比率。作者在[0.5,0.675,0.75,0.875,1]中随机粗略地选择比率。例如,0.5表示宽度按完整模型的0.5缩放。通道数可被8整除,可以提高硬件设备上的推理速度。

因此,首先用每个阶段块的通道数训练完整的模型,而不是使用原始模型中的通道数。所有的比例选项也可以保持通道数被8整除。所选的比率适用于每个块中的所有可读卷积。所有输出通道固定为完整模型。

为了避免繁琐的超参数调优,作者修复了架构搜索中的所有原始设置。对于训练策略,采用sandwich rule对最大子模型和最小子模型进行抽样,每个训练迭代随机抽样6个子模型。在训练策略中没有更多的额外trick,如蒸馏,因为不同的技术对不同的模型执行不一致,特别是检测任务。最后,在ImageNet数据集上对选定的架构进行再训练,然后在COCO上进行训练。

3.2 CSP-PAN和Detector Head

CSP结构广泛应用于YOLOv4和YOLOX Neck部分。这里也使用PAN结构获取多级特征图,使用CSP结构进行相邻特征图之间的特征连接和融合。在原有的CSP-PAN中,每个输出特征映射中的通道都与来自Backbone的输入保持一致。

对于移动端来说,通道数大的结构具有昂贵的计算成本。本文通过使用1×1卷积来解决这个问题。然后通过CSP结构使用自顶向下和自底向上的特征融合。缩小的特征导致更低的计算成本和无损的准确性。

此外,在CSP-PAN的顶部添加一个特征图scale以检测更多的目标。同时,除1×1卷积外,所有卷积都是深度可分离卷积。深度可分卷积通过5×5卷积扩展感受野。这种结构以更少的参数带来了相当大的精度提高。具体的结构如图2所示。

在detector head使用深度可分卷积和5×5卷积来扩展感受野。深度可分卷积的个数可以设置为2,4或更多。

总体网络结构如图2所示。Neck和Head都有4个scale branches。保持head的通道数与neck模块一致,并将分类和回归分支coupled起来。YOLOX使用了一个decoupled head,通道数更少,同时可以提高准确性。本文的coupled head在不减少通道数量的情况下性能更好,参数和推理速度与decoupled head几乎相同。

3.3 标签分配策略与损失

正样本和负样本的标签分配对目标检测有重要影响。大多数目标检测器使用固定的标签分配策略。这些策略很简单:

  • RetinaNet 通过Ground Truth和Anchor Boxes直接将正样本和负样本划分出来;
  • FCOS 以中心点在Ground Truth内部的Anchor为正样本;
  • YOLOv4 和 YOLOv5 选择Ground Truth中心点及其相邻Anchor为正样本;
  • ATSS 根据Ground Truth附近最近Anchor的统计特征来确定正、负样本。

上述标签分配策略在全局训练过程中是不变的。SimOTA是一种标签分配策略,随着培训过程的不断变化,SimOTA在YOLOX中取得了很好的效果。

本文使用SimOTA动态标签分配策略来优化训练过程:

  1. 通过中心先验确定候选区域;
  2. 计算出候选区域中预测框与Ground truth的IoU;
  3. 将每个Ground truth的最大IoU相加得出参数κ。

cost 矩阵直接计算候选区域中所有预测框和Ground truth的损失。对于每个Ground truth,选择与最小κ损失对应的Anchor作为正样本。原SimOTA采用CE损失和IoU损失的加权和来计算cost 矩阵。为了使SimOTA中的cost与目标函数保持一致,作者使用Varifocal loss和GIoU loss的加权和作为cost矩阵。GIoU损失的权重为λ,实验表明,λ为6是最好的。具体公式是:

在检测器头部,利用Varifocal loss对分类预测和质量预测进行耦合。对于回归,用GIoU损失和Distribution Focal Loss。公式如下:

在上述公式中,

loss_{vfl}

表示Varifocal Loss ,

loss_{giou}

表示GIoU Loss,

loss_{dfl}

表示Distribution Focal Loss 。

3.4 其他策略

近年来,越来越多的激活函数超越了ReLU。在这些激活函数中,HSwish是Swish激活函数的简化版本,计算速度更快,移动端也比较友好。于是作者将检测器的激活函数由ReLU改为H-Swish。在保持推理时间不变的情况下,性能显著提高。

与linear step learning rate decay 不同,cosine learning rate decay是学习率的指数衰减。余弦学习速度平稳下降,有利于训练过程,特别是当Batch-Size较大时。

过多的数据增强会增加正则化效果,使训练对轻量模型的收敛更加困难。因此,在本工作中,只使用随机翻转、随机裁剪和多尺度调整来增强训练中的数据。

4实验

4.1 SOTA结果对比

4.2 消融实验

1、CSP-PAN

首先得到与NanoDet相似的Base模型,Backbone采用ShuffleNetV2-1x ,Neck采用无卷积的PAN,Loss采用标准GFL Loss,标签分配策略采用ATSS。所有激活函数都使用LeakyRelu。得到的mAP(0.5:0.95)是25.3。

进一步,采用了CSP-PAN结构。特征图比例尺为3。(0.5:0.95)增加到28.1。最后,我们在CSP-PAN的顶部添加了一个特征scale。就像CSP-PAN的最终结构一样,参数的数量增加了不到50K。mAP(0.5:0.95)被进一步改进到29.1。

2、Loss

在前一节中,在相同配置下比较了Varifocal Loss (VFL)和Quality Focal Loss (QFL)的影响。两者的影响是相近的,Varifocal Loss仅略好于Quality Focal Loss。将QFL替换为VFL, mAP(0.5:0.95)从29.1提高到29.2。

3、Label Assignment Strategy

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

4、ESNet Backbone
5、H-Swish激活函数

最后,替换所有LeakyRelu为H-Swish激活函数,mAP(0.5:0.95)最终增加到30.6。

6、检测结果可视化
img

5参考

[1].PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 集智书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1简介
  • 2相关工作
  • 3本文方法
    • 3.1 Better Backbone
      • 1、手工设计
      • 2、结构搜索
    • 3.2 CSP-PAN和Detector Head
      • 3.3 标签分配策略与损失
        • 3.4 其他策略
        • 4实验
          • 4.1 SOTA结果对比
            • 4.2 消融实验
              • 1、CSP-PAN
              • 2、Loss
              • 3、Label Assignment Strategy
              • 4、ESNet Backbone
              • 5、H-Swish激活函数
              • 6、检测结果可视化
              • img
          • 5参考
          相关产品与服务
          图像识别
          腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档