解锁移动视觉: CARE Transformer 如何平衡速度与精度
在计算机视觉飞速发展的世界中,视觉 Transformer (Vision Transformer,简称 ViT) 已成为一股革命性的力量。通过通过调整最初为自然语言处理 (NLP) 设计的自注意力机制,ViT 在图像分类、目标检测和分割方面取得了最先进的成果。
然而,这里有一个问题。让 Transformer 如此强大的机制——自注意力 (Self-Attention) ——在计算上非常昂贵。具体来说,它具有“二次复杂度”。随着图像分辨率的增加,计算成本会呈爆炸式增长。这使得标准的 Transformer 众所周知地难以部署在资源受限的设备 (如手机) 上,因为电池寿命和延迟在这些设备上至关重要。
研究人员一直在寻找一种“移动端友好”的 Transformer——一种既能保留 ViT 的全局理解能力,又能像轻量级卷积神经网络 (CNN) 一样快速运行的模型。
在这篇文章中,我们将深入探讨论文 “CARE Transformer: Mobile-Friendly Linear Visual Transformer via Decoupled Dual Interaction” 中提出的一个迷人的解决方案。我们将探索作者如何通过解耦特征学习,在效率和精度之间达到了新的最先进的平衡。
1. 瓶颈: 为什么移动视觉很难
要理解解决方案,我们必须先理解问题所在。
自注意力的代价
在传统的 Transformer 中,每个像素 (或 Token) 都会关注每一个其他的像素。如果你有一张包含 \(N\) 个 Token 的图像,模型会计算一个 \(N \times N\) 的注意力图。如果你将图像大小加倍,工作量将变为原来的四倍。这就是二次复杂度 (\(O(N^2)\)) 。
移动设备通常无法高效地处理这种负载。
线性注意力的兴起
为了解决这个问题,研究人员开发了线性注意力 (Linear Attention) 。 通过使用一种数学上的“核技巧 (kernel trick) ”,他们可以改变矩阵乘法的顺序,将复杂度从二次 (\(O(N^2)\)) 降低到线性 (\(O(N)\)) 。这对速度来说是一个巨大的胜利。
然而,线性注意力也有一个缺点: 高熵 (High Entropy) 。 由于它简化了 Token 之间的关系 (去除了使焦点更敏锐的重型 Softmax 函数) ,线性注意力往往难以区分重要的信息和无关的背景信息。它很容易“分心”。
旧方案: 堆叠 (Stacking)
以前的尝试 (如 MLLA) 试图通过在“线性注意力”层之上堆叠一个“局部偏置 (Local Bias) ”层 (像标准的卷积) 来解决这个问题。卷积处理局部细节 (边缘、纹理) ,而注意力处理全局上下文。
虽然这种方法有效,但它是僵化的。每一个特征通道都必须按顺序经过繁重的卷积和线性注意力机制。这这就造成了一个计算瓶颈。
CARE Transformer 提出了两个关键问题:
- 堆叠真的是结合局部和全局信息的最佳方式吗?
- 我们能否同时提高效率和准确性,而不是顾此失彼?
答案在于一种新的架构: CARE (deCoupled duAl-interactive lineaR attEntion,解耦双重交互线性注意力) 。
2. 背景: 注意力的数学原理
在看新方法之前,让我们简要地可视化一下数学基础。
标准自注意力计算查询 (Queries, \(Q\)) 和键 (Keys, \(K\)) 之间的相似度,应用 Softmax 函数,然后乘以值 (Values, \(V\)) 。

求和公式中的指数函数是产生巨大计算负载的原因。
线性注意力移除了 Softmax 并使用核函数 \(\varphi(\cdot)\) (通常只是恒等函数) 将成本线性化。

虽然公式 2 的计算速度要快得多,但缺乏显式的相似性度量 (Softmax) 正是导致前面提到的“高熵”问题的原因。
“堆叠”方法通常看起来像这样:

在这里,输入 \(\mathbf{X}\) 先被局部偏置模块处理,然后是线性注意力,再然后是另一个局部偏置模块。这是一个消耗大量资源的串行过程。
3. 核心创新: CARE 机制
CARE Transformer 的作者提出,我们不应该强迫所有特征通过同一个管道。相反,我们应该分而治之 。
该论文的核心建立在三大支柱之上:
- 非对称特征解耦 (Asymmetrical Feature Decoupling) : 拆分工作。
- 双重交互 (Dual Interaction) : 混合结果。
- 动态记忆单元 (Dynamic Memory Unit) : 记住过去。
让我们逐一分解。
A. 非对称特征解耦
CARE 机制不是采用串行堆叠,而是沿通道维度拆分输入特征。假设你的输入 \(\mathbf{X}\) 有 \(d\) 个通道 (例如 64 个通道) 。
模型将 \(\mathbf{X}\) 分为两部分:
- \(\bar{X}\) (全局分支) : 发送到线性注意力模块。
- \(\tilde{X}\) (局部分支) : 发送到卷积 (局部偏置) 模块。
关键在于,这种拆分是非对称的 。 作者分配较少的通道 (\(d_1\)) 给昂贵的线性注意力分支,分配较多的通道 (\(d_2\)) 给高效的卷积分支,使得 \(d_1 < d_2\)。

为什么这很巧妙? 看上面的图 2。
- 左侧 (a): 堆叠方法强制完整的深度 (\(d\)) 通过两个操作。
- 右侧 (b): 解耦方法在较小的数据子集上并行运行它们。
从数学上讲,线性注意力的复杂度大致与 \(d^2\) (通道维度的平方) 成正比。通过减少发送到注意力模块的通道数 (\(d_1\)) ,我们大幅降低了计算成本。
这种拆分的数学公式为:

复杂度降低是通过分析证明的。如果我们分析成本 \(\Omega\),我们会看到解耦减少了注意力机制中投影和乘法所需的繁重工作。

这里,\(\lambda\) 代表源自拆分的缩放因子。因为关系是二次的,通道宽度的微小减少会导致 GMACs (全局乘累加运算) 的大幅减少。
通过设置 \(d_1 < d_2\) (非对称) ,作者证明了其复杂度低于 50/50 拆分 (\(d_1 = d_2\)) 的情况。

B. 双重交互
拆分特征对于速度来说很棒,但如果“全局”部分从不与“局部”部分交流,模型将无法全面理解图像。
这就是双重交互模块发挥作用的地方。

参考上图中右侧的 图 3(c) 。 交互发生在两个阶段 (Inter1 和 Inter2) 。
在处理完拆分的特征后,模型不仅仅是将它们拼接起来。它使用包含卷积的特定交互函数来混合信息。

交互模块:
- 拼接特征 (\(\mathbf{x} \oplus \mathbf{y}\)) 。
- 对其进行归一化。
- 使用 \(1 \times 1\) 卷积混合通道。
- 使用 \(3 \times 3\) 深度卷积混合空间信息。
- 使用另一个 \(1 \times 1\) 卷积投影回来。
这确保了线性注意力学到的“长程”信息能够调节和丰富卷积学到的“局部”细节,反之亦然。
C. 动态记忆单元
标准前馈网络的一个局限性是第 \(N\) 层只能看到第 \(N-1\) 层的输出。它没有从更早的层保存信息的持久“草稿本”。
CARE 引入了一个动态记忆单元 (\(Z\)) 。

如公式 12 (和图 3b) 所示,块的输出不仅仅是特征 \(\mathbf{X}\);它还更新一个记忆状态 \(\mathbf{Z}\)。这个记忆单元沿着网络管道传递。它允许模型跨不同层动态保留关键信息。
对于一个阶段中的第一个块,通过结合上一阶段的信息来初始化记忆:

这创造了更丰富的信息流,有效地允许深层访问否则可能被稀释的上下文。
4. 实验结果
理论听起来很扎实: 通过拆分通道来降低复杂度,然后再混合回来。但这真的有效吗?
作者在 ImageNet-1K (分类) 、COCO (目标检测) 和 ADE20K (分割) 上测试了 CARE。
图像分类 (ImageNet-1K)
最引人注目的结果是延迟 (速度) 和准确率之间的权衡。

