在本文中,来自滑铁卢大学与 Darwin AI 的研究者提出了名为 YOLO Nano 的网络,他们通过人与机器协同设计模型架构大大提升了性能。YOLO Nano 大小只有 4.0MB 左右,比 Tiny YOLOv2 和 Tiny YOLOv3 分别小了 15.1 倍和 8.3 倍,性能却有较为显著的提升。

▲ https://arxiv.org/abs/1910.01271

https://arxiv.org/abs/1910.01271

目标检测在计算机视觉领域是一个活跃的研究分支,而深度学习已经成为这一领域最前沿也是最成功的解决方案。但是,在边缘和移动设备中广泛部署神经网络模型需要大量的计算算力和内存。因此,近来研究领域主要在解决适合以上设备的神经网络。

本文便是这些研究中的一个,研究者提出了名为 YOLO Nano 的网络。这一模型的大小在 4.0MB 左右,比 Tiny YOLOv2 和 Tiny YOLOv3 分别小了 15.1 倍和 8.3 倍。在计算上需要 4.57B 次推断运算,比后两个网络分别少了 34% 和 17%。

在性能表现上,在 VOC2007 数据集取得了 69.1% 的 mAP,准确率比后两者分别提升了 12 个点和 10.7 个点。研究者还在 Jetson AGX Xavier 嵌入式模块上,用不同的能源预算进行了测试,进一步说明 YOLO Nano 非常适合边缘设备与移动端。

从两阶段目标检测开始的故事


目标检测任务目前有两种通行的解决方案,一种是两阶段目标检测,另一种是单阶段的。对于两阶段目标检测,首先需要神经网络识别目标(如在目标上打上定位框),然后对识别出的目标进行分类。另一种则是单阶段,直接使用网络对目标进行检测。两阶段的好处在于实现容易,但下游的分类任务依赖上游识别定位任务的表现。而单阶段方法尽管不需要首先识别目标,但加大了端到端实现目标检测的难度。

一般而言,两阶段目标检测方法准确性高,但速度不快;而单阶段的检测器速度快,准确率并达不到最高。不过随着基于关键点的方法越来越流行,单阶段不仅快,同时效果也不错。

在单阶段目标检测方法中,围绕效率而生的 YOLO 神经网络是一个非常有趣的存在,我们最常调用的检测器也是它了。YOLO 可以在 GPU 实现实时目标检测,而且效果还挺好。

然而,这些网络架构对于很多边缘和移动场景而言太大了(例如,YOLOv3 网络的大小为 240MB),而且因为计算复杂度(YOLOv3 需要多达 65B 的运算量)过高,在这些设备上的推断速度会很慢。为了解决这些问题,Redmon 等提出了 Tiny YOLO 家族的网络架构,可以在一定程度上牺牲目标检测性能,换取模型规模的极大缩小。

本研究中,研究者通过人机协作设计策略(human-machine collaborative design)的方法进行构建。在构建的过程中,首先设计主要的网络原型,原型基于 YOLO 网络家族中的单阶段目标检测网络架构。然后,将原型和机器驱动的设计探索策略结合,创建一个紧凑的网络。这个网络是高度定制化的,在模块级别上有着宏架构(macro-architecture)和微架构(micro-architecture),可用于嵌入式目标检测任务。

YOLO Nano 设计思路


YOLO Nano 在架构设计的中经过了两个阶段:首先设计一个原型网络,形成网络的主要设计架构;然后,使用机器驱动的方法进行探索设计。

原型主体网络设计


首先是设计主要的网络原型,研究者创建了一个原始的架构(表示为?),用于引导机器进行后续的探索设计。具体而言,研究者设计的网络基于 YOLO 家族中的单阶段目标检测架构。

YOLO 家族的网络架构最明显的特征是,它们不像基于「候选框」的网络那样需要构建一个 RPN,该网络会生成一系列定位目标的候选边界框,然后对生成的边界框进行分类。YOLO 家族的网络可以直接对输入的图像进行处理,然后生成输出结果。

这样一来,所有目标检测的预测都是将一张图像输入,直接得到输出,相比于 RPN 那种需要成百上千次的计算来得到最终结果而言省去了很多计算步骤,这使得 YOLO 家族的网络在运算上非常快,对于嵌入式目标检测任务而言也是最合适的。

机器驱动的探索设计


在这一阶段,研究者让机器使用最初的原型网络、数据和人类提出的设计的要求做为指引,然后机器驱动的探索设计会决定模块级别的宏架构和微架构,用于最终的 YOLO Nano 网络。

