Token导航 LogoToken导航

AI 资讯 · 科技行者

GTR线性注意力视觉骨干实现边缘设备实时感知

更新 2026-10-29科技行者正文 6813字阅读约 22分钟

2023年,EfficientViT用线性注意力做高效语义分割,速度是快了,但谁也没真正验证过,这套思路能不能扛起一个通用的视觉骨干网络,同时在检测、分割、姿态估计、深度估计这些完全不同的任务上都打得过主流的Transformer方案。

这不是一个无关紧要的小问题。

你可能没意识到,现在几乎所有效果好的视觉模型,骨子里都在用一种叫自注意力(Self-Attention)的机制。

自注意力:让模型在处理图像的每一个小块(patch)时,都去看一遍图里所有其他小块,计算彼此之间的关联强度,再根据这些关联来决定该重点关注哪里。

这套机制效果确实好,DETR、RF-DETR这些检测模型都靠它撑起了精度。但它有个绕不开的物理限制:计算量跟图像里的patch数量的平方成正比。图像分辨率翻一倍,patch数量变成4倍,计算量直接变成16倍。放在手机、车载芯片这些算力有限的设备上,这就是一道硬墙。

这篇论文要解决的,就是这堵墙。来自滴滴国际、Intellindust AI Lab等机构的研究者们提出了一个叫GTR(Gated Token Recurrence,门控token递归)的新骨干网络,用一种完全不做平方级计算的方式,试图在检测精度和推理速度上同时打赢现有的主流方案。

线性注意力到底在省什么

要理解GTR的设计,得先搞清楚传统自注意力到底在干什么苦活。

每个patch要和图里所有其他patch两两比对、算相似度,这个"两两比对"的操作量就是平方级的。打个比方,一个班级40个学生,如果每个人要和全班其他人单独握一次手自我介绍,那就是接近800次握手。如果班级扩大到80人,握手次数会暴涨到3千多次,翻了4倍还不止。图像分辨率翻倍,道理完全一样。

线性注意力换了一种玩法。它不再让每个patch都去和所有patch握手,而是维护一个不断更新的"记忆摘要",每个patch进来时只和这个摘要做一次交互,摘要再被更新传给下一个patch。这样一来,计算量就从"人数的平方"变成了"人数乘以一个固定值",彻底摆脱了平方增长的宿命。

GTR用的具体实现是门控线性注意力(GLA,Gated Linear Attention)的一个变体。

门控线性注意力(GLA):一种线性复杂度的注意力机制,用一个可学习的"遗忘门"来控制历史信息在递归状态里保留多少、丢弃多少,而不是像传统注意力那样无差别地回看所有历史patch。

这个遗忘门很关键。如果没有它,模型要么把所有历史信息都无限期保留(内存爆炸,而且旧信息会干扰新判断),要么完全不保留(等于没有记忆)。门控机制相当于给记忆设了一个可调节的保鲜期,模型自己学习哪些信息该长期记住,哪些该尽快遗忘。

GTR进一步简化,只在"键"(key)这一侧做衰减,"值"(value)这一侧的衰减固定为1,不参与训练。这个简化看似是减法,但论文的消融实验显示,它并没有牺牲精度,反而让计算更稳定高效。

单向扫描的致命缺陷,以及GTR怎么补

线性递归有个天生的毛病:它是有方向性的。

一个patch只能"看到"扫描顺序里排在它前面的patch,排在后面的它完全不知道。这就好比你在读一本书,读到第50页时,你只记得前面49页讲了什么,根本不知道第51页会发生什么转折。如果故事的关键伏笔恰好埋在第80页,你读到第50页时是完全接收不到这个信息的。

图像是二维的,不存在天然的"阅读顺序"。一张照片里,左边的物体和右边的物体往往同样重要,但如果只从左往右扫一遍,右边的信息就永远传不到左边的patch那里去。

GTR的解法是让扫描方向在网络深度上轮换。12个block里,每个block只做一个方向的扫描:从左到右、从右到左、从上到下、从下到上,依次循环。这样一来,虽然单个block是"瞎子摸象",但堆叠12层之后,每个patch都间接接触过来自四个方向的信息流。

消融实验里有一组数据很有说服力:只用单一方向扫描,GTR-L在COCO上的AP只有54.4;换成水平双向(左右都扫)能到55.1;上下双向是55.0;四方向全上,涨到55.5。方向数越多,精度越高,这个趋势是单调的,说明多方向扫描这件事,真的是在往模型里塞有用的信息,而不是凑数。

