一、路口那 0.5 秒,车在"想"什么
无保护左转,城区最难的场景之一。你的车停在路口中央待转,对向一辆车打着灯远远驶来,右前方人行道上有个抱着孩子的行人在犹豫,导航地图告诉你左转后第二个车道施工封闭。
此刻决策需要同时用到四类完全不同的信息:摄像头里的像素(对向车的姿态、行人的朝向)、地图里的几何(待转区边界、封闭车道)、历史轨迹(对向车过去两秒在减速还是加速)、导航语义(左转后要尽快靠右下匝道)。
老架构怎么办?感知一个模块,地图一个模块,预测一个模块,各算各的,最后在规划器里用一堆 if-else 和代价函数把它们捏在一起。信息在哪捏、怎么捏、捏丢了什么,全凭工程师的手艺。
而在 UniDriveVLA 这类统一架构里(上一篇我们讲过它为什么出现),这四类信息被切成四种 token——视觉 token、地图 token、轨迹 token、语言 token——扔进同一个 Transformer,让它们自己"商量"。商量的机制,就是 Attention。
这一篇,我们把这个机制拆到螺丝级别。不是 NLP 教程,每一个概念都会落到车上。
二、Token:先把世界切成"信息卡片"
Transformer 不认识图像,不认识地图,不认识轨迹。它只认识一样东西:一排定长的向量。所以第一步永远是——把万物切成 token。
Token 的本质是"一小块信息 + 它的向量身份证"。把一张前视相机图像切成 16×16 的小块,每块经过卷积或线性投影变成一个 256 维(或 512、1024 维)的向量,这就是一个视觉 token。这个向量就是embedding——你可以理解为把"这块图像里有什么"压缩编码成一串数字,语义相近的内容,数字也相近。
自动驾驶里有一件事必须想清楚:切法即立场。同样是"表示这个世界",不同的切法代表不同的先验:
视觉 token:按图像网格切,天然稠密,擅长纹理和外观——雨夜里那个穿深色雨衣的行人,最早的信号就藏在几个视觉 token 的微弱特征里;
BEV token:按俯视图的空间网格切,每个 token 认领地面上一块固定区域(比如 0.5m×0.5m)。它的好处是坐标系统一,代价是表达密度不均——自车前方 10 米的一个 BEV token 背后有几百个像素的信息支撑,而 80 米外的 token 可能只分到几个模糊像素,同一张 BEV 网格上,近处是高清地图,远处是印象派;
地图 token:不按网格切,按结构切——一条车道中心线是一串点序列编码成的 token,一个停止线、一个路口拓扑各是一个 token。它稀疏但精确,几厘米的车道边界误差都装得下;
轨迹 token:一个目标过去 2 秒的运动状态(位置、速度、朝向序列)编码成的 token,是"这个物体最近在干什么"的浓缩;
语言 token:导航指令"前方施工请借道"、或模型自己生成的推理文字,切成词片。
一句话:token 化是把异构世界翻译成同一种货币。翻译完成后,像素、几何、运动、语义,才能在同一个市场里交易。
三、Attention:一场"谁跟我有关"的全员广播
现在这些 token 进了同一个会议室,怎么交流?
先说直觉。Attention 干的事,本质上是每个 token 向全场广播一个问题,然后按相关度加权收集答案。像不像一个新来的跟踪工程师在开晨会:他喊一句"昨晚谁动过雷达速度的融合逻辑?",做融合的同事举手举得最高,他就重点听这个人说话,其他人的发言也听,但权重低。
落到公式上(全文唯一一段公式,值得看懂):每个 token 的向量会被三个矩阵分别投影成三个角色:
Q(Query,提问):我想知道什么;
K(Key,标签):我这里有什么,供别人检索;
V(Value,内容):真被检索中了,我实际交出去的信息。
某个 token 的 Q 和所有 token 的 K 做点积,得到一排相关度分数,softmax 归一化成权重,再用权重对所有 V 加权求和——这就是它这一轮"开会"的收获。
关键是要理解 K 和 V 为什么必须分开。用一个车上的真例子:静止车辆的雷达鬼速度。BEV 里一个 token 覆盖着一辆路边停的车,雷达分支给它注入了 3 m/s 的多径鬼速度,视觉分支看到的是纹丝不动。下游做速度估计的 query 来提问时,它检索的依据(K)是"这里有个车辆目标",但它真正取走的内容(V)里同时包含了视觉的静止证据和雷达的运动证据——网络在训练中学会了在 V 的融合里给冲突信号做仲裁。检索的线索和交付的内容是两回事,这就是 Q/K/V 三分的工程意义。而这套仲裁不是工程师写的 if-else,是从数据里学出来的——这正是它比规则融合强的地方,也是它出错时更难归因的地方(后面会讲)。
再看一个例子体会 attention 的威力:遮挡后目标重现。行人走进公交车后面,三秒后从车头钻出来。CNN 时代这是老大难,因为卷积只看局部邻域,"车尾消失的行人"和"车头出现的行人"在特征图上隔着十万八千里。而 attention 是全局的:新出现的检测 query 一次广播,就能直接命中三秒前那个行人的历史轨迹 token——外观匹配、位置合理、时序连贯,权重瞬间拉满,ID 就续上了。Attention 天生擅长"远距离认亲",而驾驶场景里到处都是需要认亲的碎片信息。
四、Cross Attention:自动驾驶真正的主力工种
Self attention 是"一群 token 内部互相开会"。而自动驾驶架构里干活最多的,其实是Cross Attention(交叉注意力):一边出 Q,另一边出 K 和 V——一组 token 主动去"审问"另一组 token。
这个模式几乎撑起了现代智驾感知的全部骨架,我们顺着数据流走一遍:
第一站:BEV 的生成本身就是 cross attention。BEV 空间里每个格子预设一个可学习的 query,它带着自己的空间坐标,通过相机内外参投影回图像,去六路环视相机的视觉 token 里"抓取"属于自己那块地面的特征。BEVFormer 类方案的核心就这一步:BEV query 问,image token 答。多相机融合不再需要手写的拼接规则,重叠视野区两个相机都看到的目标,由 attention 权重自动决定信谁多一点。
第二站:检测是 object query 审问 BEV。几百个 object query(可以理解为"空白的目标候选卡")对 BEV token 做 cross attention,每个 query 逐层聚焦到一个真实目标上,最后解码出框、类别、速度。施工区的锥桶阵是个好例子:几十个锥桶密集排列,传统 anchor 方案会在 NMS(非极大值抑制)里互相误删,而 query 机制里每个 query 通过 attention 天然"认领"一个锥桶,query 之间还会互相通气(self attention)避免撞车。
第三站:跟踪是 track query 跨帧续命。上一帧锁定某辆车的 query,这一帧带着记忆继续对新 BEV 做 cross attention,"我上帧跟的那辆白色 SUV,现在在哪"。这就是 track query 的时序稳定性来源——但也埋着坑:高速 cut-in时,旁车两帧之间横移了大半个车位,track query 的注意力还锚在旧位置附近,容易跟丢;工程上要靠运动先验去引导 attention 的搜索范围,这是查询设计里实打实的手艺活。
第四站:预测和规划是 agent query 审问全场。每个目标的预测 query 同时 cross attention 到地图 token("我在哪条车道上,前方能不能左转")和其他目标的轨迹 token("旁边这辆车会不会挤我"),解码出多模态轨迹——路口那辆对向车,30% 概率直行、70% 概率右转,两条轨迹各带概率。自车的规划 query 则再对这些预测结果、地图约束、导航语言 token 做一轮 cross attention,输出自己的轨迹。
看出来了吗?整条感知-预测-规划链路,就是一场接力式的"提问":BEV 问图像,检测问 BEV,跟踪问历史,预测问地图和邻居,规划问所有人。UniDriveVLA 类统一架构做的事,就是把这场接力纳入同一个 token 空间、同一套权重里,再让语言 token 全程旁听并随时插话——"前方施工"这四个字的 token,可以直接改变规划 query 对左侧车道 BEV token 的注意力权重。
五、为什么偏偏是 Transformer?三个不可替代性
讲完机制,回答标题的问题。CNN 和 LSTM 服务了自动驾驶十年,为什么被换掉?
第一,它对"异构"免疫。卷积假设输入是规整网格,RNN 假设输入是有序序列。而驾驶场景的信息天生异构:图像是网格、地图是矢量图、轨迹是时序、指令是文本。Transformer 对输入结构零假设——只要是 token 就行,位置和模态信息通过 embedding 附加。多模态融合在 Transformer 里不是一个专门的模块,而是 attention 的副产品。这就是"Transformer 为什么适合多模态融合"的最短答案:它根本不区分模态,一切都是 token 之间的检索与聚合。
第二,它能表达"关系",而驾驶决策的本质是关系。两轮车横穿马路危不危险,不取决于两轮车本身,取决于它和自车的相对速度、和遮挡它的公交车的位置关系、和路口信号的时序关系。CNN 擅长"这是什么",attention 擅长"这些东西之间怎么了"——后者才是预测和规划的语言。
第三,它吃得下算力和数据的增长。Scaling Law 在 Transformer 上被反复验证:堆数据、堆参数,能力可预期地上涨。这对数据闭环意味着什么?hard case mining 挖回来的雨夜行人、非刚体挂车,不需要为它们各开一个专用小网络,统一喂给同一个模型就能变强。数据引擎的飞轮,只有架构统一才转得起来。甚至自动标注也在吃这个红利:云端用超大 Transformer 离线跑出高质量真值(时序前后帧都看,遮挡也能补全),再蒸馏给车端小模型——同一套架构,云端当老师,车端当学生。
六、工程权衡:上车之后,浪漫结束
以上是 Transformer 的光明面。把它塞进车端芯片的那一刻,账本就得摊开了。
算力账:attention 是平方复杂度。N 个 token 两两开会,计算量是 N²。BEV 网格 200×200 就是 4 万个 token,直接全局 attention 一帧几十毫秒就没了,10 Hz 的感知帧率立刻破产。所以量产方案全在做"减法":deformable attention 让每个 query 只看少数几个采样点,窗口 attention 只在局部开会,时序上只保留稀疏的历史帧。车端的 Transformer,本质上是一场"在哪里省略 attention"的精算。省错了地方就是事故隐患——远距离小目标恰恰需要长程注意力,而它最容易被裁掉。
显存账:KV cache 是隐形大户。时序模型要缓存历史帧的 K 和 V,帧数一多、token 一多,车端几个 GB 的 memory 预算很快见底。这也是为什么 BEV token 要压缩、历史帧要抽稀、语言分支的上下文长度在车端被卡得很死。
延迟账:不是所有任务都等得起。泊车场景 5 厘米级的近距离避障,几何精度和响应速度是硬约束,一个几百毫秒的大模型推理链路放在这里就是灾难;而"理解施工区该怎么绕"可以容忍慢一点。所以上一篇讲的快慢系统分工,落到 Transformer 层面就是:小 Transformer 高频跑几何,大 Transformer 低频跑语义,未来在 UniDriveVLA 类架构里则通过 MoE 的稀疏路由(routing)让不同 expert 处理不同难度的场景——简单跟车激活小专家,复杂路口激活大专家——这是下一篇的主题。
归因账:attention 权重不等于可解释性。规则时代出了问题查代码,Transformer 时代出了问题查什么?attention map 能告诉你"规划 query 当时在看那个行人",但不能告诉你"为什么看了还撞上去"。评测体系必须跟着升级:不能只测检测 AP 和规划碰撞率,还要建场景库做切片评测——雨夜、施工区、无保护左转分开统计,用仿真(simulation)批量回放 hard case。模型统一了,评测反而要更碎。
七、坑:那些论文里不写的事
几个真实研发中反复踩的坑,提前说给你听:
坑一:token 分配不公是系统性偏见。BEV token 均匀切网格,但信息不均匀——近处过剩、远处饥饿,导致远距离小目标(低速起步的电动车、150 米外的静止故障车)先天弱势。缓解手段有级联细化、非均匀网格、透视-BEV 混合表征,但没有免费的午餐,每种都在精度和算力之间挪腾。
坑二:query 会"内卷"。object query 数量是超参:给少了,施工区几十个锥桶认领不过来,漏检;给多了,query 之间在稀疏场景里互相抢目标,输出重复框,且平白烧算力。动态 query 数量是方向,但训练稳定性又成了新问题。
坑三:时序是把双刃剑。track query 带记忆是好事,但记忆也会中毒——一旦某帧把两个近距离目标的 ID 张冠李戴(想想并排等灯的两辆同色轿车),错误会沿时序传播好几秒。工程上要设计记忆的"遗忘机制"和置信度衰减,这些细节论文里往往一句带过,量产里是几个月的活。
坑四:训练比推理更烧钱也更玄学。多任务联合训练时,检测损失、跟踪损失、规划损失互相拉扯,权重配比调不好,会出现"检测涨了规划崩了"的跷跷板。大规模 Transformer 训练的不稳定(loss spike、梯度爆炸)在多模态输入下更频繁——不同模态的 token 数值分布差异很大,归一化策略没对齐,训练直接发散。
八、总结
三句话收束全文:
Token 化是统一的前提:视觉、地图、轨迹、语言被翻译成同一种"货币"后,异构信息的融合才从工程手艺变成可学习的问题。
Attention 是可学习的信息路由:Q/K/V 把"检索谁"和"取走什么"解耦,cross attention 串起了 BEV 生成、检测、跟踪、预测、规划的整条接力链——现代智驾架构的骨架,就是一连串"谁审问谁"。
上车是精算,不是信仰:平方复杂度、KV cache、延迟预算、归因难题,每一项都在逼架构师做减法。Transformer 给了统一驾驶大脑的可能性,但把可能性变成量产,靠的是对每一次 attention 的锱铢必较。
Transformer 之所以能当驾驶大脑,不是因为它更聪明,而是因为它第一次让"看到的、记得的、地图上的、被告知的"说同一种语言。