具体来说,机器驱动的探索设计是通过生成式整合来实现的。这一方法可以决定最优的网络宏架构和微架构,并符合人类的要求。

生成式整合的总体目标是学习生成式的机器,用于生成符合设计要求、限制等条件的深度神经网络。决定生成器 G 可以形式化为一个带约束的最优化问题,即在给定一系列种子 S 的情形下,生成网络 {N_s|s ∈ S} 以最大化全局性能函数 U。在最大化过程中需要满足指示函数 1_r(·),1r(·) 被定义来表示人类提出的需求和限制条件。

比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测
YOLO Nano 架构设计

了解了 YOLO Nano 的设计思路后,我们再看看它的架构是什么样的。如下图 1 所示,YOLO Nano 主要可以分为三部分,其中会有便捷连接连通不同抽象程度的特征图。

比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测
图 1:YOLO Nano 神经网络架构。注意其中 PEP(x) 表示残差 PEP 模块第一个映射层的 x 通道,FCA(x) 表示降维率为 x。

值得注意的是,YOLO Nano 有三种比较高效的模块,它们共同提升了整体建模的参数效率和运算效率。

残差映射-扩张-映射宏架构

YOLO Nano 网络架构第一个非常值得关注的模块就是残差映射-扩张—映射(PEP)宏架构(Macro-architecture),它和原来 YOLO 家族的模块有一些不同。

残差 PEP 宏架构主要由以下四部分组成:

一个 11 卷积的映射层,它将输入的特征图映射到较低维度的张量;
一个 1
1 卷积的扩张层,它会将特征图的通道再扩张到高一些的维度;
一个逐深度(depth-wise)的卷积层,它会通过不同滤波器对不同的扩张层输出通道执行空间卷积;
一个 1*1 卷积的映射层,它将前一层的输出通道映射到较低维度。

残差 PEP 宏架构的使用可以显著降低架构和计算上的复杂度,同时还能保证模型的表征能力。

全连接注意力宏架构

YOLO Nano 第二个值得注意的模块是,通过机器驱动设计的探索过程,研究者在神经网络引入了轻量级的全连接注意力(FCA)模块。FCA 宏架构由两个全连接层组成,它们可以学习通道之间的动态、非线性内部依赖关系,并通过通道级的乘法重新加权通道的重要性。

FCA 的使用有助于基于全局信息关注更加具有信息量的特征,因为它再校准了一遍动态特征。这可以更有效利用神经网络的能力,即在有限参数量下尽可能表达重要信息。因此,该模块可以在修剪模型架构、降低模型复杂度、增加模型表征力之间做更好的权衡。

宏架构和微架构的异质性

对于第三点,YOLO Nano 不仅在宏架构(PEP 模块、EP 模块、FCA 以及各个 3×3 和 1×1 卷积层的多样化组合)方面存在高度异质性,同样在独立特征表征模块和层级这些微架构之间也会存在异质性。

YOLO Nano 架构具有高度异质性的优势在于,它可以使网络架构的每个模块都经过特定的设计,从而在模型架构、计算复杂度和表征能力之间实现更优的权衡。YOLO Nano 这种架构多样性还展示了机器驱动设计探索策略和生成式组合一样灵活,因为人类设计者或其它设计探索方法无法在如此细粒度的层级上自定义架构。

实验效果

为了研究 YOLO Nano 在嵌入式目标检测上的性能,研究者在 PASCAL VOC 数据集上检测了模型大小、目标检测准确率、计算成本三大指标。为了体现对比,流行的 Tiny YOLOv2 和 Tiny YOLOv3 网络会作为基线模型。

如下表 1 展示了 YOLO Nano 、Tiny YOLOv2 和 Tiny YOLOv3 的模型大小与准确率。

比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测
表 1:紧凑网络在 VOC 2007 测试集上的目标检测准确率结果,输入图像大小为 416*416,最优结果用加粗展示。

最后,为了探索 YOLO Nano 在现实世界中的性能,尤其是在边缘设备中的表现,研究者在 Jetson AGX Xavier 嵌入式模块测试了 YOLO Nano 的推断速度与能源效率。在 15W 和 30W 能源预算下,YOLO Nano 分别能实现~26.9 FPS 和 ~48.2 的推断速度。

这些实验都表明这篇论文提出来的 YOLO Nano 网络在准确率、模型大小和计算复杂度上提供了非常好的权衡,这种优势主要是通过人机协作的设计策略获得的,而且 YOLO Nano 在这种优势下也非常适合边缘和移动设备。

