RepGhost

news2025/1/16 18:51:35

轻量级的CNN模块重参数化技术构建硬件高效的 Ghost 模块,通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的轻量级 CNN,在几个视觉任务中都展示出了移动设备的精度-延迟权衡方面良好的技术水平。

1 RepGhost:重参数化技术构建硬件高效的 Ghost 模块

论文名称: RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization

论文地址:

https://arxiv.org/pdf/2211.06088.pdf

GhostNetV2 解读:NeurIPS'22 Spotlight|华为诺亚GhostNetV2出炉:长距离注意力机制增强廉价操作

G-GhostNet 解读: 想要一个适配GPU端的轻量级网络?安排!华为诺亚带着 G-GhostNet 走来

1.1.1 特征复用技术和本文动机

特征复用技术是指:通过简单地连接来自不同层的已有的一些特征图,来额外获得一些其他的特征。比如在 DenseNet[1] 中,在一个 Stage 内,前面层的特征图被重复使用并被馈送到它们的后续层,从而产生越来越多的特征图。或者在 GhostNet 中,作者通过一些廉价的操作来生成更多的特征图,并将它们与原始特征图 Concat 起来,从而产生越来越多的特征图。它们都通过 Concat 操作,利用特征复用技术,来扩大 channel 数量和网络容量,同时保持一个比较低的 FLOPs。似乎 Concat 操作已经成为特性复用的标准操作。

Concat 操作确实是一种 0 Params,0 FLOPs 的操作。但是,它在硬件设备上的计算成本是不可忽略的。 因为参数量和 FLOPs 不是机器学习模型实际运行时性能的直接成本指标。作者发现,在硬件设备上,由于复杂的内存复制,Concat 操作比加法操作效率低得多。因此,值得探索一种更好的、硬件效率更高的方法,以更好地适配特征复用技术。

因此,作者考虑引入结构重参数化方法,这个系列方法的有效性在 CNN 体系结构设计中得到了验证。具体而言,模型训练时是一个复杂的结构,享受高复杂度的结构带来的性能优势,训练好之后再等价转换为简单的推理结构,且不需要任何时间成本。受此启发,作者希望借助结构重参数化方法来实现特征的隐式重用,以实现硬件高效的架构设计。

所以本文作者希望通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。如前文所述,要把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。因此,在推断之前,特征重用过程可以从特征空间转移到权重空间,使 RepGhost 模块高效。

1.1.2 Concat 操作的计算成本

作者将 GhostNet 1.0x 中的所有 Concat 操作替换成了 Add 操作,Add 操作也是一种处理不同特征的简单操作,且成本较低。这两个运算符作用于形状完全相同的张量上。如下图1所示为对应网络中所有32个对应运算符的累计运行时间。Concat 操作的成本是 Add 操作的2倍。

图1:在基于 ARM 的手机上 Concat 操作和 Add 操作处理不同 Batch Size 的数据的运行时间 

图2:每个操作符在整个网络中的运行时间的百分比。Diff:Concat 操作和 Add 操作的差值的百分比

1.1.3 Concat 操作和 Add 操作

基于此,作者提出了以下 RepGhost 模块。

1.1.4 RepGhost 模块

这一小节介绍如何通过重参数化技术来进行特征复用,具体而言介绍如何从一个原始的 Ghost 模块演变成 RepGhost 模块。如下图3所示,从 Ghost 模块开始:

图3:从一个原始的 Ghost 模块演变成 RepGhost 模块的过程

(a) 原始的 Ghost 模块,这里省去了第一步的 1×1 卷积。

(b) 把原始的 Ghost 模块的 Concat 操作换成 Add 操作,以求更高的效率。

(c) 把 ReLU 移到 Add 操作之后,这种移动使得模块满足结构重新参数化规则,从而可用于快速推理。

(d) 在恒等映射 Identity Mapping 分支中添加 BN 操作,使得在训练过程中带来非线性,并且可以被融合用于快速推断。

(e) 模块 (d) 可以被融合成模块 (e),用于快速推断。RepGhost 模块有一个简单的推理结构,它只包含规则的卷积层和ReLU,这使得它具有较高的硬件效率。特征融合的过程是在权重空间,而不是在特征空间中进行,然后把两个分支的参数进行融合产生快速推理的结构。

与 Ghost 模块的对比

