爱人民币(iRMB)就不会 EMO 了?CNN和ViT的倒残差设计

作者 | 派派星  编辑 | CVHub

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【全栈算法】技术交流群

本文只做学术分享,如有侵权,联系删文

51b38fc7c8875e564d7b0f3b590a57e9.png

Title:Rethinking Mobile Block for Efficient Attention-based Models
Paper:https://arxiv.org/abs/2301.01146
Code :https://github.com/zhangzjn/EMO

1. 导读

本文致力于轻量级的高效模型结构设计研究,同时考虑模型参数量#Params)、计算量FLOPs)和精度Accuracy)之间的权衡。基于 CNNs 的模型有 IRB, Inverted Residual Block,倒残差模块)[1]作为基础结构,而基于注意力机制的研究尚缺乏类似基础结构。

基于此,本文重新思考了MobileNetv2[1]中的IRB以及Transformer[2]中的MHSA, Multi-Head Self-Attention,多头自注意力)和FFN, Feed-Forward Network,前向模型),从统一角度抽象了只包含single skipMeta Mobile Block, MMB。遵循简单有效的设计原则,作者进一步实例化了一个面向移动端应用的iRMB基础模块(Inverted Residual Mobile Block,倒残差移动模块),其同时具备CNN的静态短程建模能力和Transformer的动态长程特征交互能力,并进一步设计了仅由iRMB构成的EMO, Efficient MOdel轻量化主干模型。

884e5e988aa536619f4024145f25260b.png

广泛的实验证明了提出方法的有效性,比如:

  • 1M/2M/5M 尺度下的 EMO 模型在 ImageNet-1K 的分类数据集上分别获得了 71.5/75.1/78.4 Top-1精度,超过了当前 SoTA 基于 CNN/Transformer 的轻量化模型;

  • 基于 SSDLite 框架仅使用 0.6G/0.9G/1.8G FLOPs 获得了 22.0/25.2/27.9 mAP

  • 基于 DeepLabv3框架仅使用 2.4G/3.5G/5.8G FLOPs 获得了 33.5/35.3/37.8 mIoU,取了较好的 mobile 条件下的效果。

2.方法及贡献

动机

基于Depth-Wise Convolution的IRB成为轻量化卷积模型的基础构成模块,相关的高效模型(如MobileNetv2[1]、EfficientNe[3]、ShuffleNet[4]等)具有很高的移动端速度,但受限于静态CNN归纳偏置影响,这些模型的效果(尤其是下游检测、分割等任务)仍有待进一步提高。另一方面,得益于Transformer的动态建模能力,基于ViT[5](Vison Transformer)的许多工作(如DeiT[6]、PVT[7]、SwinTransformer[8]等)较CNN模型取得了明显的效果提升。然而,受限于MHSA(Multi-Head Self-Attention)的二次方计算量需求,Transformer很少应用于移动端场景。

因此一些研究人员尝试设计融合上述两者的混合模型,但一般会引入复杂的结构[9,10,11]或多个混合模块[10,12],这对于应用改进和优化是非常不友好的,这促使我们思考能否结合CNN/Transformer结构的优点来构建类似IRB的轻量级基础模块。基于此,本文首先抽象了MMB(Meta Mobile Block)用来对IRB和Transformer中的MHSA/FFN进行归纳,其次实例化了高效的iRMB(Inverted Residual Mobile Block),最后仅使用该模块构建了高效的EMO(Efficient MOdel)轻量化主干模型。

36c3b61a464a60ff2a4f2fb05895cd6a.png

元移动模块

如上图左侧所示,通过对 MobileNetv2 中的 IRB 以及 Transformer 中的核心 MHSA 和 FFN 模块进行抽象,作者提出了统一的 MMB 对上述几个结构进行归纳表示,即采用扩张率  和高效算子  来实例化不同的模块。

倒残差移动模块

不同模型的效果主要来源于高效算子  的具体形式,考虑到轻量化和易用性,作者将 MMB 中的  建模为Expanded Window MHSA(EW-MHSA)和Depth-Wise Convolution(DW-Conv)的级联,兼顾动态全局建模和静态局部信息融合的优势,同时能够有效地增加模型的感受野,提升对于下游任务的能力。

b9e82b33f652c0ab7c9c0003b9ad9553.png

进一步,作者将  设置为 4 并替换 DeiT 和 PVT 中标准 Transformer 结构以评估 iRMB 性能,如下述表格所述,可以发现iRMB可以在相同的训练设置下以更少的参数和计算获得更高的性能。

ae0abd03f3f39932b22212e1d5986f81.png

轻量化高效模型

为了更好的衡量移动端轻量化模型的性能,作者定义了以下4个评判标准:

  1. 可用性:不使用复杂算子的简单实现,易于针对应用侧进行优化。

  2. 简约性:使用尽可能少的核心模块以降低模型复杂度。

  3. 有效性:良好的分类和下游任务性能。

  4. 高效性:参数、计算量、精度之间得到很好的权衡。

下面的表格总结了本文方法与其它几个主流的轻量化模型之间的区别:

89c455f7f2bd936aa0d70369bd41763c.png

基于上述标准,我们设计了高效的EMO模型:

  1. 宏观框架层面,EMO仅由iRMB组成而没有多样化的模块,这与当前轻量化模型的设计理念有所不同,可称得上大道至简。

  2. 微观模块层面,iRMB仅由卷积和多头自注意力机制组成而没有其他复杂的结构。此外,得益DW-Conv,iRMB可以通过步幅适应下采样操作,并且不需要任何位置嵌入来为MHSA引入归纳偏置。

  3. 模型变体层面,作者采用简单的扩张率和通道数逐stage递增的简单方式,详细配置如下表所示:

bd92618e9c01af6c191a36bf8be5b067.png
  1. 训练策略层面,EMO并没有使用Strong Data Augmentation和Tricks,这也充分体现了其模块设计的有效性。

fa94ba74b090cd1cef684ab616fda3ef.png

3. 实验

ImageNet-1K 分类

7b6d2eff4e091fcef699e586dae4f6fb.png

目标检测

5967c06f5f41ee5a1b0ad773abe4effe.png

语义分割

90a86a8785a3023508b231e962967fb2.png

定性结果

8dc444653ade4b32b7d94d22a81e4d96.png

此外,作者做了大量的定性/定量实验以说明提出方法的有效性,可移步原文进一步了解。

总结

从技术上看,本文工作重新思考了 ViT 和 CNN 的轻量级的一些较为关键的设计,类似于先前的 Meta-Former,由于有 mobile 场景的限制,本文提出了一个简单有效的模块,即倒残差移动模块,并在不使用很强的数据增强情况下,在 mobile 的 setting 下多个数据集上取得了领先结果,整体属于简单有效,代码和模型已经开源,欢迎大家使用!

参考文献

[1] Sandler, Mark, et al. "Mobilenetv2: Inverted residuals and linear bottlenecks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[2] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).
[3] Tan, Mingxing, and Quoc Le. "Efficientnet: Rethinking model scaling for convolutional neural networks." International conference on machine learning. PMLR, 2019.
[4] Zhang, Xiangyu, et al. "Shufflenet: An extremely efficient convolutional neural network for mobile devices." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018. 2018.
[5] Dosovitskiy, Alexey, et al. "An image is worth 16x16 words: Transformers for image recognition at scale." arXiv preprint arXiv:2010.11929 (2020).
[6] Touvron, Hugo, et al. "Training data-efficient image transformers & distillation through attention." International conference on machine learning. PMLR, 2021. [7] Wang, Wenhai, et al. "Pyramid vision transformer: A versatile backbone for dense prediction without convolutions." Proceedings of the IEEE/CVF international conference on computer vision. 2021.
[8] Liu, Ze, et al. "Swin transformer: Hierarchical vision transformer using shifted windows." Proceedings of the IEEE/CVF international conference on computer vision. 2021.
[9] Chen, Yinpeng, et al. "Mobile-former: Bridging mobilenet and transformer." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.
[10] Maaz, Muhammad, et al. "Edgenext: efficiently amalgamated cnn-transformer architecture for mobile vision applications." European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022.
[11] Mehta, Sachin, and Mohammad Rastegari. "Mobilevit: light-weight, general-purpose, and mobile-friendly vision transformer." ICLR. 2022.
[12] Pan, Junting, et al. "Edgevits: Competing light-weight cnns on mobile devices with vision transformers." European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022.

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

e6979fb178a444e3a06ee9cdc1bddcda.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

e479416b1a59a183708293639177ad01.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

9785d2d8b0249967810cb767f96d767a.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

d53253505b55444a118bfb666d5b63b4.jpeg

