PicoDet:专为移动CPU优化的快速目标检测

概述

PicoDet是在2021年11月发布的一种机器学习模型。它将最近在目标检测模型方面的研究成果集成到一个轻量级模型中,以在移动CPU上实现高准确度和高速目标检测。

c8577f9bcc9943b302f51592c8b7b9f1.png

COCO dataset

架构

PicoDet通过使用轻量级结构作为骨干,提高了特征提取的速度。通过改进损失函数,它还提高了训练的稳定性和效率。

最近几年来,基于无锚点的检测器在目标检测中变得越来越受欢迎,而全卷积单阶段目标检测(FCOS)解决了重叠的地面实况标签问题。而典型的锚框为每个坐标都有多个锚点,FCOS为每个坐标只有一个中心点;使用FCOS的无锚点方法具有无需超参数调整的优势。

然而,通常无锚点的检测器用于服务器端处理的模型,这些模型相对较大。用于移动应用的无锚点模型仅限于NanoDet和YOLOX-Nano。对于轻量级无锚点检测器来说,很难平衡准确性和效率。PicoDet是一种受FCOS和广义焦点损失(GFL)启发的新尝试。

082354355ce7393c93906d556d316929.png

PicoDet

CSP是ResNet等模型中使用的“跳跃连接”机制的进化。它通过添加一个机制来切断和连接先前阶段的特征图,而无需进行卷积运算,从而便于反向传播并减少操作量。在PicoDet中,将3x3深度卷积扩展为5x5深度卷积,以扩大感受野。

b96ae68558329ebe12a4ce474fe74b75.png

CSPNet

为了改善标签分配策略,采用了SimOTA,并采用了Varifocal Loss(VFL)和GIoU损失作为损失函数。

SimOTA也用于YOLOX。在确定预测边界框与地面实况边界框之间的映射以计算损失时,该方法不是分配最近的地面实况,而是解决了一个优化问题,以分配更合适的地面实况。SimOTA是OTA(Optimal Transport Assignment)的更快版本。

bc02f6e014ae6e28d03adc1a86fe82f7.png

SimOTA

在这个目标检测模型中,通过将地面实况边界框分配给HEAD预测的每个边界框,并反向传播损失来进行学习。地面实况边界框可能会重叠。如果预测边界框落在该区域内,我们将出现一种称为“模糊锚点”的情况,我们不知道要分配哪个地面实况。OTA具有一种算法,使将地面实况边界框分配给模糊锚点变得困难。

a0030d4fde0b16ab095ad57b63856b68.png

模糊锚点

以下是OTA分配的结果示例。图像中的点是预测边界框的中心点,红色椭圆显示了分配策略的差异。

02e1377becad79eded32c6a8322679d1.png

OTA分配的结果

PicoDet中用于特征提取的骨干是Enhanced ShuffleNet,这是ShuffleNetV2的改进版本,是一种适用于移动设备的高效模型架构。ShuffleNet引入了“逐点组卷积”和“通道混洗”操作,以加速1x1卷积,这是MobileNet的瓶颈。

919dc840c19151d96048b5bf42e98baa.png

Enhanced ShuffleNet

一次性神经架构搜索(NAS)被引入以搜索每层的最佳通道数量。搜索结果显示,使通道数量成为8的倍数对提高推断速度的贡献最大。

性能

以下是使用高通骁龙865 CPU的性能。在使用NCNN在CPU上运行时,YOLOX-Tiny在mAP 32.8时需要32.77毫秒,而PicoDet在mAP 30.6时需要12.37毫秒。在17.39毫秒内可以实现mAP 34.3。

579da1531080927bd3cfed0d9a017adb.png

这种性能提升是在CPU上运行推断时可以测量到的,而在GPU上运行时它们表现相同。因此,YOLOX-Tiny可能更适用于Jetson设备,而PicoDet可能最适合树莓派等设备。

用法

可以使用以下命令将PicoDet与ailia SDK一起用于检测网络摄像头视频流中的对象。

$ python3 picodet.py -v 0

ax Inc. 开发了ailia SDK,该SDK支持跨平台、基于GPU的快速推断。ax Inc. 提供从咨询和模型创建到基于AI的应用程序和SDK开发的广泛服务。如有任何疑问,请随时与我们联系。

·  END  ·

HAPPY LIFE

7015e0c6f9467a29ec4b4cac5f4326e5.png

本文仅供学习交流使用,如有侵权请联系作者删除

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 09:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 09:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 09:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 09:26:02       18 阅读

热门阅读

  1. 【uniapp】uniapp的安卓apk图标角标设置消息数量

    2024-03-17 09:26:02       17 阅读
  2. 有向图的DFS(c++题解)

    2024-03-17 09:26:02       21 阅读
  3. three.js工厂点击动画、标签

    2024-03-17 09:26:02       23 阅读
  4. 贝叶斯定理,先验信念,似然,后验概率

    2024-03-17 09:26:02       27 阅读
  5. Hadoop基础架构及其特点解析

    2024-03-17 09:26:02       18 阅读
  6. C#编程语言在软件开发中的深度应用与实践

    2024-03-17 09:26:02       20 阅读
  7. C语言初阶测试

    2024-03-17 09:26:02       20 阅读
  8. DNS服务

    DNS服务

    2024-03-17 09:26:02      19 阅读
  9. Json格式解析

    2024-03-17 09:26:02       20 阅读
  10. [小程序开发] 构造页面

    2024-03-17 09:26:02       18 阅读
  11. React/RN组件避免重复渲染的一些技巧

    2024-03-17 09:26:02       19 阅读