解锁移动视觉: 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 提出了两个关键问题:

  1. 堆叠真的是结合局部和全局信息的最佳方式吗?
  2. 我们能否同时提高效率和准确性,而不是顾此失彼?

答案在于一种新的架构: CARE (deCoupled duAl-interactive lineaR attEntion,解耦双重交互线性注意力) 。


2. 背景: 注意力的数学原理

在看新方法之前,让我们简要地可视化一下数学基础。

标准自注意力计算查询 (Queries, \(Q\)) 和键 (Keys, \(K\)) 之间的相似度,应用 Softmax 函数,然后乘以值 (Values, \(V\)) 。

公式 1: 标准自注意力公式。

求和公式中的指数函数是产生巨大计算负载的原因。

线性注意力移除了 Softmax 并使用核函数 \(\varphi(\cdot)\) (通常只是恒等函数) 将成本线性化。

公式 2: 线性注意力公式。

虽然公式 2 的计算速度要快得多,但缺乏显式的相似性度量 (Softmax) 正是导致前面提到的“高熵”问题的原因。

“堆叠”方法通常看起来像这样:

公式 3: 堆叠的局部偏置和线性注意力。

在这里,输入 \(\mathbf{X}\) 先被局部偏置模块处理,然后是线性注意力,再然后是另一个局部偏置模块。这是一个消耗大量资源的串行过程。


3. 核心创新: CARE 机制

CARE Transformer 的作者提出,我们不应该强迫所有特征通过同一个管道。相反,我们应该分而治之

该论文的核心建立在三大支柱之上:

  1. 非对称特征解耦 (Asymmetrical Feature Decoupling) : 拆分工作。
  2. 双重交互 (Dual Interaction) : 混合结果。
  3. 动态记忆单元 (Dynamic Memory Unit) : 记住过去。

让我们逐一分解。

A. 非对称特征解耦

CARE 机制不是采用串行堆叠,而是沿通道维度拆分输入特征。假设你的输入 \(\mathbf{X}\) 有 \(d\) 个通道 (例如 64 个通道) 。

模型将 \(\mathbf{X}\) 分为两部分:

  1. \(\bar{X}\) (全局分支) : 发送到线性注意力模块。
  2. \(\tilde{X}\) (局部分支) : 发送到卷积 (局部偏置) 模块。

关键在于,这种拆分是非对称的 。 作者分配较少的通道 (\(d_1\)) 给昂贵的线性注意力分支,分配较多的通道 (\(d_2\)) 给高效的卷积分支,使得 \(d_1 < d_2\)。

图 2. (a) 堆叠学习方法与 (b) 我们的非对称解耦学习方法之间的比较。

为什么这很巧妙? 看上面的图 2。

  • 左侧 (a): 堆叠方法强制完整的深度 (\(d\)) 通过两个操作。
  • 右侧 (b): 解耦方法在较小的数据子集上并行运行它们。

从数学上讲,线性注意力的复杂度大致与 \(d^2\) (通道维度的平方) 成正比。通过减少发送到注意力模块的通道数 (\(d_1\)) ,我们大幅降低了计算成本。

这种拆分的数学公式为:

公式 8: 拆分输入并分别处理。

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

公式 9: 显示基于 lambda 标量的减少量的复杂度计算。

这里,\(\lambda\) 代表源自拆分的缩放因子。因为关系是二次的,通道宽度的微小减少会导致 GMACs (全局乘累加运算) 的大幅减少。

通过设置 \(d_1 < d_2\) (非对称) ,作者证明了其复杂度低于 50/50 拆分 (\(d_1 = d_2\)) 的情况。

公式 11: 证明非对称拆分比对称拆分更高效。

B. 双重交互

拆分特征对于速度来说很棒,但如果“全局”部分从不与“局部”部分交流,模型将无法全面理解图像。

这就是双重交互模块发挥作用的地方。

图 3. CARE Transformer 的示意图。

参考上图中右侧的 图 3(c) 。 交互发生在两个阶段 (Inter1Inter2) 。

在处理完拆分的特征后,模型不仅仅是将它们拼接起来。它使用包含卷积的特定交互函数来混合信息。

公式 14: 通用交互函数。

