通俗易懂理解G-GhostNet轻量级神经网络模型

一、参考资料

原始论文:[1]

IJCV22 | 已开源 | 华为GhostNet再升级,全系列硬件上最优极简AI网络

二、G-GhostNet相关介绍

G-GhostNet 又称为 GhostNetV1 的升级版,是针对GPU优化的轻量级神经网络。

1. 摘要

GhostNetV1 作为近年来最流行的轻量级神经网络架构,其在ARM和CPU端的应用已经非常广泛。而在GPU和NPU这种并行计算设备上,GhostNetV1 并没有体现出优势。最近,华为诺亚的研究者针对GPU等设备的特点,巧妙引入跨层的廉价操作,减少计算量的同时减少的内存数据搬运,基于此设计了GPU版GhostNet。实验表明,G-GhostNet 在现有GPU设备上达到了速度和精度的最佳平衡。在华为自研NPU昇腾310上,G-GhostNet 的速度比同量级 ResNet 要快30%以上。该论文已被计算机视觉顶级期刊IJCV收录。

2. 引言

关于GhostNetV1网络模型的详细介绍,请参考另一篇博客:通俗易懂理解GhostNetV1轻量级神经网络模型

基于卷积神经网络的推理模型在以计算机视觉为基础的各个终端任务如图像识别、目标检测、实力分割等场景中都有广泛的应用。传统的基础神经网络往往由于规模较大的参数量与计算量,导致各项终端任务无法实时工作。现有的轻量级推理网络(MobileNet, EfficientNet, ShuffleNet)都是针对CPU、ARM等移动设备设计而成,一般以深度可分离卷积为基础,这些网络相比于基于普通卷积的神经网络(ResNet, Inception)具有更少的计算量。但是在GPU等基于大吞吐量设计的处理单元上的表现却不尽人意,推理速度甚至比传统的卷积神经网络更慢。随着硬件基础的提升,云服务器、手机等端侧设备也配备了大量的GPU模块,设计出更适合GPU的推理模型具有重大的学术和商业价值。

在这里插入图片描述

回顾一下 GhostNetV1 的架构,GhostNetV1Ghost Module搭建而成,Ghost Module 采用普通卷积生成少量特征图,而更多特征图则使用廉价操作(如DWConv)来生成。这样,Ghost Module使用更少计算量更廉价的方式生成了和普通卷积层一样多的特征图。而 DWConv 等廉价操作对于流水线型CPU、ARM等移动设备更友好,对于并行计算能力强的GPU则不太友好。

相同stage之间,不同层的输出特征具有较高的相似性,不同stage之间,特征的相似性较低。因此我们提出一种在同一个stage内进行跨层廉价线性变换,生成Ghost特征的基础网络结构 G-GhostNet

G-GhostNet 重点关注在GPU设备上能快速推理的卷积神经网络,设计出用更少计算量和参数量达到更高推理速度和更高测试精度的模型,让网络生成与关键特征相似性高的特征。

3. G-Ghost stage

在这里插入图片描述

图(a) 是普通卷积神经网络(例如ResNet)的stage,记作Vanilla CNN stage,由n层卷积层 { L 1 , L 2 , ⋯ , L n } \{L_{1},L_{2},\cdots,L_{n}\} {L1,L2,,Ln} 堆叠而成。给定输入特征图 X X X,则第一个block和最后一个block的输出特征图可以表示为:
Y 1 = L 1 ( X ) , Y n = L n ( L n − 1 ( ⋯ L 2 ( Y 1 ) ) ) , \begin{aligned}Y_1&=L_1(X),\\Y_n&=L_n(L_{n-1}(\cdots L_2(Y_1))),\end{aligned} Y1Yn=L1(X),=Ln(Ln1(L2(Y1))),
ResNet-34 为例,第2个stage的第一个block和最后一个block的输出特征图,如下图所示。

在这里插入图片描述

图(b) 是 G-Ghost 的stage,记作G-Ghost stage,其由主干分支和Ghost分支组成。给定输入特征图 X ∈ R c × h × w X\in\mathbb{R}^{c\times h\times w} XRc×h×w,主干分支的最后一个block的输出特征图记作 Y n c ∈ R ( 1 − λ ) c × h × w Y_{n}^{c}\in\mathbb{R}^{(1-\lambda)c\times h\times w} YncR(1λ)c×h×w,Ghost分支输出的的Ghost特征图记作 Y n g ∈ R λ c × h × w Y_{n}^{g}\in\mathbb{R}^{\lambda c\times h\times w} YngRλc×h×w,其中 0 ≤ λ ≤ 1 0\leq\lambda\leq1 0λ1,表示Ghost特征图的比例。