但光靠方向轮换还不够。研究者还加了一个叫Spatial SwiGLU(空间SwiGLU)的组件,专门处理局部空间关系。

Spatial SwiGLU:在SwiGLU(一种门控线性单元变体)的"值分支"里插入一个3×3的深度可分离卷积,让每个patch能直接感知周围相邻patch的信息,而不用依赖递归传递。

深度可分离卷积(Depthwise Convolution):一种轻量级卷积方式,每个输入通道单独用自己的小卷积核处理,不和其他通道混合,计算量比普通卷积小很多。

为什么需要这个?因为递归扫描传递信息是有延迟的,一个patch想知道隔壁patch的信息,得等递归状态一步步传过去,中间可能隔着好几十个token的距离。而局部空间关系(比如一个物体边缘的连续性)往往是最需要立即、精确感知的。3×3卷积直接让每个patch"伸手"摸到周围8个邻居,不用绕远路。

如果去掉这个局部卷积,改用传统的学习位置编码呢?实验给出了答案:在768×768分辨率下,用位置编码是53.9 AP,换成Spatial SwiGLU是55.1 AP,涨了1.2个点,而且额外计算量几乎可以忽略(只多了0.2 GFLOPs)。更极端的对比出现在单方向扫描场景下:去掉Spatial SwiGLU换成位置编码,AP直接从54.4暴跌到45.6,跌了将近9个点。这说明局部空间建模这件事,比大家想象的重要得多,它不是锦上添花,而是雪中送炭。

老师教学生,但只教最后一道题的答案

GTR从零开始训练效果并不好,论文里给出的数据是只有31.1 AP,几乎没法用。研究者的解决办法是蒸馏,让一个更强的"老师模型"把知识传给GTR。

但这里有个难题:老师模型用的是传统自注意力(DINOv3),学生模型GTR用的是线性注意力,两者内部的计算方式完全不同,怎么对齐?

知识蒸馏(Knowledge Distillation):让一个预训练好的大模型(教师)指导一个结构更简单、更小的模型(学生)训练,学生通过模仿教师的输出来学习,往往比从零训练效果更好。

以前的类似工作,比如ViT-Linearizer和ViT-AdaLA,都采用了相当复杂的多阶段蒸馏策略:既要对齐中间层的特征,又要做掩码预测,有的还要分阶段先对齐注意力模块、再对齐最终输出。GTR的做法反其道而行:只对齐最后一层的patch特征,用一个简单的平方L2损失,中间层什么都不管。

这就像教一个学生解数学题。传统蒸馏方法相当于要求学生不仅答案要对,中间每一步演算的草稿纸都要和老师的草稿纸长得一模一样。但GTR的做法是,只要求学生最后写出来的答案和老师一致,演算过程学生自己想办法,哪怕草稿纸上的思路和老师完全不同也没关系。如果强行要求过程也一致,那就等于在限制学生用适合自己(线性注意力)的方式去思考问题,反而会束缚住模型发挥线性结构本身的优势。

实验结果验证了这个思路的合理性。在同样的老师、同样的学生结构、同样的COCO训练流程下,GTR的简单方案达到50.7 AP,而更复杂的ViT-Linearizer是50.0,ViT-AdaLA是48.2。简单的方法反而赢了,这多少有点反直觉,但背后的逻辑是:给学生太多中间约束,可能反而限制了它找到最适合自己架构的解法。

速度到底快在哪,TensorRT部署做了什么

光有架构设计还不够,论文花了相当篇幅在讲怎么把GTR真正部署到芯片上跑起来,而且跑得快。

GLA的递归计算理论上是逐token进行的,但逐个token算效率太低,没法充分利用GPU的并行能力。标准做法是chunkwise(分块)计算:把序列切成固定大小的块,块内并行算,块与块之间再传递一个边界状态。

研究者针对GTR的具体配置(FP16精度、块大小64、固定的键值维度)专门写了一套CUDA算子。和业界常用的FLA v0.5.0库相比,这套自研算子在1.6K token长度下快了4倍,16.4K token长度下快了6.4倍。

