专栏首页集智书童ARM-CPU150FPS | PicoDet助力移动端达到超实时检测(强烈建议工程人员学习)

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

作者研究了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

文章分享自微信公众号:
集智书童

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

作者:ChaucerG
原始发表时间:2021-11-03
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • GitHub 5.9K,目标检测、跟踪、关键点全覆盖的年度开源项目来了!

    目标检测技术作为计算机视觉的基础核心,支撑了包括人脸识别、目标跟踪、关键点检测、图像搜索等等70%以上视觉任务。虽然业界YOLO、Anchor Free、Tra...

    用户1386409
  • 高精度轻量级目标检测产业应用,实现多类通信塔识别

    随着科技的发展,各种即时通讯早已是人类日常生活不可分割的一部分,而这一便捷服务的实现离不开各种通信塔。通信塔主要用于运营商、广播电视等部门架设信号发射天线或微波...

    用户1386409
  • 人工智能如何助力市政垃圾清洁?垃圾检测全流程方案详解

    环境卫生是城市的名片,智慧环卫更是智慧城市中不可缺少的板块。随着作业严格化、服务综合化、人口老龄化等趋势的发展,环卫行业面临诸多新问题和新挑战,而AI技术的发展...

    用户1386409
  • GitHub 斩获 3100+ Star,国人开源的这个图像识别系统好用到爆!!!

    如果你们想要实现酷炫的"商品识别"、"以图搜图",进军新消费领域却没有相应技术方案,怎么办?

    GitHubDaily
  • 18M 超轻量图像识别系统,商品、车辆、人脸识别一网打尽!

    图像识别作为深度学习算法的主流实践应用方向,早已在生活的各个领域发挥作用,如安全检查和身份核验时的人脸识别、无人货架和智能零售柜中的商品识别,这些任务背后的关键...

    用户1386409
  • YOLO界再起波澜!mAP 51.4,149FPS,目标检测,一个就够了

    机器之心发布 作者:百度飞桨团队 百度飞桨团队发布了 PP-YOLOE,与其他 YOLO 系列算法相比,其具有更强的性能、更丰富灵活的配置方案以及更全硬件支持三...

    机器之心
  • 专访即构科技李凯:音视频的有趣、行业前沿一直吸引着我

    编者按:超分辨率(Super resolution)是指通过硬件或软件的方法提高原有图像的分辨率,通过一系列低分辨率的图像来得到一幅高分辨率的图像过程就是超分辨...

    LiveVideoStack
  • PaddleX全流程开发工具公开邀测啦!

    依托飞桨开源深度学习框架和丰富的工具组件,PaddleX进行全流程的整合打通,为开发者提供飞桨全流程开发的最佳实践。它集飞桨核心框架、模型库、工具及组件等深度学...

    用户1386409
  • 「AI 口罩检查官」上线,0.3 秒检查口罩佩戴情况

    内容提要:口罩,已经成为疫情期间出门的标配。面对人员流动带来的疫情传播压力,车站、机场、地铁站等场合都严格检查出入人员体温、口罩佩戴情况等。百度在近日开源了一个...

    HyperAI超神经
  • 卧槽!出了一个Python实时目标跟踪系统神器!

    在当下自动驾驶、智慧城市、安防等领域对车辆、行人、飞行器等快速移动的物体进行实时跟踪及分析的需求可谓比比皆是, 但单纯的目标检测算法只能输出目标的定位+分类,无...

    小灰
  • 不会Netty,你永远是个Java菜鸟

    ?点击“博文视点Broadview”,获取更多书讯 Netty是互联网中间件、大数据领域使用最广泛、最核心的网络通信框架。 由下图可以看到,几乎所有互联网中间...

    博文视点Broadview
  • 【开源公告】腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

    11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源“PocketFlow”项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种...

    腾讯开源
  • 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架

    11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源“PocketFlow”项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种...

    腾讯技术工程官方号
  • 10分钟搭建商品结算平台!商品、车辆识别一网打尽

    "商品识别"、"人脸识别"、"以图搜图"有什么难?这个在 GitHub 上狂圈 Star 3100+ 的项目就能轻松帮你实现!

    HelloGitHub
  • 智慧消防:如何利用AI智能化手段,精准防控消防风险?

    1)新兴技术助力消防体系走向智能化:随着大数据、云计算、人工智能、物联网等新技术的快速发展和阶段性成熟,智能化、立体化、网格化的智慧消防体系正在加速构建。

    TSINGSEE青犀视频

扫码关注腾讯云开发者

领取腾讯云代金券