交互模块:

  1. 拼接特征 (\(\mathbf{x} \oplus \mathbf{y}\)) 。
  2. 对其进行归一化。
  3. 使用 \(1 \times 1\) 卷积混合通道。
  4. 使用 \(3 \times 3\) 深度卷积混合空间信息。
  5. 使用另一个 \(1 \times 1\) 卷积投影回来。

这确保了线性注意力学到的“长程”信息能够调节和丰富卷积学到的“局部”细节,反之亦然。

C. 动态记忆单元

标准前馈网络的一个局限性是第 \(N\) 层只能看到第 \(N-1\) 层的输出。它没有从更早的层保存信息的持久“草稿本”。

CARE 引入了一个动态记忆单元 (\(Z\))

公式 13: 特征和记忆的更新规则。

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

对于一个阶段中的第一个块,通过结合上一阶段的信息来初始化记忆:

公式 12: 记忆初始化。

这创造了更丰富的信息流,有效地允许深层访问否则可能被稀释的上下文。


4. 实验结果

理论听起来很扎实: 通过拆分通道来降低复杂度,然后再混合回来。但这真的有效吗?

作者在 ImageNet-1K (分类) 、COCO (目标检测) 和 ADE20K (分割) 上测试了 CARE。

图像分类 (ImageNet-1K)

最引人注目的结果是延迟 (速度) 和准确率之间的权衡。

图 1. CARE Transformer 与近期典型的移动端友好模型在准确率、延迟和 GMACs 之间的平衡的可视化比较。

图 1中,寻找红色星星 (CARE) 。

  • X 轴是延迟 (越低越好,向左移动) 。
  • Y 轴是准确率 (越高越好,向上移动) 。

你可以看到 CARE 模型 (红星) 在左上角形成了一个“帕累托前沿”。在相同的速度下,它们始终比其他模型 (如 MobileViT、EdgeViT 和 MobileOne) 更准确,或者在相同的准确率下速度显著更快。

详细数据:

表 1. 我们的模型在 ImageNet-1K 上的性能。

让我们重点看表 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. 我们的模型在目标检测和分割上的性能。

表 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) 上的运行速度显著更快。

为什么它有效? (消融实验)

作者进行了“消融实验”——移除模型的某些部分,看看哪里会出问题。

非对称解耦是必要的吗? 是的。

表 3. 特征解耦策略的消融实验。 * (注: 参考论文文本中对应解耦的数据) *

  • “w/ Sym” (对称) : 如果你按 50/50 拆分通道,在相同准确率下模型会更慢 (2.0 GMACs vs 1.9) 。
  • “w/ Sta” (堆叠) : 如果你使用旧的堆叠方法,准确率下降到 81.4%,且延迟增加。
  • “w/o Local”: 如果你完全移除局部偏置,准确率暴跌至 77.3%。

双重交互是必要的吗?

表 4. 双重交互模块的消融实验。

  • 移除第二个交互块 (Inter2) 导致准确率从 78.4% 下降到 76.5%
  • 移除记忆单元 (Mem) 导致准确率显著下降,证明向前传递信息至关重要。

5. 结论与启示

CARE Transformer 代表了移动计算机视觉向前迈出的重要一步。通过识别出我们不需要平等对待每个特征通道,作者创建了一种完全符合移动硬件限制的“分而治之”策略。

关键要点:

  1. 分担负载: 你可以将一小部分数据发送到全局注意力机制,其余部分发送到局部卷积,而不会损失准确性。
  2. 交互是关键: 只有当你有一个强大的机制 (双重交互) 将信息混合回来时,拆分才有效。
  3. 记忆很重要: 保持动态记忆状态允许轻量级模型通过保留上下文来“以小博大”。

对于学生和从业者来说,这篇论文阐述了架构设计中的重要一课: 效率往往来自于专门化的处理。 与其向问题投入更多的算力,不如智能地路由信息——决定哪些需要全局上下文,哪些需要局部纹理分析——这样可以以一小部分的成本产生更好的结果。

有了像 CARE 这样的模型,在你的智能手机上运行高保真、实时的视觉理解 (且不在几分钟内耗尽电池) 正成为现实。