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

news2024/11/15 13:45:11

一、参考资料

原始论文:[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.coloradmin.cn/o/1464437.html

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

相关文章

力扣随笔之通过删除字母匹配到字典里最长单词(中等524)

思路:根据题意有两个问题待解决 1、s字符串中是否可以通过删减得到该英语词语 2、如何找到长度最长且字母序最小的字符串 针对第二个问题可以对词典dictionary进行预处理:根据长度降序和字母序升序来排序 针对第一个问题可以初始化两个指针i,…

Leetcode日记 889. 根据前序和后序遍历构造二叉树

Leetcode日记 889. 根据前序和后序遍历构造二叉树 给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。 如果存在多个答案&#…

设计模式之委派模式

文章目录 前言正文一、生活中的例子二、Java代码实现2.1 类设计2.2 代码实现2.2.1 Employee2.2.2 ArchitectureDesignEmployer2.2.3 BackEmployer2.2.4 FrontEmployer2.2.5 Leader2.2.6 EmployeeStrongPointEnum2.2.7 Boss 2.3 测试2.3.1 Client2.3.2 测试结果 三、委派模式的优…

Hackme 1

信息收集 Nmap部分 存活扫描: └─# nmap -sn 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-20 15:00 CST Nmap scan report for 192.168.10.1 (192.168.10.1) Host is up (0.00012s latency). MAC Address: 00:50:56:C0:00:08 (VMwar…

【vue js】将数组元素,按照2个一组,重组为2维数组

实现效果: 要实现上述,2张图片为一个走马灯的内容,而后端传回的数据是一个数组。我采用的是将数据重组为2维数组的方法。 因为没有强制要求展示顺序,我采用将首尾组合的方式组成一个数组元素; 首先判断原始数据长度的…

onnx 1.16 doc学习笔记四:python API-If和Scan

onnx作为一个通用格式,很少有中文教程,因此开一篇文章对onnx 1.16文档进行翻译与进一步解释, onnx 1.16官方文档:https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html), 如果觉得有收获&am…

$attrs

一、概念 vue官网定义如下: 包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过v-bind="$attrs"传入内部组件——在创建…

【高德地图】Android高德地图控件交互详细介绍

📖第5章 与地图控件交互 ✅控件交互🧊缩放按钮🧊指南针🧊定位按钮🧊地图Logo ✅手势交互🧊缩放手势🧊滑动手势🧊旋转手势🧊倾斜手势🧊指定屏幕中心点的手势操…

无线传感器网络简单介绍

(本文为简单介绍,内容来源自网络) 无线传感器网络(Wireless Sensor Networks)是一种创新的传感器网络架构,具有广泛的应用前景和潜力。与传统的有限传感器网络不同,无线传感器网络克服了节点数…

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程) 一、准备工作准备项1:U盘作为系统安装盘准备项2:您需要安装的系统镜像 二、启动转换助理步骤1:找到启动转换助理步骤2:启动转换助理步骤3&…

基于springboot+vue的安康旅游网站(前后端分离)

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

【Java EE初阶二十】http的简单理解(一)

1. 初识http HTTP 最新的版本应该是 HTTP/3.0,目前大规模使用的版本 HTTP/1.1; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同,HTTP 的报文格式&a…

基于Embedding召回和DSSM双塔模型

文章目录 基于Embedding召回介绍基于Embedding召回算法分类I2I召回U2I召回 DSSM模型DSSM双塔模型层次 基于Embedding召回介绍 基于embedding的召回是从内容文本信息和用户查询的角度出发,利用预训练的词向量模型或深度学习模型,将文本信息转换成向量进行…

【PyQt】15-让控件支持拖拽工作

文章目录 前言一、控件的拖拽-setAcceptDrops()1.1 代码1.2 运行结果 总结 前言 允许控件的拖拽操作,后续可以升级为拖拽图片之类的。hasHtml()、hasUrls()、hasImage() 一、控件的拖拽-setAcceptDrops() 比如把A放到B,需要两步 B—setAcceptDrops(Tru…

Hudi程序导致集群RPC偏高问题分析

1、背景 Hudi程序中upsert操作频繁,过多的删除和回滚操作,导致集群RPC持续偏高 2、描述 hudi采用的是mvcc设计,提供了清理工具cleaner来把旧版本的文件分片删除,默认开启了清理功能,可以防止文件系统的存储空间和文件数量的无限…

【自然语言处理】:实验5,司法阅读理解

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢…

配置redis-cell 控流插件

1.下载绑定资源也可以到git上下载 https://gitee.com/dianjinshi/springboot-nginx.git 2.创建文件夹 mkdir redis-cell 3.上传到linux上并进入文件夹解压 4.拷贝 docker cp libredis_cell.so redis:/usr/local/etc/redis 5.重启redis docker restart redis 6.进入redis…

六、回归与聚类算法 - 欠拟合和过拟合

目录 1、定义 2、原因及解决方法 2.1 正则化 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法:逻辑回归模型保存与加载无监督学习:K-means算法 1、定义 2、原因及解决方法 2.1 正则化

【Emgu CV教程】7.3、图像锐化之手搓代码实现直方图均衡化

文章目录 一、介绍1.写在前面2.彩色图像直方图均衡化函数 二、举例 一、介绍 1.写在前面 上一篇文章介绍的是直方图均衡化,使用Emgu CV的EqualizeHist()函数。它对于背景和前景都太亮或者太暗的图像非常有用,而且计算速度非常快,简单又好用…

NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获

目录 1、概述 2、输入捕获SDK配置 2.1、SAIC中断方式 2.2、IPWM或者IPM 1、概述 输入捕获,可以抓取高电平时间、低电平时间、占空比、周期、边沿检测与回调函数、边沿计数(ABZ解码)、时间戳、唤醒中断。 记录一下根据Emios模块实现上述部分…