这背后的关键设计是把"计算量大但可以并行"的部分和"计算量小但必须按顺序来"的部分分开处理。块内的特征摘要可以所有块同时算,只有边界状态的传递必须一步步来。这就像一个工厂的流水线:如果每个工位都要等前一个工位完全做完才能开始,整条线就会被最慢的那个环节拖死;但如果能把大部分活儿拆成可以同时开工的小任务,只留一道工序必须按顺序交接,整体效率就能大幅提升。这正是chunkwise计算的核心思路,GTR只是把这套思路和自己的具体配置(固定维度、FP16精度)结合得更紧密。

在实际部署上,GTR最终跑在了NVIDIA DRIVE AGX Thor这款车规级芯片上,用TensorRT做图和算子的联合优化。

TensorRT:NVIDIA推出的深度学习推理优化引擎,能把训练好的模型转换成在特定硬件上执行效率更高的版本,常用于自动驾驶等对延迟敏感的场景。

Roofline分析(屋顶线分析):一种评估计算任务是受限于"算力"还是受限于"内存带宽"的分析方法,图上会画出硬件的算力上限和带宽上限两条线,实际任务落在哪个区域就能看出瓶颈在哪。

论文用Roofline分析发现,GTR的六大任务在Thor芯片上普遍落在内存带宽受限的区域,而不是算力受限。这意味着瓶颈不在于芯片算得不够快,而在于数据搬运太费时间。针对这一点,研究者把多个小算子融合成大算子,减少中间结果来回搬运的次数,最终让优化后的实现达到了87%到110%的理论内存带宽利用率。部署结果显示,六个任务、四种模型规模下,批量为一的推理延迟全部落在2.282到8.769毫秒之间,而且FP16输出和FP32参考结果的余弦相似度始终在0.9989以上,精度几乎没有损失。

跑分说话:GTR到底比同行快多少、准多少

说了这么多设计思路,最终还是要看数字。

在COCO目标检测这个最核心的测试上,用了Objects365数据集预训练后,GTR-S/M/L/X四个规模分别拿到53.6、57.3、58.9、59.4的AP分数,在各自的规模区间里全部是第一名。最亮眼的是GTR-L:58.9 AP,中位延迟只要1.908毫秒,同时打赢了RF-DETR-L(56.5 AP,1.968毫秒)、YOLO26-L(54.3 AP,1.967毫秒)、ECDet-L(57.0 AP,2.730毫秒)。换句话说,GTR-L精度更高,速度还更快,这在同类比较里不多见,往往要牺牲一头才能换另一头。

GTR-X更极端:59.4 AP对比RF-DETR-X的58.6 AP,延迟却是2.115毫秒对3.243毫秒,快了整整1.1毫秒。

| 模型 | AP | 中位延迟(ms) |

|---|---|---|

| RF-DETR-L | 56.5 | 1.968 |

| YOLO26-L | 54.3 | 1.967 |

| ECDet-L | 57.0 | 2.730 |

| **GTR-L** | **58.9** | **1.908** |

再看迁移能力。GTR不是一个只会做检测的模型,论文把它搬到了实例分割、人体姿态估计、旋转目标检测、语义分割、单目深度估计一共五个额外任务上,全部用的是同一套骨干网络,只换了任务专属的头部。

实例分割上,GTR-S/X分别拿到45.0和49.8的mask AP,而且是在没有用SAM2生成伪标签这种"作弊式"数据增强的情况下达到的,对比用了伪标签的RF-DETR-Seg-X(48.8 mask AP),GTR-X不仅分数更高,延迟还低了25.3%。

姿态估计方面,GTR-S的关键点AP是70.1,GTR-X是75.5,都超过了同规模的ECPose。语义分割在Cityscapes数据集上,GTR-X以83.6 mIoU打平同规模的YOLO26x-sem,但参数量少20%,FLOPs少63.2%,延迟低19.5%。

单目深度估计这个任务比较特殊,GTR用了一个八个数据源混合训练的方案,包括ARKitScenes、SUN RGB-D、Hypersim等室内外场景数据,没有针对NYU Depth V2这个评测数据集做专门微调,属于零样本测试。结果显示GTR-S的δ1准确率是0.946,GTR-X是0.954,都明显超过对应规模的YOLO26-depth(0.896和0.933)。论文里还放了一组nuScenes夜间环视图像的深度预测图,GTR-L在完全没见过这个数据集的情况下,依然能画出结构清晰的深度图,还能靠激光雷达辅助的尺度对齐,把多帧预测拼成一个连贯的三维街景重建。

