目录
[六、MobileViT Block结构](#六、MobileViT Block结构)
[七、MobileViT Block工作流程](#七、MobileViT Block工作流程)
[十一、MobileViT V2改进](#十一、MobileViT V2改进)
一、前言
近年来,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 强大的特征表达能力,成为移动端和边缘计算场景中极具价值的视觉网络结构,也是学习现代轻量化视觉模型必须掌握的重要内容。