0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GitHub nanodet开源移动端实时的Anchor-free检测模型,上线仅两天Star量已经超过200

智能感知与物联网技术研究所 来源:通信信号处理研究所 作者:通信信号处理研究 2020-12-03 16:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目标检测一直是计算机视觉领域的一大难题,其目标是找出图像中的所有感兴趣区域,并确定这些区域的位置和类别。目标检测中的深度学习方法已经发展了很多年,并出现了不同类型的检测方法。 目前,深度学习目标检测方法主要分为两大类,分别是两阶段式和单阶段式目标检测算法。两阶段式目标检测框架首先生成候选区域,然后将其分类成不同的目标类别,代表模型有 R-CNN、Fast R-CNN 等;单阶段式目标检测框架将目标检测任务视为一个统一的端到端回归问题,代表模型有 MultiBox、YOLO、SSD 等。这类框架通常结构更简单,检测速度也更快。 深度学习目标检测方法还可划分为 Anchor-base 和 Anchor-free 两大类,今年又出现了将 Transformer 用于目标检测的尝试,各种方法百花齐放。但是,在移动端目标检测算法上,YOLO 系列和 SSD 等 Anchor-base 的模型一直占据主导地位。

近日,GitHub 上出现了一个项目 nanodet,它开源了一个移动端实时的 Anchor-free 检测模型,希望能够提供不亚于 YOLO 系列的性能,而且同样方便训练和移植。该项目上线仅两天,Star 量已经超过 200。

项目地址:https://github.com/RangiLyu/nanodet NanoDet 模型介绍 NanoDet 是一个速度超快和轻量级的移动端 Anchor-free 目标检测模型。该模型具备以下优势:

超轻量级:模型文件大小仅 1.8m;

速度超快:在移动 ARM CPU 上的速度达到 97fps(10.23ms);

训练友好:GPU 内存成本比其他模型低得多。GTX1060 6G 上的 Batch-size 为 80 即可运行;

方便部署:提供了基于 ncnn 推理框架的 C++ 实现和 Android demo。

模型性能 目前开源的 NanoDet-m 模型在 320x320 输入分辨率的情况下,整个模型的 Flops 只有 0.72B,而 yolov4-tiny 则有 6.96B,小了将近十倍。模型的参数量也只有 0.95M,权重文件在使用 ncnn optimize 进行 16 位存储之后,只有 1.8mb。 尽管模型非常的轻量,但是它的性能不容小觑。在与其他模型进行比较时,项目作者选择使用 COCO mAP (0.5:0.95) 作为评估指标,兼顾检测和定位的精度,在 COCO val 5000 张图片上测试,并且没有使用 Testing-Time-Augmentation。在这种设置下,320 分辨率输入能够达到 20.6 的 mAP,比 tiny-yolov3 高 4 分,只比 yolov4-tiny 低 1 个百分点。在将输入分辨率与 YOLO 保持一致,都使用 416 输入的情况下,NanoDet 与 yolov4-tiny 得分持平。具体结果如下表所示:

以上性能基于 ncnn 和麒麟 980 (4xA76+4xA55) ARM CPU 获得。 此外,项目作者将 ncnn 部署到手机(基于 ARM 架构的 CPU 麒麟 980,4 个 A76 核心和 4 个 A55 核心)上之后跑了一下 benchmark,模型前向计算时间只要 10 毫秒左右,而 yolov3 和 v4 tiny 均在 30 毫秒的量级。在安卓摄像头 demo app 上,算上图片预处理、检测框后处理以及绘制检测框的时间,NanoDet 也能轻松跑到 40+FPS。

NanoDet 和 yolov4-tiny 的性能对比。 最后,该项目提供了 Android demo、C++ demo 和 Python demo。NanoDet 在安卓端的目标检测结果如下所示:

NanoDet 方法 NanoDet 是一种 FCOS 式的单阶段 anchor-free 目标检测模型,它使用 ATSS 进行目标采样,使用 Generalized Focal Loss 损失函数执行分类和边框回归(box regression)。 据项目作者介绍,该项目的主要目的是希望开源一个移动端实时的 Anchor-free 检测模型,能够提供不亚于 YOLO 系列的性能,并且方便训练和移植。为此,他参考了以下研究: 最终得到的 NanoDet 模型架构如下:

损失函数 项目作者想要实现一个 FCOS 式的 anchor-free 目标检测模型,但将 FCOS 轻量化处理时,由于 FCOS 的 centerness 分支在轻量级的模型上很难收敛,模型效果不如预期。 最终,NanoDet 使用了李翔等人提出的 Generalized Focal Loss 损失函数。该函数能够去掉 FCOS 的 Centerness 分支,省去这一分支上的大量卷积,从而减少检测头的计算开销,非常适合移动端的轻量化部署。