作用:

  • Ghost 模块提出从廉价的操作中生成更多的特征图,因此可以以低成本的方式扩大模型的容量。

  • RepGhost 模块提出了一种更有效的方法,通过重参数化来生成和融合不同的特征图。与 Ghost 模块不同,RepGhost 模块去掉了低效的 Concat 操作,节省了大量推理时间。并且信息融合过程由 Add 操作以隐含的方式执行,而不是留给其他卷积层。

 1.1.5 RepGhostNet 网络

如下图4所示,(a) GhostNet 网络的一个 Block。(b) RepGhost 网络训练时的一个 Block。(c) RepGhost 网络推理时的一个 Block。这里值得注意的是 RepGhost 网络的维度问题。对于一个 RepGhost 模块,输出维度等于输入维度;但是对于原来的 Ghost 模块,输出维度是输入维度的2倍。因此为了维持 RepGhost 网络和原始 GhostNet 的维度一致,有个变化需要注意下:

图4:(a) GhostNet 网络的一个 Block。(b) RepGhost 网络训练时的一个 Block。(c) RepGhost 网络推理时的一个 Block

下图5所示是 RepGhostNet 的网络架构。首先是一个输出通道为16的卷积层处理输入数据。一堆正常的 1×1 卷积和 AvgPool 预测最终输出。根据输入大小将 RepGhost Bottleneck 分成5组,并且为每组中除最后一个 Bottleneck 之外的最后一个 Bottleneck 设置 stride=2。

 图5:RepGhost 网络架构

1.1.6 实验结果

ImageNet-1K 实验结果

如下图所示是 ImageNet-1K 图像分类任务的实验结果。NVIDIA V100 GPUs ×8 作为训练设备,Batch size 开到1024,优化器 SGD (0.9 momentum),基本学习率为 0.6,Epoch 数为 300,weight decay 为1e-5,并且使用衰减系数为0.9999的 EMA (Exponential Moving Average) 权重衰减。数据增强使用 timm 库的图像裁剪和翻转,prob 0.2 的随机擦除。对于更大的模型 RepGhostNet 1.3×,额外使用 auto augment。

图6:ImageNet-1K 实验结果

实验结果如上图6所示。根据 FLOPs,所有模型被分为3个级别。在基于 ARM 的手机上评估每个模型的相应延迟。图1描绘了所有模型的延迟和精度。可以看到,在准确性-延迟权衡方面,RepGhostNet 优于其他手动设计和基于 NAS 的模型。

RepGhostNet 实现了与其他先进的轻量级 CNN 相当甚至更好的准确性,而且延迟低得多。例如,RepGhostNet 0.5× 比 GhostNet 0.5× 快 20%,Top-1 准确性高 0.5%,RepGhostNet 1.0× 比 MobileNetV3 Large 0.75× 快 14%,Top-1 准确性高 0.7%。在延迟相当的情况下,RepGhostNet 在所有三个量级大小的模型上面都超过所有对手模型。比如,RepGhostNet 0.58× 比 GhostNet 0.5× 高 2.5%,RepGhostNet 1.11× 比MobileNetV3 Large 0.75× 高 1.6%。

目标检测和实例分割实验结果

使用 RetinaNet 和 Mask RCNN分别用于目标检测任务和实例分割任务。仅替换 ImageNet 预训练的主干,并在8个 NVIDIA V100 GPUs 中训练12个时期的模型结果如下图7所示。RepGhostNet 在两个任务上都优于MobileNetV2,MobileNetV3 和 GhostNet,且推理速度更快。例如,在延迟相当的情况下,RepGhostNet 1.3× 在这两项任务中比 GhostNet 1.1× 高出 1% 以上,RepGhostNet 1.5× 比 MobileNetV2 1.0× 高出 2% 以上。

图7:目标检测和实例分割实验结果

消融实验1:与 Ghost-Res50 的对比

为了验证大模型的 RepGhost 模块的泛化性,作者将其与 GhostNet 模型 Ghost-Res50 进行了比较。用 RepGhost 模块替换 Ghost-Res50 中的 Ghost 模块,得到 RepGhost-Res50。所有模型都使用相同的训练设置进行训练。对于 MNN 延时,与图6结果使用相同的手机测得。对于 TRT 延迟,作者首先将模型转换为 TensorRT,然后在 Batch size 为32的 T4 GPU 上运行框架上的每个模型100次,并报告平均延迟。

结果如下图8所示。可以看到,RepGhost-Res50 在 CPU 和 GPU 上都明显快于 Ghost-Res50,但精度相当。特别地,在 MNN 推理和 TensorRT 推理中,RepGhost-Res50 (s=2) 比 Ghost-Res50 (s=4) 分别获得了 22% 和44% 的加速比。

 图8:与 Ghost-Res50 的对比

