9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

华为开源端侧神经网络架构 GhostNet,超越谷歌 MobileNet | CVPR 2020 论文解读

  • 2020-06-19
  • 本文字数:4815 字

    阅读完需:约 16 分钟

华为开源端侧神经网络架构GhostNet,超越谷歌MobileNet | CVPR 2020论文解读

近日,华为诺亚方舟实验室的一篇论文被 CVPR 2020 接受,该论文提出了一种新型的端侧神经网络架构 GhostNet,该架构在同样精度下,速度和计算量均少于 SOTA 算法。


该论文提供了一个全新的 Ghost 模块,旨在通过廉价操作生成更多的特征图。基于一组原始的特征图,作者应用一系列线性变换,以很小的代价生成许多能从原始特征发掘所需信息的“幻影”特征图(Ghost feature maps)。该 Ghost 模块即插即用,通过堆叠 Ghost 模块得出 Ghost bottleneck,进而搭建轻量级神经网络——GhostNet。在 ImageNet 分类任务,GhostNet 在相似计算量情况下 Top-1 正确率达 75.7%,高于 MobileNetV3 的 75.2%。


论文链接:https://arxiv.org/abs/1911.11907


开源地址:https://github.com/huawei-noah/ghostnet

引言

卷积神经网络推动了计算机视觉诸多任务的进步,比如图像识别、目标检测等。但是,神经网络在移动设备上的应用还亟待解决,主要原因是现有模型又大又慢。因而,一些研究提出了模型的压缩方法,比如剪枝、量化、知识蒸馏等;还有一些则着重于高效的网络结构设计,比如 MobileNet,ShuffleNet 等。本文就设计了一种全新的神经网络基本单元 Ghost 模块,从而搭建出轻量级神经网络架构 GhostNet。


在一个训练好的深度神经网络中,通常会包含丰富甚至冗余的特征图,以保证对输入数据有全面的理解。如下图所示,在 ResNet-50 中,将经过第一个残差块处理后的特征图拿出来,三个相似的特征图对示例用相同颜色的框注释。 该对中的一个特征图可以通过廉价操作(用扳手表示)将另一特征图变换而获得,可以认为其中一个特征图是另一个的“幻影”。因为,本文提出并非所有特征图都要用卷积操作来得到,“幻影”特征图可以用更廉价的操作来生成。



图 1 ResNet50 特征图可视化


在本文中,作者提出了一种新颖的 Ghost 模块,可以使用更少的参数来生成更多特征图。具体来说,深度神经网络中的普通卷积层将分为两部分。第一部分涉及普通卷积,但是将严格控制它们的总数。给定第一部分的固有特征图,然后将一系列简单的线性运算应用于生成更多特征图。与普通卷积神经网络相比,在不更改输出特征图大小的情况下,该 Ghost 模块中所需的参数总数和计算复杂度均已降低。基于 Ghost 模块,作者建立了一种有效的神经体系结构,即 GhostNet。作者首先在基准神经体系结构中替换原始的卷积层,以证明 Ghost 模块的有效性,然后在几个基准视觉数据集上验证 GhostNet 的优越性。实验结果表明,所提出的 Ghost 模块能够在保持相似识别性能的同时降低通用卷积层的计算成本,并且 GhostNet 可以超越 MobileNetV3 等先进的高效深度模型,在移动设备上进行快速推断。

方法

Ghost 模块



图 2 (a) 普通卷积层 (b) Ghost 模块


复杂度分析

构建 GhostNet