图源:https://arxiv.org/pdf/2006.04388.pdf 检测头轻量化 找到合适的损失函数后,如何使其在轻量级模型上发挥作用呢? 首先需要优化的是检测头。 FCOS 系列使用了共享权重的检测头,即对 FPN 出来的多尺度 Feature Map 使用同一组卷积预测检测框,然后每一层使用一个可学习的 Scale 值作为系数,对预测出来的框进行缩放。

图源:https://openaccess.thecvf.com/content_ICCV_2019/papers/Tian_FCOS_Fully_Convolutional_One-Stage_Object_Detection_ICCV_2019_paper.pdf 这么做的好处是能够将检测头的参数量降低为不共享权重状态下的 1/5。这对于光是检测头就拥有数百通道卷积的大模型来说非常有用,但是对于轻量化模型来说,共享权重检测头并没有很大的意义。由于移动端模型推理由 CPU 执行计算,共享权重并不会带来推理过程的加速,而且在检测头非常轻量的情况下,共享权重使其检测能力进一步下降,因此项目作者认为选择对每一层特征使用一组卷积比较合适。 同时,FCOS 系列在检测头上使用了 Group Normalization(GN)作为归一化方式,GN 对比 BN(Batch Normalization)有很多好处,但是却有一个缺点:BN 在推理时能够将其归一化的参数直接融合进卷积中,可以省去这一步计算,而 GN 则不行。为了能够节省归一化操作的时间,项目作者选择将 GN 替换为 BN。 FCOS 的检测头使用了 4 个 256 通道的卷积作为一个分支,也就是说在边框回归和分类两个分支上一共有 8 个 c=256 的卷积,计算量非常大。为了将其轻量化,项目作者首先选择用深度可分离卷积替换普通卷积,并且将卷积堆叠的数量从 4 个减少为 2 组。在通道数上,将 256 维压缩至 96 维,之所以选择 96,是因为需要将通道数保持为 8 或 16 的倍数,能够享受到大部分推理框架的并行加速。 最后,项目作者借鉴了 YOLO 系列的做法,将边框回归和分类使用同一组卷积进行计算,然后 split 成两份。最终得到的轻量化检测头如下图所示:

FPN 层改进 目前针对 FPN 的改进有许多,如 EfficientDet 使用了 BiFPN,YOLO v4 和 v5 使用了 PAN,除此之外还有 BalancedFPN 等等。BiFPN 虽然性能强大,但是堆叠的特征融合操作会导致运行速度降低,而 PAN 只有自上而下和自下而上两条通路,非常简洁,是轻量级模型特征融合的好选择。 原版的 PAN 和 YOLO 系列中的 PAN 都使用了 stride=2 的卷积进行大尺度 Feature Map 到小尺度的缩放。而该项目出于轻量化的考虑,选择完全去掉 PAN 中的所有卷积,只保留从骨干网络特征提取后的 1x1 卷积来进行特征通道维度的对齐,上采样和下采样均使用插值来完成。与 YOLO 使用的 concatenate 操作不同,项目作者选择将多尺度的 Feature Map 直接相加,使整个特征融合模块的计算量变得非常小。 最终得到的极小版 PAN 结构非常简单:

NanoDet 使用的超轻量 PAN(图源:https://zhuanlan.zhihu.com/p/306530300) 骨干网络 项目作者选择使用 ShuffleNetV2 1.0x 作为骨干网络,他去掉了该网络的最后一层卷积,并且抽取 8、16、32 倍下采样的特征输入到 PAN 中做多尺度的特征融合。整个骨干模型使用了 Torchvision 提供的代码,能够直接加载 Torchvision 上提供的 imagenet 预训练权重,对加快模型收敛起到很大帮助。 目前,项目作者已将 Pytorch 训练代码、基于 NCNN 的 Linux 和 Windows C++ 部署代码以及 Android 摄像头 Demo 全部开源,并在 Readme 中提供了详细教程,参见项目 GitHub 主页。

责任编辑:PSY

原文标题:1.8M超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200

文章出处:【微信公众号:通信信号处理研究所】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测模型
    +关注

    关注

    0

    文章

    17

    浏览量

    7401
  • 移动端
    +关注

    关注

    0

    文章

    43

    浏览量

    4695
  • GitHub
    +关注

    关注

    3

    文章

    484

    浏览量

    18413

原文标题:1.8M超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200

文章出处:【微信号:tyutcsplab,微信公众号:智能感知与物联网技术研究所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    引领侧大模型落地!Firefly-RK182X 开发套件上线发售

    海量参数的大模型给AI行业带来颠覆性的体验,然而在侧设备中,由于有限的DRAM带宽、硬件算力、存储容量等瓶颈,让侧大模型长期停留在概念
    的头像 发表于 11-26 16:33 766次阅读
    引领<b class='flag-5'>端</b>侧大<b class='flag-5'>模型</b>落地!Firefly-RK182X 开发套件<b class='flag-5'>上线</b>发售

    广和通发布侧目标检测模型FiboDet

    为提升侧设备视觉感知与决策能力,广和通全自研侧目标检测模型FiboDet应运而生。该模型基于广和通在边缘计算与人工智能领域的深度积累,面
    的头像 发表于 09-26 13:39 1404次阅读

    【VisionFive 2单板计算机试用体验】3、开源大语言模型部署

    , Gemma等开源模型。当然,一些闭源的(类似chatgpt, gemini)是不支持部署的。如下图: 在侧部署大模型,个人认为最大的好处:是可以避免因文本或图片上传而造成的信
    发表于 07-19 15:45

    微软开源GitHub Copilot Chat,AI编程迎来新突破

    GitHub Copilot + vscode的组合我已经用了很久,我的代码开发效率完全提升了一个level。帮我代码提示,代码不全,注释理解生成代码等等,这些我是我经常用到的功能。 在今天凌晨4点
    的头像 发表于 07-02 09:34 799次阅读
    微软<b class='flag-5'>开源</b><b class='flag-5'>GitHub</b> Copilot Chat,AI编程迎来新突破

    华为正式开源盘古7B稠密和72B混合专家模型

    关键举措,推动大模型技术的研究与创新发展,加速推进人工智能在千行百业的应用与价值创造。 盘古Pro MoE 72B模型权重、基础推理代码,已正式上线开源平台。 基于昇腾的超大规模MoE
    的头像 发表于 06-30 11:19 1098次阅读

    首创开源架构,玑AI开发套件让侧AI模型接入得心应手

    的自有模型移植,使首字词生态速度比云端方案提升70%,赋能绝影多模态智能座舱强大的侧运行能力,让汽车拥有“有趣的灵魂”。 不仅如此,玑AI开发套件已经接入NVIDIA TAO生态
    发表于 04-13 19:52

    商汤科技日日新大模型SenseNova上线声网云市场

    日前,商汤科技日日新大模型SenseNova即将正式上线声网云市场,开发者和企业用户可通过声网的实时互动云服务进行调用,将商汤领先的模型能力集成到各类应用场景中,快速构建基于日日新大
    的头像 发表于 04-08 17:24 1309次阅读

    沐曦GPU跑通DeepSeek开源代码库FlashMLA

    今日,DeepSeek正式启动"开源周"计划,首发代码库FlashMLA一经开源即引发全网关注。截至发稿,该项目已在GitHub斩获超7.2K Star!
    的头像 发表于 02-25 16:25 1319次阅读

    超过150万个大模型,DeepSeek全球最受欢迎

    范围内成为爆火的 AI 大模型。1 月 26 日,DeepSeek 首次登上苹果 App Store 全球榜首并持续领先。上线 18 ,其下载达到 1600 万次,几乎是同期
    的头像 发表于 02-25 00:13 3901次阅读
    <b class='flag-5'>超过</b>150万个大<b class='flag-5'>模型</b>,DeepSeek全球最受欢迎

    【米尔RK3576开发板评测】+项目名称百度飞桨PP-YOLOE

    一、简介 PP-YOLOE是百度基于其之前的PP-YOLOv2所改进的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。PP-YOLOE,有更高的检测精度且部署友好
    发表于 02-15 17:14

    DeepSeek GitHub星数超OpenAI

    近日,在全球最大的代码托管平台GitHub上,DeepSeek项目取得了一项显著成就——其Star数量成功超越了OpenAI。这一变化标志着开源人工智能领域的竞争格局正在发生微妙的变化。
    的头像 发表于 02-10 18:28 1060次阅读

    DeepSeek-R1全尺寸版本上线Gitee AI

    继 DeepSeek 全套蒸馏模型以及 V3 版本上线后,经过 Gitee AI 和沐曦团队两天紧锣密鼓的适配和机器筹备,DeepSeek-R1全尺寸版本现在已上线 Gitee AI
    的头像 发表于 02-07 15:25 1804次阅读

    腾讯混元大模型开源成绩斐然,GitHub Star数近1.4万

    内外部技术的开源共享,旨在促进技术创新与生态发展。 据悉,腾讯混元大模型已经在多个模态上实现了开源,包括语言大模型、文生图大
    的头像 发表于 12-26 10:30 1049次阅读

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    的是百度的Picodet模型,它是一种基于深度卷积网络(DNN)的轻量级目标检测模型,具有非常高的检测精度,可以在低算力设备进行实时
    发表于 12-19 14:33

    ADS1299用一个频率为1Hz的正弦波来作为模拟输入信号,当峰峰值超过10mV是就已经满量程了,为什么?

    我这两天遇到一个问题,麻烦您帮我解答一下。谢谢!下面为您描述我的问题: 我选择ADS1299的芯片,PGA放大到24倍,按照用户手册上Vref为4.5V,按照下面的公式计算出1个LSB为
    发表于 12-13 06:22