Y n c Y_{n}^{c} Ync 可以表示为:
Y n c = L n ′ ( L n − 1 ′ ( ⋯ L 2 ′ ( Y 1 ) ) ) , Y_{n}^{c}=L'_{n}(L'_{n-1}(\cdots L'_{2}(Y_{1}))), Ync=Ln(Ln1(L2(Y1))),

其中, L 2 ′ , ⋯ , L n ′ L_2^{\prime},\cdots,L_n^{\prime} L2,,Ln 是以 ( 1 − λ ) × w i d t h (1-\lambda)\times\mathrm{width} (1λ)×width倍率进行压缩的block。

Y n g Y_n^g Yng 与第一个block的输出特征图 Y 1 Y_1 Y1类似,可以通过廉价的线性变换 C C C得到,表达公式如下:
Y n g = C ( Y 1 ) , Y_n^g=C(Y_1), Yng=C(Y1),
其中, C C C 表示廉价的线性变换,linear kernels尺寸可以为 1 × 1 1 \times 1 1×1 或者 5 × 5 5 \times 5 5×5 等。

最后,拼接(concat) Y n c Y_{n}^{c} Ync Y n g Y_n^g Yng,得到G-Ghost stage最终的输出:
Y n = [ Y n c , Y n g ] . Y_n=[Y_n^c,Y_n^g]. Yn=[Ync,Yng].
图©是在G-Ghost stage 基础上增加mix操作的stage,记作 G-Ghost stage w/ mix \text{G-Ghost stage w/ mix} G-Ghost stage w/ mix,mix操作用于增强中间层信息。 G-Ghost stage w/ mix \text{G-Ghost stage w/ mix} G-Ghost stage w/ mix利用多个廉价线性变换生成多个Ghost特征图,其原理与G-Ghost stage类似,不再赘述。

4. G-GhostNet

G-GhostNet 由多个G-Ghost stage 堆叠而成,具体网络结构如下表所示。

在这里插入图片描述

解释说明

  • Block,表示传统的残差模块;
  • output,表示输出特征图的尺寸;
  • #out,表示输出特征图的channels。

5. 总结

G-GhostNet 提出的跨层廉价线性变换,可用于不同网络结构中,进一步优化模型运行所需的内存,提升GPU等设备上的运行速度。至此,GhostNet系列网络模型已经打通ARM、CPU、GPU甚至NPU的常用设备,能够在不同硬件需求下达到最佳的速度和精度的平衡。

三、参考文献

[1] Han K, Wang Y, Xu C, et al. GhostNets on heterogeneous devices via cheap operations[J]. International Journal of Computer Vision, 2022, 130(4): 1050-1069.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 611.有效三角形的个数

题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2,3,4] 输出: 4提示: 1 < nums…

WPF 开发调试比较:Visual Studio 原生和Snoop调试控制台

文章目录 前言运行环境简单的WPF代码实现一个简单的ListBoxVisual Studio自带代码调试热重置功能测试实时可视化树查找窗口元素显示属性 Snoop调试使用Snoop简单使用调试控制台元素追踪结构树Visual/可视化结构树Logical/本地代码可视化树AutoMation/自动识别结构树 WPF元素控制…

基于springboot+vue的房屋租赁管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

手拉手Vite+Vue3+TinyVue+Echarts+TailwindCSS

技术栈springboot3hutool-alloshi-coreVue3viteTinyVueEchartsTailwindCSS软件版本IDEAIntelliJ IDEA 2022.2.1JDK17Spring Boot3.1hutool-all5.8.18oshi-core6.4.1Vue35.0.10vite5.0.10axios1.6.7echarts5.4.3 ECharts是一个使用 JavaScript 实现的开源可视化库&#xff0c;可…

go-zero微服务入门教程

go-zero微服务入门教程 本教程主要模拟实现用户注册和用户信息查询两个接口。 准备工作 安装基础环境 安装etcd&#xff0c; mysql&#xff0c;redis&#xff0c;建议采用docker安装。 MySQL安装好之后&#xff0c;新建数据库dsms_admin&#xff0c;并新建表sys_user&#…

详细分析Python中的unittest测试框架

目录 1. 基本知识2. API2.1 断言2.2 setUp() 和 tearDown() 3. Demo 1. 基本知识 unittest 是 Python 标准库中的一个单元测试框架&#xff0c;用于编写和执行测试用例以验证代码的正确性 提供了一种结构化的方法来编写测试&#xff0c;使得测试代码更加模块化和易于维护 以…

【ACW 服务端】页面操作Java增删改查代码生成

版本: 1.2.2-JDK17-SNAPSHOT 项目地址&#xff1a;wu-smart-acw 演示地址&#xff1a;演示地址 admin/admin Java增删改查代码生成 找到对应菜单 选择你需要的数据实例 选择数据库 选择数据库表 选择客户端&#xff08;如果是本地ACW服务代码启动默认注册上的客户端ID是…