Ghost Bottleneck:利用 Ghost 模块的优势,作者介绍了专门为小型 CNN 设计的 Ghost bottleneck(G-bneck)。如图 3 所示,Ghost bottleneck 似乎类似于 ResNet 中的基本残差块(Basic Residual Block),其中集成了多个卷积层和 shortcut。Ghost bottleneck 主要由两个堆叠的 Ghost 模块组成。第一个 Ghost 模块用作扩展层,增加了通道数。这里将输出通道数与输入通道数之比称为 expansion ratio。第二个 Ghost 模块减少通道数,以与 shortcut 路径匹配。然后,使用 shortcut 连接这两个 Ghost 模块的输入和输出。这里借鉴了 MobileNetV2,第二个 Ghost 模块之后不使用 ReLU,其他层在每层之后都应用了批量归一化(BN)和 ReLU 非线性激活。上述 Ghost bottleneck 适用于 stride= 1,对于 stride = 2 的情况,shortcut 路径由下采样层和 stride = 2 的深度卷积(Depthwise Convolution)来实现。出于效率考虑,Ghost 模块中的初始卷积是点卷积(Pointwise Convolution)。



图 3 Ghost bottleneck


GhostNet:基于 Ghost bottleneck,作者提出 GhostNet,如表 1 所属。作者遵循 MobileNetV3 的基本体系结构的优势,然后使用 Ghost bottleneck 替换 MobileNetV3 中的 bottleneck。GhostNet 主要由一堆 Ghost bottleneck 组成,其中 Ghost bottleneck 以 Ghost 模块为构建基础。第一层是具有 16 个卷积核的标准卷积层,然后是一系列 Ghost bottleneck,通道逐渐增加。这些 Ghost bottleneck 根据其输入特征图的大小分为不同的阶段。除了每个阶段的最后一个 Ghost bottleneck 是 stride = 2,其他所有 Ghost bottleneck 都以 stride = 1 进行应用。最后,利用全局平均池和卷积层将特征图转换为 1280 维特征向量以进行最终分类。SE 模块也用在了某些 Ghost bottleneck 中的残留层,如表 1 中所示。与 MobileNetV3 相比,这里用 ReLU 换掉了 Hard-swish 激活函数。尽管进一步的超参数调整或基于自动架构搜索的 Ghost 模块将进一步提高性能,但表 1 所提供的架构提供了一个基本设计参考。



表 1 GhostNet 网络架构


实验

Ghost 模块消融实验

如上所述,Ghost 模块具有两个超参数,也就是,s 用于生成 m=n/s 个内在特征图,以及用于计算幻影特征图的线性运算的 d*d (即深度卷积核的大小)。作者测试了这两个参数的影响。


首先,作者固定 s=2 并在{1,3,5,7} 范围中调整 d,并在表 2 中列出 CIFAR-10 验证集上的结果。作者可以看到,当 d=3 的时候,Ghost 模块的性能优于更小或更大的 Ghost 模块。这是因为大小为 1X1 的内核无法在特征图上引入空间信息,而较大的内核(例如 d=5 或 d=7)会导致过拟合和更多计算。因此,在以下实验中作者采用 d=3 来提高有效性和效率。



表 2 超参数 d 的影响


在研究了内核大小的影响之后,作者固定 d=3 并在{2,3,4,5} 的范围内调整超参数 s。实际上, s 与所得网络的计算成本直接相关,即,较大的 s 导致较大的压缩率和加速比。从表 3 中的结果可以看出,当作者增加 s 时,FLOP 显着减少,并且准确性逐渐降低,这是在预期之内的。特别地,当 s=2 ,也就是将 VGG-16 压缩 2x 时,Ghost 模块的性能甚至比原始模型稍好,表明了所提出的 Ghost 模块的优越性。



表 3 超参数 s 的影响


作者将 Ghost 模块用在 VGG-16 和 ResNet-56 架构上,然后和几个代表性的最新模型进行了比较。Ghost-VGG-16 (s=2)以最高的性能(93.7%)胜过竞争对手,但 FLOPs 明显减少。 对于已经比 VGG-16 小得多的 ResNet-56,基于 Ghost 模块的模型可以将计算量降低一半时获得可比的精度,还可以看到,其他具有相似或更大计算成本的最新模型所获得的准确性低于 Ghost 模型。



表 4 在 CIFAR-10 数据集和 SOTA 模型对比


特征图可视化