<think>好的,我现在需要帮助用户理解倒置残差块(Inverted Residual Block)在深度学习中的应用及实现。首先,我得回顾一下相关的知识,确保自己理解正确。倒置残差块是MobileNetV2中提出的结构,与传统的残差块有所不同。传统的残差块通常是先减少通道数再恢复,而倒置残差块则是先扩展通道数再进行深度可分离卷积,最后压缩回去。这种设计主要是为了在保持模型轻量的同时提高特征表达能力。 接下来,我需要确认用户的需求。用户可能对MobileNetV2或者轻量化模型感兴趣,或者正在尝试改进YOLO等目标检测模型,如引用[5]提到的YOLOv8改进。用户提供的引用中提到了iRMB(倒置残差移动块)它的应用,包括注意力机制去除图像噪声。因此,用户可能希望了解倒置残差块的基本概念,以及如何在实践中实现它,特别是在目标检测中的集成。 我需要分步骤回答:首先解释倒置残差块的结构,包括扩展层、深度卷积压缩层。然后说明它的应用场景,比如在移动端模型中的优势,以及如何与其他技术结合,如注意力机制。接着,引用中的信息提到iRMB在YOLOv8中的应用,这可能涉及到网络结构调整模块设计,如引用[2][5]所述。这里需要将倒置残差块与YOLO的架构结合起来,说明如何替换原有模块或者添加新模块。 实现部分,用户可能需要代码示例。根据引用[3],扩展层的实现涉及逐点卷积调整通道数,深度可分离卷积减少计算量。PyTorch中的实现可以参考这些步骤。需要注意的是,倒置残差块中的跳跃连接只在特定条件下使用,比如当步长为1且输入输出通道数相同时,这有助于信息流动防止梯度消失。 在引用中提到的iRMB还结合了注意力机制,如引用[4][5],这可能是在倒置残差块的基础上加入了注意力模块,比如SE模块或CBAM,以进一步提升性能。这部分需要简要说明如何将注意力机制集成到倒置残差块中,例如在深度卷积之后添加通道注意力。 最后,用户可能需要了解倒置残差块的优势,比如参数量少、计算效率高,适合移动端部署,以及如何在实际项目中应用,如引用[2]中的案例。同时,引用[1][3]提供了MobileNetV2的细节,可以结合这些内容详细说明设计动机。 总结下来,回答的结构应该是:概念解析、结构分析、应用场景、实现步骤(代码示例)、优势分析,以及相关引用。需要确保使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$,并正确引用提供的参考文献。</think>### 倒置残差块(Inverted Residual Block)的应用及实现 #### 1. **概念解析** 倒置残差块(Inverted Residual Block)是MobileNetV2[^1]中提出的核心模块,其设计目标是**在轻量化模型中高效提取特征**。与传统残差块(如ResNet中的残差块)不同,倒置残差块通过**“扩展-深度卷积-压缩”**的三步结构优化计算效率: - **传统残差块**:先压缩通道数(减少计算量),再进行卷积操作。 - **倒置残差块**:先扩展通道数(增加特征表达能力),再通过深度可分离卷积(Depthwise Separable Convolution)减少计算量,最后压缩通道数。 #### 2. **结构分析** 倒置残差块的具体流程如下: 1. **扩展层(Expansion Layer)** 使用$1 \times 1$逐点卷积将输入通道数扩展$t$倍(扩展因子$t > 1$),公式为: $$C_{\text{out}} = t \cdot C_{\text{in}}$$ 这一步骤增加了特征维度,为后续深度卷积提供更丰富的表示空间[^3]。 2. **深度可分离卷积(Depthwise Convolution)** 使用$3 \times 3$深度卷积(每个通道单独卷积)提取空间特征,显著减少参数量。计算复杂度为: $$O(k^2 \cdot C_{\text{expanded}} \cdot H \cdot W)$$ 其中$k$为卷积核大小,$C_{\text{expanded}}$为扩展后的通道数。 3. **压缩层(Projection Layer)** 再次使用$1 \times 1$逐点卷积将通道数压缩回原始维度,同时引入线性激活函数(而非ReLU),避免低维空间的信息丢失。 4. **跳跃连接(Shortcut Connection)** 仅在**输入输出维度相同且步长为1**时添加跳跃连接,以保留原始信息[^1]。 #### 3. **应用场景** - **轻量化模型**:MobileNet系列、EfficientNet等移动端模型的核心模块。 - **目标检测与分割**:如YOLOv8通过集成倒置残差块(iRMB)提升模型效率并去除图像噪声[^5]。 - **注意力机制结合**:iRMB与轻量化注意力机制结合,增强特征选择能力[^4]。 #### 4. **实现方式(PyTorch示例)** ```python import torch import torch.nn as nn class InvertedResidual(nn.Module): def __init__(self, in_channels, out_channels, expansion_factor=6, stride=1): super().__init__() hidden_dim = in_channels * expansion_factor self.use_residual = (stride == 1) and (in_channels == out_channels) layers = [] # 扩展层(当expansion_factor > 1时) if expansion_factor != 1: layers.extend([ nn.Conv2d(in_channels, hidden_dim, 1, bias=False), nn.BatchNorm2d(hidden_dim), nn.ReLU6(inplace=True) ]) # 深度可分离卷积 layers.extend([ nn.Conv2d(hidden_dim, hidden_dim, 3, stride, 1, groups=hidden_dim, bias=False), nn.BatchNorm2d(hidden_dim), nn.ReLU6(inplace=True), # 压缩层 nn.Conv2d(hidden_dim, out_channels, 1, bias=False), nn.BatchNorm2d(out_channels) ]) self.block = nn.Sequential(*layers) def forward(self, x): if self.use_residual: return x + self.block(x) else: return self.block(x) ``` **代码说明**: - `expansion_factor`控制通道扩展倍数(默认6倍)。 - `groups=hidden_dim`实现深度可分离卷积[^3]。 - 跳跃连接仅在输入输出维度匹配且步长为1时生效。 #### 5. **优势分析** - **计算效率**:深度可分离卷积减少约$k^2$倍计算量($k$为卷积核大小)。 - **特征表达能力**:扩展层提供高维特征空间,压缩层避免信息丢失。 - **轻量化**:参数量远小于传统残差块,适合移动端部署[^4]。 #### 6. **改进与扩展** - **结合注意力机制**:在深度卷积后添加通道注意力(如SE模块),形成iRMB块。 - **动态扩展因子**:根据输入特征自适应调整扩展倍数[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值