消融实验2:重参数化结构

为了验证重新参数化结构,作者在 RepGhostNet 0.5× 上进行消融实验,方法是在图 3(c) 所示的模块的恒等映射分支中交替使用 BN,1×1 Depth-wise Convolution 和恒等映射本身。结果如下图9所示。可以看到,带有 BN 重参数化的 RepGhostNet 0.5× 达到了最好的性能。作者将其作为所有其他 RepGhostNet 的默认重新参数化结构。

作者将这种改善归因于 BN 的非线性,它提供了比恒等映射更多的信息。1×1 Depth-wise Convolution 之后也是 BN,因此,由于后面的归一化,其参数对特征不起作用,并且可能使 BN 统计不稳定,作者推测这导致了较差的性能。

图9:重新参数化结构消融实验                                                        whaosoft aiot  http://143ai.com

消融实验3:Shortcut 的必要性

尽管 会增加内存访问成本 (从而影响运行时性能),但对于计算受限的移动设备来说,这种影响可以忽略不计,如表所示。7.考虑到所有这些,我们确认快捷方式对于轻量级CNN是必要的,并在我们的RepGhostNet中保留快捷方式。mageNet 数据集上的准确性,结果如下图显示了使用和不使用快捷方式时 RepGhostNet 的准确性和延迟。很明显,Shortcut 不会严重影响实际运行的延时,但有助于优化过程。另一方面,大模型去掉 Shortcut 对 Latency 的影响要小于小模型,这可能意味着 Shortcut 对于轻量级 CNN 比大型模型更重要,例如 RepVGG 和 MobileOne。

尽管 Shortcut 会增加内存访问成本 (从而影响运行时性能),但对于计算受限的移动设备来说,这种影响可以忽略不计。考虑到所有这些,我们认为 Shortcut 对于轻量级 CNN 是必要的,并在 RepGhostNet 中保留了 Shortcut 操作。

图10:Shortcut 的必要性消融实验结果

总结

GhostNet 通过一些廉价的操作来生成更多的特征图,并将它们与原始特征图 Concat 起来,从而产生越来越多的特征图,它利用特征复用技术,来扩大 channel 数量和网络容量,同时保持一个比较低的 FLOPs。似乎 Concat 操作已经成为特性复用的标准操作。Concat 操作确实是一种 0 Params,0 FLOPs 的操作。但是,它在硬件设备上的计算成本是不可忽略的。所以本文作者希望通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的轻量级 CNN,在几个视觉任务中都展示出了移动设备的精度-延迟权衡方面良好的技术水平。

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

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

相关文章

swift-类属性-MachO读取

上一篇 swift-类属性 为源码层面类属性结构剖析,接下来从MachO层面验证读取类属性内容 极简类结构 class IFLPerson2 {var age: Int 20var heigh: Double 180}MachO-__swift5_types读取 var size: UInt 0//__swift5_types section 的pFilevar ptr getsectdata(…

Alibaba内部传出的面试秘技,秋招offer尽收囊中

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,…

修改Cmder默认命令提示符