还有一组容易被忽略但很说明问题的实验:研究者尝试在GTR-L的12个block里,挑3个换成传统的softmax注意力,看看混合架构会不会更好。结果是精度几乎没变化(55.4到55.6之间浮动),但延迟从1.908毫秒涨到了2.094到2.117毫秒,计算量从106 GFLOPs涨到119 GFLOPs。这个结果其实挺重要的,它说明在GTR这套设计里,纯线性注意力已经把该学的东西都学到了,硬塞进去的softmax注意力只是在增加负担,没有带来任何好处。这也反过来证明了,GTR前面那些关于多方向扫描和局部卷积的设计,确实有效地补上了线性注意力原本缺失的能力,不需要再靠softmax注意力来"救场"。

分辨率往上提,延迟涨得慢不慢

边缘设备场景下,图像分辨率经常要动态调整,分辨率的扩展性是个绕不开的实际问题。

论文做了一组从640×640一路提到1280×1280的分辨率扫描实验。token数量从640提到1280,理论上是4倍关系,但GTR-S的延迟只从1.225毫秒涨到2.529毫秒,涨幅是2.06倍,远低于4倍。精度也跟着涨,整体AP从53.6涨到57.0,其中小物体AP从36.4涨到42.4,涨了6个点,说明分辨率提升带来的增益大部分落在小目标检测这种最吃分辨率的场景上。

这组数据背后其实印证了线性注意力最根本的那个承诺:计算量跟token数量是线性关系,不是平方关系。如果换成传统的softmax自注意力,4倍的token数量理论上会带来接近16倍的计算量,实际部署中内存和延迟都可能直接爆掉。这也是为什么论文开头那张图里,GTR-S在分辨率升高时,显存占用涨得比EdgeCrafter-S平缓得多,这不是巧合,是架构选择的直接后果。

写在后面

读完这篇论文,最触动我的其实不是那些具体的AP数字,而是GTR在蒸馏策略上做减法的那个决定。

现在很多工作的思路是"越复杂越稳妥",蒸馏要分阶段、要对齐中间层、要加各种辅助损失,生怕漏掉什么细节导致性能下降。但GTR反过来证明,有时候给模型太多约束,反而会压制它基于自身结构找到最优解的空间。这个教训其实适用范围更广,不止是蒸馏,很多工程决策里"加更多限制条件更保险"的直觉,未必总是对的。

还有一个细节值得单独拎出来说:论文里那组"GLA换成混合softmax注意力"的消融实验,结果是精度几乎不变但延迟明显增加。这意味着研究者们原本可能设想的"线性注意力负责长程粗糙信息、softmax注意力负责精细校正"的混合方案,在GTR这套架构里根本不成立。线性注意力加上多方向扫描和局部卷积,已经把该补的短板都补齐了。这提醒我,判断一个新架构是否"够用",不能只看理论分析,得真刀真枪跑一组对照实验才知道。

这篇论文留下的开放问题也挺有意思:GTR现在用的是固定的四方向轮换扫描,这个顺序是人为设计的,有没有可能让模型自己学一套更优的扫描策略?如果真的存在,会不会比人工设计的四方向循环更高效?这个问题论文没有回答,但也许正是下一篇论文的起点。

Q&A

Q1:GTR是什么?

A:GTR(Gated Token Recurrence,门控token递归)是一种软max-free的线性复杂度视觉骨干网络,结合门控线性注意力、四方向交替扫描和空间增强的SwiGLU模块,用于高效的密集预测任务,比如检测、分割、姿态估计和深度估计。

Q2:GTR相比传统的自注意力视觉模型有什么优势?

A:GTR的计算量只随图像token数量线性增长,不像传统自注意力那样呈平方级增长。实测中,分辨率从640提升到1280(token数涨4倍),GTR-S的延迟只涨了2.06倍,同时精度也在提升,尤其是小物体检测准确率涨了6个百分点。

Q3:GTR的训练方式和传统知识蒸馏有什么不同?

A:GTR只用一个简单的平方L2损失,对齐教师模型(DINOv3)和学生模型最后一层的patch特征,不做中间层匹配也不做掩码预测。这个简化方案反而比更复杂的ViT-Linearizer和ViT-AdaLA效果更好,在COCO上达到50.7 AP。

文章标签AI资讯

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。