比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测相关推荐

  1. Hinton团队CV新作:用语言建模做目标检测,性能媲美DETR

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来自|arxiv  编译|机器之心 目标检测的「尽头」是语言建模?近 ...

  2. 图灵奖大佬Hinton团队CV新作:用语言建模做目标检测,性能媲美DETR

    来源:机器之心 目标检测的「尽头」是语言建模?近日,Hinton 团队提出了全新目标检测通用框架 Pix2Seq,将目标检测视作基于像素的语言建模任务,实现了媲美 Faster R-CNN 和 DET ...

  3. 137% YOLOv3加速、10倍搜索性能提升!百度飞桨推出模型压缩神器

    深度学习模型压缩,又有利器问世. 最新消息,历经一年四个版本打磨之后,百度推出最新深度学习模型压缩工具PaddleSlim1.0. 不仅囊括了深度学习模型压缩中常用的量化.剪裁.蒸馏.模型结构搜索.模 ...

  4. 137% YOLOv3加速、10倍搜索性能提升!这样的惊喜,最新版PaddleSlim有10个

    允中 发自 凹非寺  量子位 编辑 | 公众号 QbitAI 深度学习模型压缩,又有利器问世. 最新消息,历经一年四个版本打磨之后,百度推出最新深度学习模型压缩工具PaddleSlim1.0. 不仅囊 ...

  5. Hologres揭秘:优化COPY,批量导入性能提升5倍+

    简介:揭秘Hologres优化COPY的技术原理,实现批量导入性能提升5倍+ Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的场景,全面兼容 ...

  6. yolov3为什么对大目标检测不好_从YOLOv1到YOLOv3,目标检测的进化之路

    引言:如今基于深度学习的目标检测已经逐渐成为自动驾驶,视频监控,机械加工,智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢,无法适应工业界对于目标检测实时性的需求,这时YOLO ...

  7. 2021年小目标检测最新研究综述 很全面值得收藏

    摘要 小目标检测长期以来是计算机视觉中的一个难点和研究热点.在深度学习的驱动下,小目标检测已取得了重大突破,并成功应用于国防安全.智能交通和工业自动化等领域.为了进一步促进小目标检测的发展,本文对小目 ...

  8. 基于深度学习的小目标检测方法综述

    随着深度学习的发展,基于深度学习的目标检测技术取得了巨大的进展,但小目标由于像素少,难以提取有效信息,造成小目标的检测面临着巨大的困难和挑战. 为了提高小目标的检测性能,研究人员从网络结构.训练策略. ...

  9. 对象检测目标小用什么模型好_自动驾驶目标检测- YOLO v3 深入解析

    从2016年 Joseph Redmon 发布第一代YOLO开始,YOLO已经更新四代了,凭借着在一个网络模型中完成对图像中所有对象边界框和类别预测的独特创新,成为现今使用最广泛也是最快的对象检测算法 ...

最新文章

  1. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签
  2. 8-10 牛客网刷题知识点集合
  3. JavaWeb基础学习笔记
  4. Redux-学习笔记
  5. AJPFX关于构造器的总结
  6. oracle数据库的select,Oracle数据库--基本的select语句
  7. 公司来了个傻员工,改变了所有聪明的员工
  8. linux程序调试命令strace
  9. 深度剖析SOC高性能实时事件关联分析引擎
  10. FFmpeg源代码简单分析:avformat_alloc_output_context2()
  11. 双轨制直销软件功能介绍
  12. SONiC vs testbed搭建
  13. 5号字对应的数字字号_字号对照表
  14. Python爬虫实现isbn查询豆瓣书籍详细信息
  15. 哇塞,原来自己写 Google Chrome 浏览器扩展(插件)这么容易!
  16. 服务器自动关闭远程打印服务,实现远程打印的方法:无线网络打印服务器
  17. 一键获取网页MP3音乐播放源文件
  18. Off the coast 将图片放入Markdown!
  19. 华为linux默认密码,登录存储系统CLI管理界面(用户名+密码)
  20. 10和100Mbps以太网

热门文章

  1. Oracle数据库中的优化方案
  2. 【模式识别】学习笔记(3)【Fisher线性判别】
  3. 在asp.net中使用jQuery实现类似QQ网站的图片切割效果
  4. 【.NET】正则表达式笔记
  5. 将Java程序变成可执行文件的一个简单方法
  6. python:xml模块用法-xml处理、修改、删除
  7. iOS唯一标示符引导
  8. [译]使用scikit-learn进行机器学习的简介(教程1)
  9. django 1.8 官方文档翻译:2-5-9 条件表达式
  10. 学会订阅——什么是feed ?如何订阅feed?