RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构

简介: RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构

一、本文介绍

本文记录的是基于GhostNet v1的RT-DETR网络模型轻量化方法研究GhostNet中的Ghost模块Ghost瓶颈结构是其轻量化的关键。Ghost模块克服了传统卷积层计算资源需求大的问题,Ghost瓶颈则合理设计了通道数量的变化以及与捷径连接的方式,能更好地在减少计算成本的同时保持较高性能,从而提升模型在移动设备上的应用能力和效率。

模型 参数量 计算量 推理速度
rtdetr-l 32.8M 108.0GFLOPs 11.6ms
Improved 21.3M 63.0GFLOPs 10.9ms

专栏目录:RT-DETR改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:RT-DETR改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!

二、GhostNet V1模型轻量化设计

GhostNet: More Features from Cheap Operations

2.1 出发点

  • 减少计算资源需求:传统的深度卷积神经网络在实现高准确率时通常需要大量的参数和浮点运算(FLOPs),例如ResNet - 50有大约2560万个参数,处理一张224×224大小的图像需要41亿FLOPs。这使得在移动设备(如智能手机和自动驾驶汽车)上部署变得困难,因此需要探索更轻便、高效且性能可接受的网络架构。
  • 利用特征图冗余:观察到在经过良好训练的深度神经网络的特征图中存在大量甚至冗余的信息,例如ResNet - 50生成的输入图像的特征图中存在许多相似的特征图对。这些冗余信息可以作为一种资源来利用,以更高效的方式生成更多特征。

2.2 原理

2.2.1 卷积层

在常规的卷积层操作中,对于输入数据$X \in \mathbb{R}^{c×h×w}$(其中$c$是输入通道数,$h$和$w$分别是输入数据的高度和宽度),产生$n$个特征图的任意卷积层操作可以表示为$Y = X f + b$。其中$$是卷积操作,$b$是偏置项,$Y \in \mathbb{R}^{h'×w'×n}$是输出特征图,$f \in \mathbb{R}^{c×k×k×n}$是该层的卷积滤波器,$h'$和$w'$是输出数据的高度和宽度,$k×k$是卷积滤波器$f$的核大小。在这个卷积过程中,所需的FLOPs数量为$n \cdot h' \cdot w' \cdot c \cdot k \cdot k$,由于滤波器数量$n$和通道数$c$通常很大,这个值往往非常大。

2.2.2 Ghost模块

  • 生成内在特征图:将深度神经网络中的普通卷积层分为两部分。首先通过普通卷积生成m个内在特征图$Y' \in \mathbb{R}^{h'×w'×m}$,其计算公式为$Y' = X * f'$,其中$X$是输入数据,$f'$是卷积滤波器,这里的卷积操作的超参数(如滤波器大小、步长、填充等)与普通卷积层保持一致,以保证输出特征图的空间尺寸不变。
  • 生成Ghost特征图:基于这些内在特征图,通过一系列简单的线性操作$\Phi{i, j}$生成Ghost特征图。对于每个内在特征图$y{i}'$,可以生成s个Ghost特征图$y{ij}$,其计算公式为$y{ij} = \Phi{i, j}(y{i}')$,其中$i = 1, \cdots, m$,$j = 1, \cdots, s$。最后一个线性操作$\Phi_{i, s}$为恒等映射,用于保留内在特征图。通过这种方式,可以得到$n = m \cdot s$个特征图作为Ghost模块的输出。

在这里插入图片描述

2.2.3 复杂度分析

  • 理论加速比:假设存在1个恒等映射和$m \cdot (s - 1)$个线性操作,每个线性操作的平均核大小为$d×d$,理想情况下,这些线性操作可以有不同的形状和参数,但考虑到实际的在线推理效率,通常建议在一个Ghost模块中采用相同大小的线性操作(如3×3或5×5)。理论上,使用Ghost模块升级普通卷积的加速比$r{s}$约为$s$,压缩比$r{c}$也约为$s$。

2.3 结构

2.3.1 Ghost瓶颈(Ghost Bottlenecks)

  • 组成结构:主要由两个堆叠Ghost模块组成。第一个Ghost模块作为扩展层,增加通道数量,其输出通道数与输入通道数的比值称为扩展比;第二个Ghost模块减少通道数量以匹配捷径路径。捷径连接在这两个Ghost模块的输入和输出之间,并且在每个层之后应用批量归一化(BN)和ReLU非线性激活函数,但根据MobileNetV2的建议,第二个Ghost模块之后不使用ReLU。
    • 不同步长的结构差异:对于$stride = 1$的情况,结构如上述描述;对于$stride = 2$的情况,捷径路径通过一个下采样层实现,并且在两个Ghost模块之间插入一个步长为2的深度卷积层。在实际应用中,Ghost模块中的主要卷积采用逐点卷积以提高效率。