修改Cmder默认命令提示符常规操作第二种方法我的方法参考常规操作 打开在Cmder目录下的vendor文件夹,编辑里面的clink.lua文件找到local lambda “λ”,将“λ”修改为“$”,如图(图片来源:https://www.jianshu.com/…

11月“图无处不在”线上直播 - Neo4j宣布下一代图数据平台Neo4j 5上线

中国北京,2022年11月10日—— 图技术的领导者Neo4j 宣布下一代可用于云端的图数据平台Neo4j 5上线。在传统数据库的基础上,扩大了原生图的性能优势,同时在本地、云、混合云或多云部署中实现更高可扩展性,从而使企业能够更快地创建…

Java 集合---尚硅谷Java入门视频学习

问题:什么时候需要一个容纳数据的容器,也就是集合对象? Java集合框架中就包含了对不确定个数的数据处理的集合类问题:如果只是为了容纳数据,可以是直接使用数组,为什么要学习集合? 数组使用起来…

【论文阅读】多模态模型CoCa

Introduction 在这项工作中,我们统一了单编码器、双编码器和编码器-解码器范式,并训练了一个包含三种方法优点的图像-文本基础模型。我们提出了对比Captioner模型(CoCa),该模型采用经过对比损失和captioning损失训练的编码器-解码器架构。如图…

C语言源代码系列-管理系统之职工工资管理系统

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过…

数据存储策略——lsm-tree

文章目录一、背景二、lsm-tree简介三、lsm-tree设计思想四、lsm-tree原理1.写操作2.读操作3.有序表持久化4.后台压缩五、lsm-tree的应用六、lsm-tree优缺点分析总结一、背景 由于传统机械磁盘的原理,它在读写时有个寻道的操作,在读写时都需要消耗一个寻…

基于PHP+MySQL网上报名系统的设计与实现

一直以来如何更好的实现校园现代化和信息化是当前很多高校一直探索的问题,随着时代的发展,高校内各类考试和报名也越来越多,如何通过互联网直接进行在线报名是本系统研究的一个重点内容。 本系统是一个网上报名系统,为了能够更加灵…

[计算机毕业设计]机器学习的数据驱动股票价格预测

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

财政政策与货币政策(下)

财政政策与货币政策(下) – 潘登同学的宏观经济学笔记 文章目录财政政策与货币政策(下) -- 潘登同学的宏观经济学笔记粘性价格下的货币经济总供给曲线总供给曲线斜率与价格粘性菲利普斯曲线的消失货币政策的“动态不一致”财政政策与货币政策的配合财政主导 vs. 货币主导恶性通…

【学习记录】实例分割的发展与区别

【学习记录】实例分割的发展与区别 参考于《The Evolution Of Instantce Segmentation》 文章目录【学习记录】实例分割的发展与区别发展历程RCNNFast RCNNMultipath NetworkFaster RCNNMask RCNN发展历程 RCNN 开发集成了RCNN技术产生了AlexNet,以及使用选择性搜索…

浅谈App的启动优化

1. 应用启动的方式 在Android中,应用启动一般可分为三种:冷启动、温启动、热启动。 那么什么是冷启动、温启动和热启动呢?下面我们来简单看一下它们的定义: 冷启动:当启动应用时,后台没有该应用的进程。这…

Allegro导入导出设计数据操作指导

Allegro导入导出设计数据操作指导 Allegro有个非常好用的功能,就是支持设计数据的导入和导出,让协同设计变得更加方便,具体操作如下 以下面的设计数据为例,需要把这些数据导入到另外一个版本中 点击file-export-subdrawing Options所有的项目都勾选起来 Find选择需要导…

linux笔记(7):东山哪吒D1H使用framebuffer控制HDMI直线

文章目录1.测试流程和结果1.1 使能HDMI1.2 framebuffer操作流程1.3 测试结果2.测试过程详述2.1 编译源码2.2上传可执行文件2.3修改文件的权限,执行文件3.源码解释3.1 HDMI使用的颜色格式是ARGB4.源码工程链接这部分linux笔记是记录我入门的过程,内容基本…

【Flutter】【widget】Table 表格widget

文章目录前言一、Table 是什么?二、使用步骤1.Table 基础使用2.宽度3.设置边框4.TableCell设置单元格式widget等其他设置总结前言 Table 表格widget,其实很少使用到的,等有需要的时候在查看该widget 一、Table 是什么? 表格widg…

Trino源码Gitlab CICD单测环境建设

在中大型公司,由于对Presto源码的定制魔改量越来越大,会随着时间推移而增大出现冷门bug的概率,所以建立一套自动测试机制,在魔改源码合入主分支时可以自动触发test case,通过特定单测的执行失败,来更清晰的…

多云管理产品组合VMware Aria,开启多云管理新篇章

今年8月份,VMware Explore美国大会上宣布了多云管理产品组合VMware Aria,宣布之后,市场上关注度非常高,而且受到了热捧。Aria这个名字动听且贴切,中文意思是 “咏叹调”,也就是说要用统一的、一致的曲调来歌…

big.LITTLEDynamIQ

最近看到了DynamIQ,于是来了解一下什么是DynamIQ? 前言 首先要知道DynamIQ,那么你肯定得知道big.LITTLE。因为DynamIQ可以说是big.LITTLE新一代或者是升级版。 那么在这之前你肯定得知道什么是big.LITTLE? 然后知道了后你就会…

旋转框目标检测mmrotate v0.3.1 训练DOTA数据集(三)——配置文件优化技巧

1、 目标检测比赛中的tricks DOTAv2遥感图像旋转目标检测竞赛经验分享(Swin Transformer Anchor free/based方案) 目标检测比赛中的tricks(已更新更多代码解析) 水下目标检测算法赛解决方案分享 | 2020年全国水下机器人&#xf…