通俗易懂理解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…

Android的LiveData

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的…

ChatGPT在医学领域的应用与前景

标题&#xff1a; ChatGPT在医学领域的应用与前景 正文&#xff1a; 随着人工智能技术的不断进步&#xff0c;ChatGPT等语言模型在医学领域的应用逐渐深入&#xff0c;展现出其巨大的潜力和广阔的发展前景。作为一个高级的自然语言处理工具&#xff0c;ChatGPT能够理解和生成…

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…

【OpenAI官方课程】第四课:ChatGPT文本推断Summarizing

欢迎来到ChatGPT 开发人员提示工程课程&#xff08;ChatGPT Prompt Engineering for Developers&#xff09;&#xff01;本课程将教您如何通过OpenAI API有效地利用大型语言模型&#xff08;LLM&#xff09;来创建强大的应用程序。 本课程由OpenAI 的Isa Fulford和 DeepLearn…

手拉手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;可…

快速搭建ARM64实验平台(QEMU虚拟机+Debian)

文章目录 前言一、实验平台介绍二、安装步骤2.1 安装工具2.2 下载仓库2.3 编译内核并制作根文件系统2.4 运行刚才编译好的ARM64版本的Debian系统2.5 在线安装软件包2.6 在QEMU虚拟机和主机之间共享文件 三、单步调试ARM64 Linux内核参考资料 前言 最近翻阅笨叔的《奔跑吧Linux…

go-zero微服务入门教程

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

【Git】 删除远程分支

Git 删除远程分支有以下几种方法 服务端UI工具 Git 的服务端图形化工具主要是 web 端。常用的有 GitHub、Gitea、Gutlab 等。 这些工具都提供了分支管理&#xff0c;可以直接在各服务端找到相关功能&#xff0c;谨慎删除。 客户端UI工具 Git 拥有诸多客户端 UI 工具&#x…

详细分析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是…

腾讯云主机Ubuntu22.04安装Odoo17

一、安装PostgreSQL16 参见之前的文章 Ubuntu22.04安装PostgreSQL-CSDN博客 二、安装Odoo17 本方案使用的nightly版的odoo&#xff0c;安装的都是最新版odoo wget -O - https://nightly.odoo.com/odoo.key | apt-key add - echo "deb http://nightly.odoo.com/17.0/n…

Maven【1】(命令行操作)

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

Python学习笔记——PySide6设计GUI应用之UI与逻辑分离

1、打开PySide6的UI设计工具pyside6-designer&#xff0c;设计一个主窗口&#xff0c;保存文件名为testwindow.ui 2、使用PySide6的RCC工具把testwindow.ui文件转换为testwindow_rc.py文件&#xff0c;此文件中有一个类Ui_MainWindow&#xff08;包含各种控件对象&#xff09;…

设计模式浅析(八) ·外观模式

设计模式浅析(八) 外观模式 日常叨逼叨 java设计模式浅析&#xff0c;如果觉得对你有帮助&#xff0c;记得一键三连&#xff0c;谢谢各位观众老爷&#x1f601;&#x1f601; 外观模式 概念 外观模式&#xff08;Facade Pattern&#xff09;是一种设计模式&#xff0c;它为…

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

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

备战蓝桥杯 Day10(背包dp)

01背包问题 1267&#xff1a;【例9.11】01背包问题 【题目描述】 一个旅行者有一个最多能装 M&#xfffd; 公斤的背包&#xff0c;现在有 n&#xfffd; 件物品&#xff0c;它们的重量分别是W1&#xff0c;W2&#xff0c;...,Wn&#xfffd;1&#xff0c;&#xfffd;2&#…

蓝桥杯刷题--python-10(2023填空题3)

0工作时长 - 蓝桥云课 (lanqiao.cn) import datetime time_str_list=[] while(True):tmp=input()if not tmp: breaktime_str_list.append(tmp)# time_list=[datetime.datetime.strptime(t,"%Y-%m-%d %H:%M:%S")for t in time_str_list] time_list.sort() sum=0 for i…

【代码随想录算法训练营Day25】● 216.组合总和III ● 17.电话号码的字母组合

文章目录 Day 25 第七章 回溯算法part02216.组合总和III自己的思路&#xff08;✅通过&#xff09; 17.电话号码的字母组合思路代码 Day 25 第七章 回溯算法part02 今日内容&#xff1a; ● 216.组合总和III● 17.电话号码的字母组合 216.组合总和III 如果把 组合问题理解了…