作者还可视化了 Ghost 模块的特征图,如图 4 所示。 图 4 展示了 Ghost-VGG-16 的第二层特征,左上方的图像是输入,左红色框中的特征图来自初始卷积,而右绿色框中的特征图是经过廉价深度变换后的幻影特征图。尽管生成的特征图来自原始特征图,但它们之间确实存在显着差异,这意味着生成的特征足够灵活,可以满足特定任务的需求。



图 4 Ghost-VGG-16 的第二层输出特征图可视化



图 5 原始 VGG-16 的第二层输出特征图可视化


GhostNet 性能

ImageNet 分类数据集:为了验证所提出的 GhostNet 的优越性,作者对 ImageNet 分类任务进行了实验。在 ImageNet 验证集上报告的所有结果均是 single crop 的 top-1 的性能。对于 GhostNet,为简单起见,作者在初始卷积中设置了内核大小 k=1,在所有 Ghost 模块中设置了 s=2 和 d=3 。作者和现有最优秀的几种小型网络结构作对比,包括 MobileNet 系列、ShuffleNet 系列、IGCV3、ProxylessNAS、FBNet、MnasNet 等。结果汇总在表 5 中,这些模型分为 3 个级别的计算复杂性,即~50,~150 和 200-300 MFLOPs。从结果中我们可以看到,通常较大的 FLOPs 会在这些小型网络中带来更高的准确性,这表明了它们的有效性。而 GhostNet 在各种计算复杂度级别上始终优于其他竞争对手,主要是因为 GhostNet 在利用计算资源生成特征图方面效率更高。



表 5 GhostNet 在 ImageNet 数据集的表现


硬件推理速度:由于提出的 GhostNet 是为移动设备设计的,因此作者使用 TFLite 工具在基于 ARM 的手机华为 P30Pro 上进一步测量 GhostNet 和其他模型的实际推理速度。遵循 MobileNet 中的常用设置,作者使用 Batch size 为 1 的单线程模式。从图 6 的结果中,我们可以看到与具有相同延迟的 MobileNetV3 相比,GhostNet 大约提高了 0.5%的 top-1 的准确性,另一方面 GhostNet 需要更少的运行时间来达到相同的精度。例如,精度为 75.0%的 GhostNet 仅具有 40 毫秒的延迟,而精度类似的 MobileNetV3 大约需要 46 毫秒来处理一张图像。总体而言,作者的模型总体上胜过其他最新模型,例如谷歌 MobileNet 系列,ProxylessNAS,FBNet 和 MnasNet。


值得指出的是,华为内部开发了一款神经网络部署工具 Bolt,对 GhostNet 实现做了进一步优化,速度相比其他框架如 NCNN、TFLite 更快。感兴趣的读者可以参考:


https://github.com/huawei-noah/bolt



COCO 目标检测数据集:为了进一步评估 GhostNet 的泛化能力,作者在 MS COCO 数据集上进行了目标检测实验。具有特征金字塔网络(FPN)的两阶段 Faster R-CNN 和单阶段的 RetinaNet 作为 baseline,而 GhostNet 用于骨干网络做特征提取器。表 6 显示了检测结果,其中 FLOPs 是使用 [公式] 输入图像计算的。通过使用显着降低的计算成本,GhostNet 可以在单阶段的 RetinaNet 和两阶段的 Faster R-CNN 框架上达到和 MobileNetV2 和 MobileNetV3 类似的 mAP。



表 6 GhostNet 在 COCO 数据集的表现


总结

为了减少最新的深度神经网络的计算成本,本文提出了一种用于构建高效的神经网络结构的新型 Ghost 模块。Ghost 模块将原始卷积层分为两部分,首先使用较少的卷积核来生成原始特征图,然后,进一步使用廉价变换操作以高效生产更多幻影特征图。在基准模型和数据集上进行的实验表明,该方法是一个即插即用的模块,能够将原始模型转换为更紧凑的模型,同时保持可比的性能。此外,在效率和准确性方面,使用提出的新模块构建的 GhostNet 均优于最新的轻量神经网络,如 MobileNetV3。


作者介绍:


王云鹤 华为诺亚,深度学习边缘计算


原文链接:


https://zhuanlan.zhihu.com/p/109325275


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-06-19 19:458577
用户头像
赵钰莹 InfoQ 主编

发布了 847 篇内容, 共 559.2 次阅读, 收获喜欢 2640 次。

关注

评论

发布
暂无评论
发现更多内容

我在京东做研发第五期:京东云自研服务器,如何将开发成本降低 60% 的同时还更低碳环保?

京东科技开发者

cpu 服务器 环保 节能 企业号 3 月 PK 榜

3d建筑软件:Vectorworks 2023激活版

真大的脸盆

Mac Mac 软件 3D建筑动画

十问babel

虎妞先生

前端工程化 babel 前端‘’

工业数字孪生:西门子工业网络与设备虚拟调试案例

Openlab_cosmoplat

工业互联网 开源社区 数字孪生

Tapdata Cloud 基础课:新功能详解之「授权系统自动分析」,一键定位任务报错原因,快速获取修复建议

tapdata

大数据

MySQL创建用户与授权

源字节1号

软件开发 前端开发 后端开发 小程序开发

DBA必备的Mysql知识点:数据类型和运算符

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

关于 SysOM 2.0 网络/存储相关诊断功能介绍及案例展示 | 第 72-73 期

OpenAnolis小助手

开源 直播 系统运维 技术分享 龙蜥大讲堂

尚硅谷Node.js实战教程发布

小谷哥

低代码平台的流程引擎设计指南

Baidu AICLOUD

低代码 爱速搭

关于服务器数据迁移,介绍在服务器数据迁移计划中的7个步骤

镭速

办公要有新享法,「MIAOYUN生活梦想家」焕新升级!

秒云

搬迁公告 乔迁 办公升级

Seata-go 1.1.0 发布,补齐 AT 模式支持

SOFAStack

开源 互联网 开发者 开发 Seata框架

研发效能度量从 0 到 1 的『六脉神剑』

思码逸研发效能

研发效能 效能度量 研发效能度量

为什么CMS和G1都改用三色标记法,是可达性分析不香吗?

Java全栈架构师

Java 程序员 后端 JVM 架构师

倒计时2天:百度“文心一言”即将上线!

引迈信息

人工智能 低代码 AIGC ChatGPT 文心一言

低代码平台怎么选?5大通用要素可以参考

这我可不懂

低代码 低代码平台 JNPF

盘点10款优秀的工作任务进度管理软件

PingCode

项目管理 项目进度管理 项目进度管理软件

【云原生】k8s 环境快速部署(一小时以内部署完)

Java你猿哥

Java 学习 k8s Spring Boot ssm

DSC:数仓SQL脚本迁移的神奇工具

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

最新Blender 3.3安装包+详细安装教程

Finovy Cloud

blender 3D软件

家电类投诉高居榜首,拿什么拯救“投诉了个寂寞”的消费者?

Openlab_cosmoplat

工业互联网 开源社区 家电

AREX-携程无代码侵入的自动化回归测试平台

AREX 中文社区

开源 自动化测试 回归测试

Sugar BI 增强分析能力全场景解析

Baidu AICLOUD

BI

活动推荐 | 博睿数据数智领航营火热报名中

博睿数据

保险 博睿数据 活动报名 数智领航营

天工人巧日争新:昇腾AI的绚丽今日

脑极体

AI

vue项目中babel的最佳实践

虎妞先生

前端 Vue 3 vue cli babel

MQTT 5.0新特性:属性与载荷

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 载荷

2023主流系统 固资管理助力转型升级一步到位

加入高科技仿生人

低代码 企业数字化转型 资产管理

Rust的安全性和稳健型

非凸科技

CodeFirst

青柚1943

ORM SqlServer NET6 EFCore

  • 扫码添加小助手
    领取最新资料包
华为开源端侧神经网络架构GhostNet,超越谷歌MobileNet | CVPR 2020论文解读_AI_王云鹤_InfoQ精选文章