在图 1中,寻找红色星星 (CARE) 。
- X 轴是延迟 (越低越好,向左移动) 。
- Y 轴是准确率 (越高越好,向上移动) 。
你可以看到 CARE 模型 (红星) 在左上角形成了一个“帕累托前沿”。在相同的速度下,它们始终比其他模型 (如 MobileViT、EdgeViT 和 MobileOne) 更准确,或者在相同的准确率下速度显著更快。
详细数据:

让我们重点看表 1中的一个比较:
- CARE-S2 仅用 1.9 GMACs 就达到了 82.1% 的 Top-1 准确率。
- 将其与 MLLA-T (以前的线性注意力模型) 相比。MLLA-T 达到 83.5% 的准确率,但需要 4.2 GMACs——是计算成本的两倍多。
- 将其与 EdgeViT-S 相比,后者使用 1.9 GMACs (成本相同) 。EdgeViT 仅达到 81.0% 的准确率。CARE 击败了它超过 1%。
在 iPhone 13 上,CARE-S2 运行时间为 2.0ms , 而 MLLA-T 需要 5.1ms 。 对于实时移动应用来说,这是一个巨大的差异。
目标检测与语义分割
一个好的骨干网络不仅要做图像分类;它还需要支持像寻找对象这样的密集预测任务。

在表 2中,我们看到了类似的趋势:
- 目标检测: CARE-S1 仅用 5.4 GMACs 就达到了 41.5 的边界框 AP (平均精度) 。它不仅媲美 Swin-T (42.2 AP) 的性能,而且 Swin-T 是一个需要 24.2 GMACs 的重量级模型。CARE 的效率几乎高出 5 倍。
- 语义分割 (ADE20K): CARE-S2 达到了 43.5 mIoU (平均交并比) ,这与大得多的模型相比非常有竞争力,同时在 GPU (RTX 4090) 上的运行速度显著更快。
为什么它有效? (消融实验)
作者进行了“消融实验”——移除模型的某些部分,看看哪里会出问题。
非对称解耦是必要的吗? 是的。
* (注: 参考论文文本中对应解耦的数据) *
- “w/ Sym” (对称) : 如果你按 50/50 拆分通道,在相同准确率下模型会更慢 (2.0 GMACs vs 1.9) 。
- “w/ Sta” (堆叠) : 如果你使用旧的堆叠方法,准确率下降到 81.4%,且延迟增加。
- “w/o Local”: 如果你完全移除局部偏置,准确率暴跌至 77.3%。
双重交互是必要的吗?

- 移除第二个交互块 (
Inter2) 导致准确率从 78.4% 下降到 76.5% 。 - 移除记忆单元 (
Mem) 导致准确率显著下降,证明向前传递信息至关重要。
5. 结论与启示
CARE Transformer 代表了移动计算机视觉向前迈出的重要一步。通过识别出我们不需要平等对待每个特征通道,作者创建了一种完全符合移动硬件限制的“分而治之”策略。
关键要点:
- 分担负载: 你可以将一小部分数据发送到全局注意力机制,其余部分发送到局部卷积,而不会损失准确性。
- 交互是关键: 只有当你有一个强大的机制 (双重交互) 将信息混合回来时,拆分才有效。
- 记忆很重要: 保持动态记忆状态允许轻量级模型通过保留上下文来“以小博大”。
对于学生和从业者来说,这篇论文阐述了架构设计中的重要一课: 效率往往来自于专门化的处理。 与其向问题投入更多的算力,不如智能地路由信息——决定哪些需要全局上下文,哪些需要局部纹理分析——这样可以以一小部分的成本产生更好的结果。
有了像 CARE 这样的模型,在你的智能手机上运行高保真、实时的视觉理解 (且不在几分钟内耗尽电池) 正成为现实。
](https://deep-paper.org/en/paper/2411.16170/images/cover.png)