你可以把传统的自动驾驶系统想象成一根**"接力棒",而把 UniAD 想象成一个"全能大脑"**。
1. 传统的做法:模块化(Modular)的"接力赛"
在你实习期间接触到的系统,大多是这种:
-
第一棒(感知):识别人行道、车、红绿灯,输出一个"物体列表"。
-
第二棒(预测):拿这个列表,猜别的车往哪开,输出一条"轨迹线"。
-
第三棒(规划):拿着预测线,算出自己怎么走。
痛点(信息断层): 如果第一棒(感知)看漏了一个骑车的人,这个错误会像滚雪球一样传到最后一棒。最后一棒(规划)根本不知道前面发生了什么,只能"盲目"执行。这就是所谓的**"信息瓶颈"**。
2. UniAD 的做法:统一(Unified)的"圆桌会议"
UniAD 的核心思想是:不再传递简单的结果(比如坐标、速度),而是传递"特征(Query)"。
-
全栈打通 :它把检测(Detection)、跟踪(Tracking)、映射(Mapping)、运动预测(Motion Prediction)和占用预测(Occupancy Prediction)全部放在一个 Transformer 网络里。
-
目标明确 :虽然它干了很多活,但它所有的努力都只有一个终极目标------为了最后一刻的"规划(Planning)"。
它的逻辑是: 我做感知和预测,不是为了出个报表,而是为了让我最后那一脚油门踩得更准。如果规划觉得这地方容易撞车,它会反过来要求感知模块:"你给我看清楚那块阴影到底是不是车!"
它是怎么实现"倒逼感知模块"的?
"要求感知模块看清楚阴影",在深度学习里对应两个核心机制:
A. 训练阶段的"秋后算账":反向传播(Backpropagation)
这是 UniAD 这种 "端到端(End-to-End)" 模型最强大的地方:
系统在训练时,如果最后的 规划(Planning) 算出来的线和人类司机的真迹对不上(比如人类绕开了阴影,AI 撞了上去),系统会产生一个 误差(Loss)。
这个误差会像电流一样,顺着网络往回流,一直流到最开头的感知层。
效果:它会告诉感知的神经元:"刚才你把那个阴影当成路面是错的,下次你要把它识别成障碍物!"
B. 推理阶段的"圆桌会议":注意力机制(Attention)
UniAD 内部各模块(跟踪、预测、规划)之间在不断通过 Transformer 进行对话。
当规划模块觉得某个区域有碰撞风险时,它的 "关注权重" 会自动聚焦到那个区域。
这种逻辑保证了:系统会将 80% 的算力花在对驾驶决策最重要的 20% 物体上。
3. 总结:UniAD 到底牛在哪?
它把自动驾驶从"一堆零件的组装"变成了"一个整体的演化"。
-
传统方法:你在修你的 Hybrid A* 算法时,可能没法影响感知的识别率。
-
UniAD:它在训练时,规划的误差可以直接反向传播到最开头的感知层。