Maven【1】(命令行操作)

文章目录 一丶创建maven工程二、理解pom.xml三、maven的构建命令1.编译操作2.清理操作3.测试操作4.打包操作5.安装操作 一丶创建maven工程 首先创建这样一个目录&#xff0c;然后从命令行里进入这个目录&#xff1a; 然后接下来就在这个命令行里进行操作了。 这个命令是&…

深度学习发展里程碑事件2006-2024

2006-2024年&#xff0c;深度学习发展经历众多的里程碑事件&#xff0c;一次次地刺激着人们的神经&#xff0c;带来巨大的兴奋。电影还在继续&#xff0c;好戏在后面&#xff0c;期待…… 2006年 深度信念网络&#xff08;DBNs&#xff09;&#xff1a;Geoffrey Hinton与他的学…

计算机组成原理(9)----硬布线控制器

控制单元CU若想发出对应的控制信号&#xff0c;则需要以下信息&#xff1a;指令操作码&#xff0c;目前的机器周期&#xff0c;节拍信号&#xff0c;机器状态条件&#xff0c;根据这些信息&#xff0c;CU就能确定在这个节拍下应该发出哪些"微命令"&#xff0c;也就是…

SQL注入:使用预编译防御SQL注入时产生的问题

目录 前言 模拟预编译 真正的预编译 预编译中存在的SQL注入 宽字节 没有进行参数绑定 无法预编译的位置 前言 相信学习过SQL注入的小伙伴都知道防御SQL注入最好的方法&#xff0c;就是使用预编译也就是PDO是可以非常好的防御SQL注入的&#xff0c;但是如果错误的设置了…

计算机设计大赛 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

Python自动化UI测试之Selenium基础实操

1. Selenium简介 Selenium 是一个用于 Web 应用程序测试的工具。最初是为网站自动化测试而开发的&#xff0c;可以直接运行在浏览器上&#xff0c;支持的浏览器包括 IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Googl…

SVN忽略已提交的文件(ignore,移出版本控制)

本文适用于已安装TortoiseSVN客户端的同学。 1、右键点击要忽略的文件夹或文件&#xff0c;鼠标移到“TortoiseSVN”&#xff0c;找到“Unversion and add to ignore list”&#xff0c;选择文件夹&#xff0c;弹出提示框确认忽略。 2、设置完忽略文件后&#xff0c;还需要做…

多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型

多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型 目录 多维时序 | Matlab实现GRU-MATT门控循环单元融合多头注意力多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.多维时序 | Matlab实现GRU-MATT门控循环单元融…

【Maven】介绍、下载及安装、集成IDEA

目录 一、什么是Maven Maven的作用 Maven模型 Maven仓库 二、下载及安装 三、IDEA集成Maven 1、POM配置详解 2、配置Maven环境 局部配置 全局设置 四、创建Maven项目 五、Maven坐标详解 六、导入Maven项目 方式1&#xff1a;使用Maven面板&#xff0c;快速导入项目 …

React Native框架开发介绍,以及其优点

大家好&#xff0c;我是咕噜铁蛋&#xff0c;在今天的文章中&#xff0c;我通过科技手段和大家一起探讨一下React Native框架的开发介绍以及其优点。我深知选择合适的开发工具对于项目的成功至关重要。而React Native作为一款流行的跨平台移动应用开发框架&#xff0c;其独特之…

【服务器数据恢复】FreeNAS+ESXi虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器通过FreeNAS&#xff08;本案例使用的是UFS2文件系统&#xff09;实现iSCSI存储&#xff0c;整个UFS2文件系统作为一个文件挂载到ESXi虚拟化系统&#xff08;安装在另外2台服务器上&#xff09;上。该虚拟化系统一共有5台虚拟机&…

2024水科技大会暨技术装备成果展览会——高品质供水和饮用水水源安全保障论坛

供水与饮水安全直接关系到人民群众的生活与健康&#xff0c;切实做好城市供水与饮水安全保障工作&#xff0c;是把以人为本真正落到实处的一项紧迫任务。近年来&#xff0c;中央和地方加大了城乡供水与饮水安全保障工作的力度&#xff0c;对标最优质供水城市建设要求&#xff0…

[Angular 基础] - service 服务

[Angular 基础] - service 服务 之前的笔记就列举三个好了……没想到 Angular 东西这么多(&#xff70; &#xff70;;)……全加感觉越来越凑字数了 [Angular 基础] - 视图封装 & 局部引用 & 父子组件中内容传递 [Angular 基础] - 生命周期函数 [Angular 基础] - 自…