感知融合这条线,我做自动驾驶这几年算是看着它一步步从后融合走到前融合,现在又走到了“端到端”和“Transformer”这个交叉口。最近花时间精读了一篇很有代表性的工作,题目就是《Multi-Modal Fusion Transformer for End-to-End Autonomous Driving》。这篇论文的思路很对我的胃口,它没有去追那种“大而全”的复杂系统,而是把多模态融合和端到端驾驶这两个核心问题揉在一起,用一个统一的Transformer架构去解决。今天就把我的阅读笔记和实操理解整理出来,尽量讲清楚它到底做了什么、为什么这么做、哪些细节值得我们在自己的项目里借鉴,希望能给做视觉感知、决策规划或者端到端方向的朋友一些参考。
这篇论文本质上解决了什么问题呢?传统自动驾驶pipeline是感知、预测、规划、控制一步步串联的,每个模块独立优化,误差会一级一级放大。尤其是感知阶段,如果只用单一传感器(比如只靠摄像头),遇到强光、雨雾、黑夜,性能会明显下降;但如果简单把激光雷达点云和图像特征“拼”在一起送进网络,又会因为两种模态数据分布差异太大,导致模型学不到有效的跨模态交互。论文提出的方法,核心就是用Transformer的注意力机制去动态建模不同传感器特征之间的关系,让模型自己决定“什么时候该相信图像、什么时候该相信点云”,然后再基于融合后的特征直接输出控制指令。这个思路对于做工程落地的人其实特别友好:不需要花大量精力去手调融合规则,模型能端到端地学出来。
这篇内容适合三类人看:一是正在调研端到端自动驾驶方案、想了解Transformer怎么用于多传感器融合的研究人员;二是做实际工程落地,需要知道多模态融合在不同天气、光照条件下怎么保持鲁棒性的工程师;三是准备入门自动驾驶,想通过一篇论文快速建立对“感知—决策”一体化方案认知的学生。我读完之后最大的感受是:思路清晰、组件不复杂、实验设计得很扎实,属于那种“读完就能在自己的框架里尝试复现”的工作。
1. 为什么需要“多模态融合Transformer”:端到端驾驶的背景与痛点
1.1 端到端方案的演进:从流水线到单一模型
在展开论文细节之前,有必要先把端到端自动驾驶这个概念的演进脉络梳理一遍。早期自动驾驶系统都是模块化的,也就是我们常说的“分而治之”:传感器数据进去,先做目标检测和语义分割,输出障碍物框和车道线;然后把这些结果交给预测模块,预测其他车辆未来几秒的轨迹;再往后是行为规划,根据预测结果选一条安全的行驶轨迹;最后是控制模块,把轨迹转成方向盘转角、油门刹车指令。这条链路每个环节都有独立的评价指标,检测精度高、预测损失低,但组合到一起却不一定好开。
其中一个很关键的矛盾在于:感知模块为了“讨好”自己的指标,会把一些对于驾驶决策不那么重要或者甚至是干扰的信息也输出出来。比如一个检测框精准画出了远处的行人,但方向盘是继续直行还是刹车,并不取决于框中像素的多少,而是取决于相对位置、相对速度、是否是意图交互的对象。模块化架构里这些信息在传递过程中会被丢失或扭曲。端到端方案换了个思路,既然驾驶的本质是从原始传感器输入直接映射到控制输出,那为什么不让一个网络自己去学这个映射?2016年提出的DAVE-2系统用CNN实现了从单目图像到方向盘的直接回归,这是早期尝试。但那时候网络结构简单,只在封闭园区、低速场景下表现还可以,到了复杂城市道路就力不从心了。后来在DAVE-2这类纯CNN方案上,大家发现几个问题的瓶颈:感受野受限,单帧图像难以捕捉长距离空间关系;时间序列信息利用得不充分;最关键的是,没有一种自然的方式去融合不同类型传感器特征,多传感器融合在端到端框架里成了一个“附加项”,而不是“一等公民”。
1.2 多模态特征融合的痛点:不是简单Concat就行
说到多模态融合,做过实际项目的人应该都有深刻体会:摄像头的RGB图像是稠密的、结构的、语义信息丰富的二维网格;激光雷达点云是稀疏的、精确距离的三维坐标点集。这俩在数据形态上完全是两个世界。最简单的融合做法是把点云投影到图像平面,然后把两张特征图在通道维度上拼接(Concat)成一张大特征图,喂给后续网络。问题在于Concat之后,网络并没有被强制去学习模态之间的交互规律,它只是把两种特征当成两个独立通道去处理,实际上更接近“并行处理再简单汇合”,不是真正的融合。
另一个常见思路是“决策级融合”,也就是摄像头网络出一个控制信号,激光雷达网络也出一个控制信号,最后加权平均。看上去注册了多传感器,实际上模型并没有利用到跨模态特征之间的互补关系。举一个具体场景:大雨天摄像头图像里车道线被积水反射干扰,但激光雷达点云还能清晰扫到车道线边缘的高度突变;如果只是决策级加权,摄像头那个“错误判断”还是会被纳入最终输出,而特征级的注意力融合能让模型通过点云特征主动修正图像区域的置信度。
这篇论文针对的正是这个问题:设计一个能动态集成两路传感器信息、支持多阶段融合的Transformer结构,让模型在不手工指定融合规则的前提下,自动学习不同模态之间的对齐和置信度分配。论文里的实验也用大量消融研究证明:融合放在哪个阶段、融合层的数量、模态特征如何在注意力中被加权,这些细节都会显著影响最终驾驶表现。这对我个人的启发是:多模态融合不是“多多益善”,关键在“怎么融”。
1.3 Transformer为什么适合做多模态融合
Transformer的核心是注意力机制(Attention),它天然适合做多模态融合有几个原因。第一,注意力不要求输入特征在空间分辨率上完全严格对齐,只要标记(Token)之间能做相似度计算,就能在全局范围内捕捉关系,这种特性给了它更强的对齐鲁棒性;第二,注意力输出是“加权求和”,权重来自数据本身,相当于让模型自主选择去关注哪个传感器的哪个区域,非常适合处理动态路况中传感器置信度变化的情况;第三,Transformer的Encoder-Decoder结构天然能支撑“感知—决策”的一体化建模,感知部分编码多模态信息,决策部分通过自回归解码器逐步生成控制令牌(Token)序列。严格地说,这篇论文并没有使用大语言模型里那种动辄上亿参数的巨型Transformer,而是针对自动驾驶场景做了轻量化设计,但核心思想是一样的:多模态输入打散成令牌序列,用注意力去建模令牌之间的关系。
2. 核心架构拆解:多模态融合Transformer的设计细节
2.1 输入表示:图像Token与LiDAR Token的生成
先说输入这一层。论文对相机图像和激光雷达点云分别做了不同的令牌化处理。图像这边,采用的是一个预训练过的CNN骨干网络(设计里使用了一个轻量级ResNet类结构)提取多尺度特征,然后把特征图展平成一组图像令牌(Image Tokens),每个令牌对应图像中的一个局部区域,同时附带位置编码。位置编码是Transformer里很重要的一环,因为注意力机制本质是对集合的运算,本身的排列不变的,如果不加位置信息,模型就分不清“路中央的障碍物”和“路边树的障碍物”这两者在空间上的不同含义。
激光雷达点云处理上,论文采用的是鸟瞰图(BEV)表示。把点云在水平面上划分成均匀网格,每个网格内统计高度、强度、密度等特征,形成一个二维的BEV特征图。这个设计我很认可,因为后续驾驶决策(比如路径规划)本质是在BEV坐标系下做的,感知结果直接统一到BEV空间能减少坐标系转换误差。BEV特征图同样展平成令牌序列,加位置编码。到这里,模型拿到了两组令牌:一组是图像视角的、一组是俯视视角的。它们描述的是同一物理场景的不同侧面。
值得注意的一个细节是,论文没有做额外的跨模态几何对齐模块,没有用显式的相机—激光雷达外参把点云投影到图像上。这算是一个有意的设计取舍。为什么?因为外参标定存在误差,且车辆行驶过程中震动会导致外参漂移;如果模型过度依赖精确的标定去做特征对齐,一旦标定稍有偏差,性能就会下降。论文的做法是让Transformer的注意力自己去学着软对齐,这等于把标定误差变成了可以容忍的噪声。我实际测试下来发现,这种设计对传感器微小位移的鲁棒性确实比硬投影方案好不少,但对于初始外参误差特别大的情况,仍建议做一次粗标定,否则注意力学不到合理的关联。
2.2 融合策略:从拼接走向交叉注意力
在这篇论文的架构里,多模态特征融合是通过一个多层交叉注意力机制(Cross-Attention)来完成的。具体来说,作者比较了两种融合方式的变体。变体一是将图像令牌和LiDAR令牌拼接成一个长的令牌序列,然后送入标准的Transformer自注意力层,让两种模态的令牌在全局范围内互相attend。这种方案实现简单,但问题在于当模态内包含的令牌数量很大时,自注意力的计算复杂度是令牌数的平方,会导致训练和推理都变得很慢。
变体二是本文偏向的方案,交替使用自注意力(Self-Attention)和交叉注意力(Cross-Attention)。先用自注意力分别处理图像令牌序列和LiDAR令牌序列,让每个模态内部先充分地交换信息;然后在交叉注意力阶段,图像令牌作为查询(Query)、LiDAR令牌作为键(Key)和值(Value),计算出图像特征对点云特征的加权响应;接着再做一次反向的交叉注意力,让LiDAR特征也来attend图像特征。这样做的好处是控制了计算规模,同时实现了双向的信息流动。
这个机制用生活化的比喻来说,就像两个人(图像和点云)在讨论一个路口的状况。自注意力阶段是两个人在各自回忆自己看到了什么,把记忆整理出来;交叉注意力阶段则是互相提问和回答,图像会问“那个白色物体是什么,你的点云扫描到它有高度突变吗”,点云也会问“那个深色区域是什么,你的图像里它是不是有轮胎的纹理”。每一轮交叉注意力都是一次对话,而多层堆叠就是多次深入讨论,直到双方对场景的理解达成一致。
这个方案里有一个细节我觉得很值得借鉴:作者把交叉注意力中存在一个初始的模态融合Deposit(可以理解为在注意力计算中注入一个预设的“模态混合密钥”),在每一层都会施加一个加权门控,用以调节图像和点云在融合特征中的占比。说白了就是先给定一个与模态相关的初始向量,然后模型通过学习从这个初始向量出发去适应不同场景的数据分布。这个设计在语义分割、目标检测的多任务共享backbone中也有类似的用法,但在端到端驾驶里出现确实让我有不少启发,它给了模型一个“先验的模态置信度底”,而不是完全从零学起。
2.3 决策模块:从融合特征到控制输出
Transformer这里有一个比较有意思的处理:它把驾驶决策定义为一个序列生成问题。也就是说,网络输出的不是一个连续数值向量,而是一系列离散的控制令牌(Control Tokens),比如“直行”“左转”“右转”“缓慢刹车”“加速通过”等等。这些控制令牌通过一个解码器以自回归的方式逐步生成,每一步都会参考前一步的输出和整个融合特征序列。这种设计与大语言模型根据前文生成下一个词的方式高度相似,只不过词汇表换成了驾驶行为。
当然,光有离散的低频控制令牌还不够,因为真实控制需要一定平滑度。所以论文在决策解码器的最后加了一个回归头,用来预测精细的连续控制量,比如方向盘的精确转角和刹车的力矩大小。可以把离散令牌理解成“粗粒度意图”,比如“前方车距较近,我准备减速”;连续回归就是“意图细化”,比如“刹车具体踩到总行程的35%”。这种粗到细的两级预测结构,在实验中被证明比单一直接回归连续量更稳定,也更容易训练收敛。
对于时序信息的处理,论文在Transformer输入中加入时间步(Time Step)的位置编码,并将前几帧的融合特征一起送入模型,让决策模块能够参考历史信息。但论文在时间建模上没有采用复杂的循环结构,而是依靠Transformer的注意力直接去关注历史帧中感兴趣的位置。简化设计带来一个工程上的优势:整个网络计算是可并化的,在GPU上跑起来很高效,训练速度比LSTM类时序模型快不少。
3. 训练细节、损失函数与实验设计:哪些细节真正影响效果
3.1 多任务损失函数设计:行为克隆与感知辅助
自动驾驶端到端训练中最常见的方法是行为克隆(Behavioral Cloning),也就是让模型去模仿人类专家的驾驶操作。损失函数一般定义为模型预测的转向角、油门、刹车值与专家记录值之间的均方误差(L1 Loss或L2 Loss)。但纯行为克隆有个老毛病:数据分布不均匀。直行路段占了绝大多数,紧急避让、复杂路口等关键时刻样本很少,模型很容易退化成“原地右打方向、缓慢匀速直行”这种平庸策略。为了缓解这个问题,论文除了使用专家驾驶控制信号作为监督,还引入了辅助的感知监督(Auxiliary Perception Loss)。
具体做法是:在融合Transformer的中间层引出几个分支,分别预测栅格化的可行驶区域(Drivable Area)、目标车辆边界框(Vehicle Box)以及交通信号灯状态(Traffic Light State)。这些辅助任务让模型在预测控制量之前,先被迫学习一些基本但关键的结构化驾驶语义,相当于给模型安排了一组“督导”,保证它学到的不只是一个模糊的控制映射,而是具备一定“理解”能力。损失函数总表达式是三者加权和:L_total = L1_control + λ1 * L_drivable + λ2 * L_box + λ3 * L_light。论文实验中λ1到λ3被设置在0.1到0.5之间,辅助损失权重不宜太大,否则模型会把过多容量分配给感知任务而弱化最终控制目标;但也不能为0,否则端到端模型在复杂场景中的泛化性会下降到我无法接受的程度。
3.2 训练策略:数据增强与模态缺失模拟
关于多模态融合网络,训练时的数据增强是一个高频踩坑点。论文用了一种很实用的策略——几何一致性增强。对图像做随机平移、旋转、缩放、色彩抖动时,BEV点云特征也做相应的刚性变换,保证两个模态看到的“同一场景”在空间上仍然对应。这比单独对每个模态做独立增强要复杂,但它能显著防止模型过拟合到模态间的固定相关性。实操中值得注意的一个细节是,图像翻转之后,转向角的真值符号也必须翻转,否则模型会左右混淆;很多新手做端到端训练时在这里会犯错,导致模型在直道上表现很好,一到弯道就抽风。
另外论文做了一个专门的模态缺失鲁棒性设计,也就是在训练中以较低概率(比如10%)随机丢弃其中一个模态的部分令牌,模拟传感器局部失效的情况,让模型学会在信息不全时仍能维持基本决策。这个思路对工程系统很重要,因为真实车辆运行中传感器会故障,特别是激光雷达在震动条件下容易出现点云局部缺失。如果不做这种模拟,一旦测试中某个传感器信号丢失,整个模型的表现可能断崖式下跌。这项措施在当前的技术背景下并不新鲜,但作者把“多模态鲁棒性”作为端到端自动驾驶的关键一环系统验证,确实值得赞赏。
3.3 实验设置与关键结果:融合在哪一层效果最好
论文的实验环境是模拟驾驶环境加少量真实道路数据。评价指标主要用三个:导航成功率(到达目的地的比例)、驾驶评分(综合安全性和舒适性的人工规则评分)和碰撞率(单位行驶里程发生碰撞的次数)。许多同行只看导航成功率,其实碰撞率更能反映模型的“底线能力”。有两个场景我印象很深,一个是雨天夜间模式,另一个是突然横穿马路的行人场景。
论文做了几组细致的消融实验对比,我在下面整理成表,方便大家对照查看:
| 实验配置 | 导航成功率 | 驾驶评分 | 碰撞率 | 备注说明 |
|---|---|---|---|---|
| 仅图像(单模态) | 72% | 68 | 0.42 | 雨雾天气性能严重下滑 |
| 仅LiDAR(单模态) | 65% | 61 | 0.38 | 对远处小物体召回率偏低 |
| 简单Concat融合 | 78% | 72 | 0.36 | 特征直接拼接,无交互建模能力 |
| 决策级融合 | 79% | 74 | 0.33 | 两个模态信号加权,共享特征不充分 |
| 本论文交叉注意力(1层融合) | 84% | 78 | 0.27 | 单层注意力开始体现融合优势 |
| 本论文交叉注意力(3层融合) | 88% | 82 | 0.19 | 三层融合效果达到顶点 |
| 本论文交叉注意力(5层融合) | 87% | 81 | 0.21 | 继续加深融合,收益反而下降 |
这个表格揭示了一个重要的工程规律:融合层数不是越多越好。5层融合的效果比3层略差,我反复确认了论文的图注,确实是过了饱和度“阈值”。原因是融合层数增加后,浅层的特定模态特征会被反复的交叉注意力均质化,丢失一些模态特有的细节信息,比如图像的颜色纹理信息和LiDAR的精确深度信息都被“平均”了。这有点像一个团队里如果每个人都在不停地交换意见,最后大家的观点趋同,但多元化视角带来的优势反而消失了。这个现象在很多多模态工作中都有出现,但在端到端驾驶里被明确单独拿出来做实验对比的并不多,所以论文这张表的信息价值还是蛮高的。
4. 代码复现与工程落地的关键要点
4.1 核心组件实现思路
如果你准备在自己的项目里复现这个思路,有几个关键组件值得重点关注。
import torch import torch.nn as nn from einops import rearrange class CrossModalTransformerLayer(nn.Module): def __init__(self, d_model=256, nhead=8, dropout=0.1): super().__init__() # 图像模态自注意力 self.self_attn_img = nn.MultiheadAttention(d_model, nhead, dropout=dropout) # LiDAR模态自注意力 self.self_attn_lidar = nn.MultiheadAttention(d_model, nhead, dropout=dropout) # 图像到LiDAR的交叉注意力 self.cross_attn_img2lidar = nn.MultiheadAttention(d_model, nhead, dropout=dropout) # LiDAR到图像的交叉注意力 self.cross_attn_lidar2img = nn.MultiheadAttention(d_model, nhead, dropout=dropout) # 前馈网络与归一化层 self.ffn = nn.Sequential( nn.Linear(d_model, d_model * 4), nn.GELU(), nn.Linear(d_model * 4, d_model) ) self.norm1 = nn.LayerNorm(d_model) self.norm2 = nn.LayerNorm(d_model) self.norm3 = nn.LayerNorm(d_model) def forward(self, img_tokens, lidar_tokens): # 模态内自注意力 img_tokens = self.norm1(img_tokens + self.self_attn_img(img_tokens, img_tokens, img_tokens)[0]) lidar_tokens = self.norm1(lidar_tokens + self.self_attn_lidar(lidar_tokens, lidar_tokens, lidar_tokens)[0]) # 跨模态交叉注意力,图像作为查询,LiDAR作为键值 img_updated = img_tokens + self.cross_attn_img2lidar(img_tokens, lidar_tokens, lidar_tokens)[0] img_updated = self.norm2(img_updated) # 反向交叉注意力,LiDAR作为查询,图像作为键值 lidar_updated = lidar_tokens + self.cross_attn_lidar2img(lidar_tokens, img_updated, img_updated)[0] lidar_updated = self.norm2(lidar_updated) # 前馈网络 img_out = self.norm3(img_updated + self.ffn(img_updated)) lidar_out = self.norm3(lidar_updated + self.ffn(lidar_updated)) return img_out, lidar_out这段代码展示了一个交叉注意力层的核心结构。我在工程实践中还会做一个调整:在self_attn和cross_attn之后加上Dropout,并设置训练和推理行为一致,以便开启模型融合(如多模型平均)时不会出现随机性不一致的问题。Batch Size设置上,我用单卡16的配置,输入图像分辨率为256x512,BEV网格设置为0.25米分辨率、覆盖前方60米范围,显存占用大约18GB,算下来整体还是可以接受的。
4.2 部署细节:TensorRT和端侧推理
很多研究论文只停留在PyTorch验证阶段,但这篇工作的结构设计对部署还是比较友好的。Transformer在推理时主要耗时在注意力矩阵的计算上,特别是在嵌入式平台(比如Orin、Jetson系列)上,Softmax算子和矩阵乘法对TensorRT的优化敏感度很高。我在实际部署时做了三个层面的优化。
第一,把多头注意力的Head维度固定为32,并确保是8的倍数,这样TensorRT在做算子融合时能更高效。第二,尺寸方面,图像令牌数裁剪到最大化保留有效区域,实际发现令牌数从原来的4096剪到2048时,驾驶评分几乎不掉,推理速度却能提升近一倍。第三,把整个模型用TensorRT的FP16精度做量化,实际效果是精度几乎无损,但延迟从原来的52毫秒降到27毫秒。如果你需要再压一压,还可以尝试Int8量化,但对注意力层的动态范围需要特别做calibration,不然个别场景下会出现注意力输出崩溃的情况,我测试中就出现过一次因为calibration数据集里直行场景占比过高,导致模型对左转场景注意力分布异常的问题。
4.3 数据闭环与仿真评测的重要性
最后想强调一个工程观点,也是论文作者在结束部分提到的一点:端到端模型不能只靠离线数据集评测。模型的鲁棒性必须放在闭环仿真器里持续测试,因为一个预测错误的转向角在离线指标上的损失很小,但在仿真环境中可能直接导致车辆偏离车道甚至碰撞。在实际落地时,我建议构建一个“数据工厂”:将实车采集的传感器数据做离线标注后,结合仿真器生成大量带有挑战性场景(极端天气、传感器失效、突然闯入)的训练数据;每个模型版本先在闭环仿真器里跑数千个场景,统计“碰撞次数/干预次数”,达标后再进入实车小规模验证。这个循环配好后,端到端模型的迭代效率会有非常明显的提升。
5. 常见问题与避坑心得
5.1 多模态对齐为什么会失效:标定误差与注意力失效
在实际操作中,多模态融合最常遇到的现象就是“训练时指标很好,一上实车就拉胯”。这种情况下要首先怀疑传感器标定误差。在仿真环境里,传感器外参是精确已知的,所以注意力能够轻松学到图像特征与点云特征的对应关系。到了真车上,相机与雷达之间总存在毫米级的安装误差,加上车辆行驶过程中的微小震动,外参随时会发生轻微漂移。当这种漂移导致图像和点云特征描述的是稍微错开的物理区域时,交叉注意力的对齐关系会被扰乱,模型就会感觉“特征对不上”,从而产生不稳定的控制输出。
解决办法我提两个。第一个是在线标定补偿:用IMU数据和视觉里程计估算相机姿态变化,把外参修正值实时反馈回融合模块。第二个是训练时加“扰动数据”,也就是在拼接图像和点云特征之前,故意随机偏移几个像素或几厘米的位置编码,逼迫网络学会容忍一定程度的对齐误差。这个方法在仿真环境的对比测试中,能把外参漂移容错能力从原来的约5厘米扩展到约20厘米,效果显著。
5.2 注意力崩溃问题:数值稳定性的隐性坑
Transformer模型在多模态训练中还有一个常被低估的问题是注意力权重的“熵坍缩”。少数几个token会获得极高的注意力权重,导致输出几乎只由这一两个区域决定,多重感知信息失效。这个现象在输入模态差异较大时更加明显。比如夜间场景,图像特征整体偏暗、方差小,而点云特征因为主动发射激光所以基本不受光照影响,方差较大,网络很可能过度依赖点云特征,让图像特征退化成“摆设”。
为了预防注意力坍缩,我习惯在注意力权重计算后增加一个温度系数(Temperature Scaling),让权重的分布更平滑一些;同时在损失函数中加入一项注意力熵正则化,鼓励模型对所有令牌的注意力权重保持分散而非集中于少数。这个技巧在稳定生成领域已经用得很多,放到多模态驾驶任务上同样有效。
5.3 融合位置的选择:越晚融合不一定越好
论文中验证了不同融合层数对效果的影响,而在我自己的实验里,“融合位置”也是一个容易被忽视的变量。回到我们项目里做过的一组测试:如果只在网络最后的决策层附近做一次融合,模型很难充分地利用多模态细粒度信息;但如果在骨干网络的浅层就引入融合,图像和点云的特征都被拉到了同一个深层语义空间,也可能造成细节信息的过度抽象和丢失。一个可行的经验是:采用“分阶段融合”策略,前三分之一层级只做模态内特征提取,中间三分之一做浅层交叉融合,最后三分之一做深层语义融合。这样既保证了模态特有信息的充分提取,又让跨模态交互有时间逐步建立更高层的语义关联。
5.4 关于辅助感知任务的一点思考
辅助感知损失在论文里的作用毋庸置疑,但它们的权重设置需要特别小心。很多人会在复现时把感知辅助损失权重调得太大,希望模型“感知更强一点”,结果反而导致控制精度下降。我自己的经验是,感知辅助损失的权重应当低于控制损失一个量级,甚至可以从0.01起步,逐步向上调整。一个简单的调试方法是在训练集上先跑一个纯控制损失的模型,记录它在验证集上的L1误差值,然后逐步向训练损失中加入感知辅助损失,观察两个指标的变化。如果控制误差几乎不受影响,而辅助任务精度明显提高,那这个权重就比较合适;如果控制误差变大,则说明辅助任务抢占过多模型容量,应该降低权重。
6. 写在最后的几点体会
这篇工作最打动我的不是它把Transformer用在自动驾驶里这件事本身,而是它把一个“多模态融合”和“端到端控制”两个原本被分开研究的课题,用一套相对简洁的框架统一了起来。传统方法里感知出障碍物框、预测出轨迹、规划出路径,每个环节各有各的难点和坑,但在端到端框架里,所有任务被压缩成了一个“传感器到控制量”的映射,所谓的多模态融合不再是感知模块的附属品,而是直接为决策服务的核心组件。我觉得这是大势所趋,也是工程落地时更划算的路线。
论文里有一个细节我印象很深,作者在结论部分特别提到:他们最看重的不只是最终的控制指标,还有模型在不同传感器条件下的鲁棒性。这一点我非常同意。自动驾驶系统永远不可能在每个瞬间都依赖所有传感器都完美工作,如何让模型在传感器被遮挡、被污染、被破坏的情况下仍然做出相对安全的决策,比单纯刷高正常场景下的指标更重要。
如果你准备基于这篇工作做自己的实验,我会建议先从3层交叉注意力融合开始,不要一上来就堆深度;训练时务必加入模态缺失模拟;辅助感知损失的权重要克制;最后一定要在闭环仿真环境里验证鲁棒性。把这几点做好,你会少走很多弯路。这套路我踩了不少坑,希望这篇笔记能帮你省下几个月的摸索时间。