掌握 MobileViT 等高效率模型结构——CNN 与 Transformer 融合时代的轻量化视觉网络

目录

一、前言

二、为什么需要高效率视觉模型

(一)现实部署环境受限

(二)传统ViT存在的问题

(三)移动端需求

三、MobileViT提出背景

(一)论文介绍

(二)核心目标

(三)设计理念

四、MobileViT整体架构

五、MobileViT核心思想

(一)CNN负责局部特征

(二)Transformer负责全局特征

(三)两者结合

[六、MobileViT Block结构](#六、MobileViT Block结构)

[七、MobileViT Block工作流程](#七、MobileViT Block工作流程)

(一)局部特征提取

(二)通道映射

(三)Patch展开

(四)Transformer编码

(五)恢复空间结构

(六)卷积融合

八、MobileViT中的Transformer结构

九、为什么MobileViT速度快

(一)Attention范围缩小

(二)大量使用卷积

(三)参数量更小

十、MobileViT模型家族

(一)MobileViT-XXS

(二)MobileViT-XS

(三)MobileViT-S

[十一、MobileViT V2改进](#十一、MobileViT V2改进)

(一)问题分析

(二)改进方案

(三)优势

十二、其他高效率Transformer模型

(一)TinyViT

(二)EfficientFormer

(三)EdgeViT

(四)LeViT

十三、MobileViT与MobileNet对比

(一)MobileNet

(二)MobileViT

十四、PyTorch实现MobileViT核心思想

十五、MobileViT应用场景

(一)手机视觉系统

(二)自动驾驶

(三)无人机视觉

(四)工业边缘设备

(五)智能摄像头

十六、MobileViT对视觉发展的意义

十七、总结


一、前言

近年来,Transformer 在计算机视觉领域取得了巨大成功。

从:

  • ViT

  • DeiT

  • Swin Transformer

  • BEiT

  • DINO

到如今的各种视觉大模型。

Transformer 几乎成为视觉领域的主流架构。

然而,一个现实问题逐渐显现出来:

复制代码
Transformer性能很强

但计算开销巨大

例如:

ViT-B/16 模型拥有:

复制代码
8600万+

参数。

在服务器环境中运行问题不大。

但是:

对于:

  • 手机

  • 平板

  • 嵌入式设备

  • 边缘计算设备

  • 自动驾驶终端

而言。

计算成本过高。

因此研究人员开始思考:

复制代码
能否让Transformer变得轻量化?

与此同时:

CNN虽然轻量高效。

但全局建模能力不如Transformer。

于是:

一种新的设计思想诞生:

复制代码
CNN

+

Transformer

优势融合。

其中最具代表性的模型之一就是:

复制代码
MobileViT

它被誉为:

手机上的 Vision Transformer。

本文将系统讲解 MobileViT 的设计思想、模型结构、核心模块以及其在高效率视觉网络中的重要意义。


二、为什么需要高效率视觉模型

(一)现实部署环境受限

在学术界:

研究人员关注:

复制代码
准确率

但在工业界:

更加关注:

复制代码
速度

内存

功耗

例如:

手机实时识别:

复制代码
人脸检测

要求:

复制代码
30FPS以上

实时运行。


(二)传统ViT存在的问题

ViT采用:

复制代码
Self-Attention

复杂度:

复制代码
O(N²)

随着Patch数量增加:

计算量急剧增长。


例如:

复制代码
224×224

图片:

复制代码
196个Patch

若提高分辨率:

复制代码
384×384

Attention开销将大幅增加。


(三)移动端需求

移动设备要求:

复制代码
模型小

速度快

精度高

因此:

催生了大量轻量化模型:

  • MobileNet系列

  • ShuffleNet系列

  • EfficientNet系列

  • GhostNet系列

  • MobileViT系列


三、MobileViT提出背景

(一)论文介绍

2021年。

Apple提出:

复制代码
MobileViT

论文名称:

复制代码
MobileViT:
Light-weight,
General-purpose,
and Mobile-friendly Vision Transformer

(二)核心目标

希望实现:

复制代码
CNN的效率

+

Transformer的全局建模能力

(三)设计理念

论文提出一句经典的话:

复制代码
Transformers as Convolutions

即:

复制代码
把Transformer当卷积使用

这是MobileViT最核心思想。


四、MobileViT整体架构

整体结构:

复制代码
Input

↓

Conv Layer

↓

MobileNet Block

↓

MobileViT Block

↓

MobileNet Block

↓

MobileViT Block

↓

Global Pooling

↓

FC

↓

Output

可以看到:

MobileViT并没有完全抛弃CNN。

而是:

复制代码
CNN

+

Transformer

交替组合

五、MobileViT核心思想

(一)CNN负责局部特征

卷积擅长:

复制代码
边缘

纹理

局部结构

提取。


例如:

复制代码
眼睛

鼻子

嘴巴

等细节。


(二)Transformer负责全局特征

Attention擅长:

复制代码
远距离关系

建模。


例如:

复制代码
头部

身体

四肢

之间关系。


(三)两者结合

形成:

复制代码
局部感知

+

全局建模

能力。


六、MobileViT Block结构

MobileViT最核心模块:

复制代码
MobileViT Block

结构如下:

复制代码
Input

↓

3×3 Conv

↓

1×1 Conv

↓

Transformer

↓

1×1 Conv

↓

3×3 Conv

↓

Output

其本质:

先利用CNN提取局部特征。

再利用Transformer提取全局特征。

最后融合输出。


七、MobileViT Block工作流程

(一)局部特征提取

首先:

复制代码
3×3 Conv

提取局部信息。

得到:

复制代码
Feature Map

(二)通道映射

通过:

复制代码
1×1 Conv

调整维度。

方便进入Transformer。


(三)Patch展开

例如:

特征图:

复制代码
32×32×64

切分为多个Patch。

形成:

复制代码
Token序列

(四)Transformer编码

经过:

复制代码
Multi-Head Attention

学习全局信息。


(五)恢复空间结构

将Token重新还原:

复制代码
Feature Map

形式。


(六)卷积融合

最终:

利用卷积进行局部增强。

输出结果。


八、MobileViT中的Transformer结构

MobileViT内部Transformer采用标准Encoder结构。

流程:

复制代码
Input

↓

LayerNorm

↓

Multi-Head Attention

↓

Residual

↓

MLP

↓

Residual

↓

Output

与ViT相比:

Transformer层数更少。

因此:

复制代码
计算量更低

九、为什么MobileViT速度快

(一)Attention范围缩小

ViT:

对整张图执行Attention。


MobileViT:

仅在局部特征上执行Attention。


计算量显著下降。


(二)大量使用卷积

卷积在移动端:

优化成熟。

执行效率极高。


(三)参数量更小

例如:

MobileViT-XXS:

参数量:

复制代码
约1.3M

相比:

ViT-B:

复制代码
86M+

小几十倍。


十、MobileViT模型家族

Apple发布多个版本。


(一)MobileViT-XXS

超轻量版本。

参数量:

复制代码
约1.3M

适合:

移动设备。


(二)MobileViT-XS

参数量:

复制代码
约2.3M

性能进一步提升。


(三)MobileViT-S

参数量:

复制代码
约5.6M

精度接近大型模型。


十一、MobileViT V2改进

随后Apple推出:

复制代码
MobileViT V2

(一)问题分析

原始Attention:

复制代码
O(N²)

复杂度。


(二)改进方案

采用:

复制代码
Separable Self-Attention

机制。


复杂度降低。

运行速度进一步提升。


(三)优势

相比V1:

复制代码
更快

更省电

更省显存

十二、其他高效率Transformer模型

除了MobileViT。

还有很多轻量级视觉Transformer。


(一)TinyViT

微软提出。

用于:

复制代码
SAM模型

轻量骨干网络。


特点:

复制代码
高性能

低延迟

(二)EfficientFormer

微软提出。

融合:

复制代码
CNN

Transformer

思想。


移动端表现优秀。


(三)EdgeViT

专为边缘设备设计。


特点:

复制代码
低功耗

高速度

(四)LeViT

Facebook提出。


特点:

复制代码
更适合推理部署

十三、MobileViT与MobileNet对比

(一)MobileNet

核心:

复制代码
Depthwise Conv

优点:

复制代码
速度极快

缺点:

复制代码
全局建模不足

(二)MobileViT

核心:

复制代码
CNN

+

Transformer

优点:

复制代码
兼顾局部和全局

精度更高。


十四、PyTorch实现MobileViT核心思想

简化版MobileViT Block:

复制代码
import torch
import torch.nn as nn

class MobileViTBlock(nn.Module):

    def __init__(self, dim):

        super().__init__()

        self.conv = nn.Conv2d(
            dim,
            dim,
            3,
            padding=1
        )

        self.attn = nn.MultiheadAttention(
            embed_dim=dim,
            num_heads=4,
            batch_first=True
        )

    def forward(self,x):

        x = self.conv(x)

        b,c,h,w = x.shape

        tokens = x.flatten(2).transpose(1,2)

        tokens,_ = self.attn(
            tokens,
            tokens,
            tokens
        )

        x = tokens.transpose(
            1,2
        ).reshape(
            b,c,h,w
        )

        return x

该代码体现了:

复制代码
卷积

+

Attention

融合思想。


十五、MobileViT应用场景

目前广泛应用于:

(一)手机视觉系统

例如:

  • 人脸识别

  • 图像分类


(二)自动驾驶

例如:

实时目标检测。


(三)无人机视觉

要求:

复制代码
低功耗

高性能

(四)工业边缘设备

例如:

缺陷检测。


(五)智能摄像头

实时视频分析。


十六、MobileViT对视觉发展的意义

MobileViT最大的贡献:

不是提出更大的模型。

而是证明:

复制代码
Transformer

也可以轻量化

它成功打破了:

复制代码
Transformer

=

高算力

的固有印象。

推动视觉Transformer进入:

  • 手机端

  • IoT设备

  • 嵌入式设备

  • 自动驾驶终端

等场景。


十七、总结

MobileViT 是轻量化视觉Transformer领域最具代表性的模型之一,它成功融合了 CNN 的高效率和 Transformer 的全局建模能力。

本文重点掌握了:

1、为什么需要高效率视觉模型;

2、MobileViT提出背景;

3、MobileViT整体结构;

4、MobileViT Block原理;

5、Transformer与卷积融合思想;

6、MobileViT模型家族;

7、MobileViT V2改进;

8、其他轻量级Transformer模型;

9、MobileViT与MobileNet区别;

10、实际应用场景。

可以将 MobileViT 理解为:

"一个将卷积网络的局部感知能力与Transformer的全局建模能力结合起来的轻量化视觉模型。"

它不仅继承了 MobileNet 的高效率优势,还获得了 Transformer 强大的特征表达能力,成为移动端和边缘计算场景中极具价值的视觉网络结构,也是学习现代轻量化视觉模型必须掌握的重要内容。