2.3.2 GhostNet整体结构

  • 基本构建块:以Ghost瓶颈作为基本构建块,由一系列Ghost瓶颈组成。第一层是一个具有16个滤波器的标准卷积层,然后是一系列通道逐渐增加的Ghost瓶颈。这些Ghost瓶颈根据输入特征图的大小分组为不同的阶段,除了每个阶段的最后一个Ghost瓶颈采用$stride = 2$外,其他均采用$stride = 1$。
  • 分类相关层:最后使用全局平均池化和一个卷积层将特征图转换为1280维的特征向量用于最终分类。在一些Ghost瓶颈的残差层中还应用了挤压和激励(SE)模块

2.4 优势

  • 计算成本降低:Ghost模块能够在生成相同数量特征图的情况下,减少所需的参数数量和计算复杂度。例如,在CIFAR - 10数据集上对VGG - 16和ResNet - 56进行实验时,替换为Ghost模块后的模型(Ghost - VGG - 16和Ghost - ResNet - 56)在保持较高准确率的同时,FLOPs显著降低。在ImageNet数据集上对ResNet - 50进行实验时,Ghost - ResNet - 50($s = 2$)在保持准确率的情况下,获得了约2倍的加速和压缩比。
  • 性能优越
    • 图像分类任务:在ImageNet分类任务中,与MobileNet系列、ShuffleNet系列、ProxylessNAS、FBNet、MnasNet等现代小网络架构相比,GhostNet在不同计算复杂度水平下均表现出更优的性能。例如,GhostNet在与MobileNetV3具有相似计算成本的情况下,能够获得更高的准确率(如GhostNet - 1.3x的top - 1准确率为75.7%,而MobileNetV3 Large 1.0x的top - 1准确率为75.2%),并且在实际推理速度上也具有优势,在相同延迟下,GhostNet的top - 1准确率比MobileNetV3高约0.5%。
    • 对象检测任务:在MS COCO数据集上进行对象检测实验时,将GhostNet作为骨干特征提取器替换到Faster R - CNN和RetinaNet框架中,在显著降低计算成本的情况下,GhostNet取得了与MobileNetV2和MobileNetV3相似的平均精度(mAP)。

论文:https://arxiv.org/pdf/1911.11907.pdf
源码:https://github.com/huawei-noah/Efficient-AI-Backbones

三、实现代码及RT-DETR修改步骤

模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址:

https://blog.csdn.net/qq_42591591/article/details/144212831

目录
相关文章
|
19小时前
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口的开发、应用与收益
小红书(RED)作为国内领先的生活方式分享平台,汇聚了大量用户生成内容(UGC),尤其是“种草”笔记。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可以构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文详细介绍API的开发流程、应用场景及潜在收益,并附上Python代码示例。
88 61
|
9天前
|
存储 Dart 安全
Dart 变量
Dart 中的变量声明与初始化支持类型推断和显式声明。`var` 用于类型推断,如 `var name = Bob`;也可显式指定类型,如 `String name = Bob`。Dart 强制执行空安全,防止空解引用错误,并引入可空类型(`String?`)和不可空类型(`String`)。未初始化的不可空变量必须在使用前赋值。`late` 修饰符用于延迟初始化,确保变量在首次使用时才被初始化。`final` 和 `const` 用于定义不可变变量,前者运行时确定,后者编译时确定。类型检查和转换通过 `is` 和 `as` 实现。
103 79
|
18天前
|
前端开发 UED 索引
React 图片灯箱组件 Image Lightbox
图片灯箱组件是一种常见的Web交互模式,用户点击缩略图后弹出全屏窗口展示大图,并提供导航功能。本文介绍了基于React框架的图片灯箱组件开发,涵盖初始化状态管理、图片加载与预加载、键盘和鼠标事件处理等常见问题及解决方案。通过`useState`和`useEffect`钩子管理状态,使用懒加载和预加载优化性能,确保流畅的用户体验。代码案例展示了组件的基本功能实现,包括打开/关闭灯箱、切换图片及键盘操作。
116 80
|
19小时前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
RT-DETR改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
75 63
RT-DETR改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
|
19小时前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息
74 62
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息
|
19小时前
|
机器学习/深度学习 计算机视觉 网络架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
74 63
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
|
18天前
|
数据挖掘 数据处理 索引
Pandas高级数据处理:多级索引
Pandas的多级索引(MultiIndex)允许在一个轴上拥有多个层次的索引,适用于分层数据处理。可通过列表或已有DataFrame创建多级索引,如按日期和股票代码索引金融数据。常见问题包括索引层级混乱、数据选择困难和聚合操作复杂,解决方法分别为检查参数顺序、使用`loc`和`xs`方法选择数据、用`groupby()`进行聚合。代码案例展示了创建、调整索引层级、选择特定数据及聚合操作。
125 83
|
18天前
|
存储 安全 区块链
区块链在房地产交易中的应用:革新房产市场的未来
区块链在房地产交易中的应用:革新房产市场的未来
144 80
|
19小时前
|
Linux
About the Systemd
It has been a long time that the linux use `init` to manage the startup process, such as `sudo /etc/init.d/apache2 start` or `service apache2 start`, but the `init` is serial. To address this issue, the `systemd` was born. The d is the abbreviation of `daemon`, which means the `systemd` is a daemon
74 62
|
6天前
|
大数据 BI 数据可视化
最新功能发布!AllData数据中台核心菜单汇总
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。

热门文章

最新文章