想象你是老城区交通指挥中心的新任调度员。早高峰来了,二十台车要在狭窄的老街、单行道和几个没有信号灯的交叉路口中间安全穿行。局长给你两个选择:第一个选择,先架一块大屏幕,把全城的监控照片“翻译”成一张矢量化电子地图——路沿是线、车道是线、路口是点,然后由总调度台盯着地图,为每台车画出几条候选路线并打分;第二个选择,不给大屏幕,只在每个路口放一张轻巧的计算卡,卡片上记着几行最简单的数字:当前车速、前车车距、车道编号,由一个只含几层“小网络”的调度员直接告诉你:往左打三十度,或者再等两秒。前者像一位拿着精细地图的总规划师,后者像一位熟门熟路、轻装上阵的老骑手。这两个选择,正是自动驾驶预测与规划领域两个代表性方法——VAD 与 AD-MLP——的浓缩写照。 VAD 的出发点是“先把世界描述清楚再决策”:它用矢量化场景表示替代笨重的栅格像素,让模型把注意力集中在车道线、路沿等真正重要的几何元素上;AD-MLP 的出发点是“用最轻的模型快速响应”:它把复杂的注意力结构压缩成多层感知机,并通过知识蒸馏从强教师模型中学习。两者不是竞争对手,而是同一张“规划调度金字塔”的不同层级:VAD 适合做复杂场景的离线预审和云端仿真,AD-MLP 适合做车规级芯片上的实时量产部署。理解了这两条路线,你就理解了当前端到端自动驾驶规划最重要的工程取舍。

岗位关联

对于 AI 从业者而言,VAD/AD-MLP 是理解“矢量化表示”与“模型轻量化”两大工程思想的绝佳切片。掌握之后,你既能看懂顶会论文里 transformer 场景编码器在做什么,也能在真实车载芯片上设计出毫秒级响应的规划模型,这直接关系到自动驾驶系统的量产落地与安全合规。

目录
  1. 可视化演示
  2. 背景动机:两种调度哲学
  3. 矢量化表示:从照片到地图
  4. 模型结构:目标查询与交叉注意力
  5. 规划预测:画线、打分、选路
  6. AD-MLP结构:轻装调度员与蒸馏
  7. 实验落地:指标、合规与量产
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示矢量化场景表示、轻量MLP规划网络与端到端框架集成,理解高效自动驾驶规划方法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

矢量化场景表示 自车 轨迹 vector 场景矢量编码

背景动机:两种调度哲学

老城交通局长面前摆着两份方案。方案 A 的总规划师说:“请先给我一台性能强劲的服务器,我要把全城的监控画面描成一层电子地图,然后我可以同时为二十台车规划出最好的路线。”方案 B 的轻装调度员说:“我不需要看全城,只要在每个路口放一张小小的计算卡,我就能根据前后几辆车的实时数据,立刻告诉司机该往哪打方向盘。”两份方案背后的哲学截然不同:一个相信“看得越完整,决策越聪明”,另一个相信“反应越轻快,落地越可靠”。

在自动驾驶领域,这个选择正在被认真讨论。传统的级联方案把感知、预测、规划切成三个独立模块“各干各的”,但前一个模块的微小误差会像雪球一样滚进后一个模块。于是,端到端规划方案走上舞台:直接从传感器特征输出可执行的轨迹。VAD 属于前者中的“重表示”派,它强调把场景描述清楚;AD-MLP 属于“轻模型”派,它强调把网络做得足够小。

我们可以把端到端规划器写成这样一个映射:输入是当前观测与地图上下文,输出是一组带置信度的候选轨迹。这个统一视角,正是两条路线同台竞技的起点。

局长最后没有立刻做决定,因为他知道:选地图还是选轻卡,要看老城区真正的痛点是什么。这也是端到端规划研究的分水岭。

π:(O, M)→{ (τ^k, pk) }k=1K\pi: (O,\, M) \rightarrow \{\,(\hat{\tau}_k,\, p_k)\,\}_{k=1}^{K}
这个公式把规划问题压缩成一句话:给定观测和地图,模型输出 K 条候选轨迹,并给每条轨迹打一个概率分。
  1. 规划器 ππ 代表整个端到端规划模型,它是从“世界状态”到“驾驶动作分布”的函数,就像局长拍板选择哪套调度方案。
    π\pi
  2. 观测变量 OO 表示自车传感器数据、历史速度和行人位置等实时观测,相当于调度员眼前的实时车流画面。
    OO
  3. 地图上下文 MM 是矢量化场景表示,在 VAD 中就是那条轻量的电子地图,是所有决策依赖的结构化背景。
    MM
  4. 候选轨迹集合模型输出 K 条未来轨迹 \hat{\tau}_k,每条对应一个概率 p_k;概率越高,代表模型越相信这条路线可行。
    { (τ^k, pk) }k=1K\{\,(\hat{\tau}_k,\, p_k)\,\}_{k=1}^{K}

矢量化表示:从照片到地图

总规划师打开手机里的老照片,发现放大三倍后全是马赛克。换成电子地图 App 后,车道是几条平滑的线,路沿是折线,路口是节点——同样的信息,画成矢量线条后加载快、看得清、也好修改。VAD 正是这个直觉的工程实现:与其让模型在栅格 BEV 特征图上做密集卷积,不如先把场景“翻译”成一组紧凑的矢量元素。

栅格表示的瓶颈在于分辨率与算力成正比:想要看清五十米外的车道线,就得把特征图做得很大,而大部分像素其实毫无信息。VAD 把车道线、路沿、人行横道等要素抽象成多边形或折线,每个要素附带一个类别标签、一个几何边界和一个状态向量。这些要素经过一个“地图聚合器”被投影到统一的特征空间,形成场景的矢量化表示。

形式化地看,VAD 对每个道路要素做一次小规模的特征提取:把类别编码、几何边界和状态拼接起来,交给一个 MLP 投影成统一维度的向量。

调度员再也不用对着一墙模糊的监控画面皱眉了。地图轻了,思考就快了——这是 VAD 一切设计的第一性原理。

V={MLP( e(ci)⊕bi⊕si )}i=1N\mathcal{V} = \{ \mathrm{MLP}(\, e(c_i) \oplus b_i \oplus s_i\,) \}_{i=1}^{N}
该公式表示:N 个道路元素,每个都由“类别 + 几何 + 状态”三段信息拼成一个向量,再经 MLP 映射成场景特征集合。
  1. 矢量化集合 V\mathcal{V} 是所有道路元素特征构成的集合,相当于电子地图上所有线段的“坐标文件”。
    V\mathcal{V}
  2. 类别编码 e(c_i)c_i 是第 i 个元素的类别,比如“车道线”“路沿”;e(c_i) 把它变成一个稠密向量,让模型知道“这是哪种图元”。
    e(ci)e(c_i)
  3. 拼接操作 ⊕把类别特征、几何框 b_i 和状态特征 s_i 首尾相连,形成一条完整的信息链,就像坐标文件里既要写类型也要写端点。
    e(ci)⊕bi⊕sie(c_i) \oplus b_i \oplus s_i
  4. 统一投影 MLP不同元素原始格式不同,MLP 把拼接后的向量统一映射到同一个特征维度,保证后续注意力机制可以处理。
    MLP(⋅)\mathrm{MLP}(\cdot)

模型结构:目标查询与交叉注意力

有了电子地图,总规划师还需要一种“问问题”的方式。他手里有一叠空白的任务卡,每张卡片代表一个需要关照的对象:一台网约车、一位骑手,或者一个“如果红灯消失会怎样”的假设。这张卡片本身是可学习的,它不知道自己对应谁,但它会主动与地图上的线段做信息交换——用注意力机制“读取”地图,把相关路况写进卡片。VAD 的模型结构正是围绕这种“任务卡”机制展开的。

具体来说,VAD 先用一个场景编码器处理多模态传感器输入,得到 BEV 空间的特征;然后引入一组可学习的 object query(目标查询)。这些查询经过自注意力相互沟通,再通过交叉注意力从矢量化地图中聚合信息。每个查询最终被解码为一个或多个智能体的运动轨迹。

VAD 使用的 transformer 交互,本质上就是一次“对答案”的过程。查询向量先与地图特征的键做相似度比较,相似度越高,权重越大,最后按权重把地图的值取回来。

任务卡每和地图“对一次答案”,就会更清楚自己的处境。VAD 用多层这样的交互,让每张卡片逐渐变成一条具体而可靠的轨迹。

Attn(Q,K,V)=softmax(QK⊤d)V\mathrm{Attn}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d}}\right) V
这是缩放点积注意力的标准公式:Q 是任务卡,K 是地图要素的“检索标签”,V 是地图要素携带的内容;输出是查询读到的路况摘要。
  1. 查询矩阵 QQ 来自目标查询,代表“我想知道这个对象在路网中该怎么走”的提问,相当于任务卡上的问题。
    QQ
  2. 键矩阵 K 与缩放因子 √dK 是每个地图要素的索引;除以 \sqrt{d} 是为了避免点积过大导致 softmax 梯度消失,就像音量太大时先调低音再听。
    QK⊤d\frac{QK^\top}{\sqrt{d}}
  3. softmax 归一化把相似度分数变成一组和为 1 的权重,表示“这张任务卡把注意力分给哪些线段”。
    softmax(⋅)\mathrm{softmax}(\cdot)
  4. 加权聚合 V用权重对地图要素内容 V 做加权平均,输出就是查询从地图中提取到的环境摘要。
    Attn(Q,K,V)\mathrm{Attn}(Q, K, V)

规划预测:画线、打分、选路

总规划师拿着填好的任务卡,开始在电子地图上画候选路线。他不会只画一条,而是画三条:左转绕行、直行再并线、减速等待。每画完一条,他还会凭经验给这条路线打一个置信度分。这个“画线 + 打分”的过程,就是 VAD 的规划预测头。

轨迹解码器逐步生成未来每个时刻的位置。概率化的做法是自回归:每一步都基于已经生成的历史位置和场景上下文,去预测下一个点的坐标。最终每条完整轨迹有一个置信度分数,模型取分数最高的一条作为最终规划轨迹。

调度员最终拍板:选那条最顺、最安全、分数最高的虚线发给司机。轨迹预测的意义,就是把“我觉得能走”变成一条可被方向盘跟踪的数学曲线。

p(τ∣C)=∏t=1Tp(xt,yt∣x<t,C),k^=arg⁡max⁡k pkp(\tau \mid C) = \prod_{t=1}^{T} p(x_t, y_t \mid x_{<t}, C), \qquad \hat{k} = \arg\max_{k} \, p_k
公式表示:整条轨迹的概率等于每一步条件概率的乘积;最终选概率最大的那条候选轨迹作为输出。
  1. 条件上下文 CC 包含矢量化地图、自车状态及其他智能体信息,是每一步预测都依赖的“路况快照”。
    CC
  2. 乘积展开整条轨迹的联合概率被拆成 T 个时刻的条件概率相乘,体现出“走一步看一步”的自回归思想。
    ∏t=1T\prod_{t=1}^{T}
  3. 逐点条件p(x_t, y_t | x_{<t}, C) 表示已知前 t-1 个位置和上下文时,预测当前时刻坐标的条件概率。
    p(xt,yt∣x<t,C)p(x_t, y_t \mid x_{<t}, C)
  4. 取最大值\hat{k} 是所有候选轨迹中置信度最高的那条索引。VAD 在训练时用损失函数同时拉高正确轨迹的分数、压低其他轨迹的分数。
    arg⁡max⁡kpk\arg\max_{k} p_k

AD-MLP结构:轻装调度员与蒸馏

轻装调度员的卡片上只有几行数字:当前车速、前车距离、车道编码、目标方位。这些数字进入几层全连接网络——多层感知机,随后直接输出方向盘转角和油门踏板开度。没有注意力,没有 transformer,甚至没有序列建模;AD-MLP 用最朴素的结构证明:在特定数据集与场景下,简单的 MLP 也能达到基线级性能。

但“简单”不等于“容易训”。直接把一个小网络丢到复杂路况里,往往学不到深层规律。于是 AD-MLP 采用知识蒸馏:先让一个强大的教师模型(例如更宽的 MLP 或 VAD-like 模型)学习场景,再把教师模型的“直觉”——中间层特征或软化后的输出分布——作为监督信号,引导学生模型对齐。学生不需要背整张地图,只需要模仿老师傅的判断。

蒸馏的总损失由两部分组成:任务损失保证学生能完成预测/规划主任务;特征对齐损失让学生中间特征尽量接近教师特征。

老骑手把几十年经验凝成几句口诀:“入弯前减速,看远不看近。”AD-MLP 的蒸馏,就是把老师傅的经验写成学生能背下来的数学形式。

L=Ltask+λ⋅MSE(zT,zS)\mathcal{L} = \mathcal{L}_{\text{task}} + \lambda \cdot \mathrm{MSE}(z_T, z_S)
公式说明:学生模型的最终损失等于任务损失加上教师特征与学生特征之间的均方误差,λ 控制蒸馏强度。
  1. 任务损失 L_task用于衡量预测轨迹与真实轨迹的差距,是学生模型完成本职工作的基础目标。
    Ltask\mathcal{L}_{\text{task}}
  2. 教师特征 z_T教师模型在某一中间层输出的特征向量,被视为“经验浓缩”,富含教师对场景的理解。
    zTz_T
  3. 学生特征 z_S学生模型在同一层的特征输出。蒸馏希望学生特征逐步逼近教师特征,这样学生就学会了教师的抽象能力。
    zSz_S
  4. 平衡系数 λλ 控制“模仿教师”与“完成本职任务”的相对权重,调得太大学生可能僵硬模仿,太小则学不到真本事。
    λ\lambda

实验落地:指标、合规与量产

调度中心要评出优劣,不能只听汇报。局长盯着两块大屏:左边是路线贴合度——预测轨迹和真实轨迹差多远;右边是响应时延——从收到请求到给出路线要多少毫秒。VAD 在复杂路口和长距离预测上明显更聪明;AD-MLP 在时延和内存占用上则让 VAD 望尘莫及。

用于评估预测精度的最常见指标是 minADE:对每个候选轨迹,计算其与真实轨迹在每个时刻的欧氏距离并取平均,最后在所有候选轨迹中取最小值。它衡量的是“模型提供的候选里,最好的一条离真相有多近”。

局长最后签字:VAD 留在云端仿真室做复杂路口安全预审,AD-MLP 装进路口计算卡量产上车。两者一个负责“懂”,一个负责“快”,在安全合规和量产落地的天平上正好互补。

minADE=min⁡k  1T∑t=1T∥y^t(k)−yt∥2\mathrm{minADE} = \min_{k} \; \frac{1}{T} \sum_{t=1}^{T} \left\| \hat{y}^{(k)}_t - y_t \right\|_2
minADE 越小,代表模型至少有一条候选轨迹越接近真实轨迹;但它不反映推理速度,因此要看配套的 FPS 指标。
  1. 候选轨迹编号 k模型通常输出多模式候选,k 遍历所有候选轨迹,min 表示“取最好的那一条比”。
    min⁡k\min_{k}
  2. 逐时刻平均对 T 个未来时刻的误差取平均,让最终数值不受单个异常时刻主导。
    1T∑t=1T\frac{1}{T} \sum_{t=1}^{T}
  3. L2 距离\|\hat{y}^{(k)}_t - y_t\|_2 是第 k 条候选轨迹在 t 时刻的预测位置与真实位置的欧氏距离。
    ∥y^t(k)−yt∥2\left\| \hat{y}^{(k)}_t - y_t \right\|_2
  4. 单位与含义该指标通常以米为单位,值越小说明轨迹越贴合真实驾驶行为。
    minADE\mathrm{minADE}

AI 应用场景

量产域控上的轻量规划部署

阶段:模型训练后压缩与车端推理部署

解决的问题:车规芯片算力普遍只有 8-30 TOPS,VAD 这类大 transformer 模型在端上往往超过实时性预算。传统做法是人工裁剪模型,但精度损失不可控;AD-MLP 的思路是离线用大教师蒸馏出轻量学生,把“老师傅经验”压缩进几 MB 参数中,在端上做到毫秒级推理。

具体案例:某 Tier 1 供应商在 8 TOPS 的征程芯片上部署 AD-MLP 风格的学生模型,输入为前融合特征与矢量化车道线,输出未来 3 秒规划轨迹。经过蒸馏后,模型内存占用从 120 MB 降到 18 MB,端到端推理时延从 110 ms 降到 12 ms,满足量产车对安全响应速度的要求。

复杂路口安全预审与仿真回放

阶段:数据驱动仿真测试与功能安全验证

解决的问题:在无保护左转、红绿灯缺失、施工改道等复杂场景中,栅格表示容易丢失细长车道线语义,导致仿真测试无法复现真实风险。VAD 的矢量化表示把路沿、车道线变成结构化图元,方便仿真器按几何元素重组场景,用于构建对抗性测试用例。

具体案例:一家 Robotaxi 公司把 VAD 用于云端数据闭环:对一万个危险路口片段做矢量化场景重建,聚类出 20 类典型 corner case,再生成高密度虚拟车流进行仿真压测。测试结论被整理为安全报告,提交给法规认证机构备案,显著缩短了路测审批周期。

端到端框架中的预测-规划统一

阶段:模型架构设计与系统集成优化

解决的问题:传统 pipeline 中预测模块与规划模块各自输出,误差累积且难以联合调优。VAD 用一组目标查询同时完成预测与规划:同一张“任务卡”先读地图,再输出多智能体轨迹,最后选择自车轨迹。这样感知、预测、规划可以共享同一套特征与梯度,减少中间环节的信息损耗。

具体案例:某自动驾驶公司重构其 3.0 架构,将原先 5 个子网络的级联链路合并为“矢量化场景编码器 + 目标查询解码器”的统一网络。城市 NOA 场景下,pipeline 中间张量存储减少 60%,长尾场景平均接管次数下降 22%。

Python 演示

python85 行
import numpy as np class Linear:    def __init__(self, in_dim, out_dim, seed=0):        rng = np.random.default_rng(seed)        self.w = rng.standard_normal((in_dim, out_dim)) * 0.02        self.b = np.zeros(out_dim)     def forward(self, x):        return x @ self.w + self.b def relu(x):    return np.maximum(x, 0.0) def softmax(x, axis=-1):    e = np.exp(x - x.max(axis=axis, keepdims=True))    return e / e.sum(axis=axis, keepdims=True) class NaiveAttention:    def __init__(self, dim, seed=1):        rng = np.random.default_rng(seed)        self.wq = rng.standard_normal((dim, dim)) * 0.02        self.wk = rng.standard_normal((dim, dim)) * 0.02        self.wv = rng.standard_normal((dim, dim)) * 0.02     def forward(self, queries, keys, values):        q = queries @ self.wq        k = keys @ self.wk        v = values @ self.wv        attn = softmax((q @ k.T) / np.sqrt(q.shape[-1]))        return attn @ v class MLP:    def __init__(self, dim, hidden, out_dim, seed=2):        rng = np.random.default_rng(seed)        self.fc1 = Linear(dim, hidden, seed=3)        self.fc2 = Linear(hidden, out_dim, seed=4)     def forward(self, x):        h = relu(self.fc1.forward(x))        return self.fc2.forward(h), h def mse_loss(pred, target):    return np.mean((pred - target) ** 2) def make_scene():    # 四维向量: x, y, 类别, 状态    scene = np.array([        [0.0, -10.0, 1.0, 1.0], [0.0, 10.0, 1.0, 1.0],        [-10.0, 0.0, 2.0, 1.0], [10.0, 0.0, 2.0, 1.0],        [0.0, 0.0, 0.0, 0.0],   [5.0, 5.0, 0.0, 0.0]    ], dtype=np.float32)    return scene def main():    scene = make_scene()    obs = np.array([[0.0, 0.0, 1.0, 3.0]], dtype=np.float32)    dim = 4    teacher = MLP(dim, 64, 2)    student = MLP(dim, 8, 2)    attn = NaiveAttention(dim)     for epoch in range(300):        # 教师编码地图元素,模拟 VAD 的矢量化场景特征        t_feat, _ = teacher.forward(scene)        # 目标查询与地图做简化注意力交互        q = attn.forward(obs, t_feat, t_feat)        # 教师给出参考动作,学生用更窄 MLP 模仿        target, _ = teacher.forward(q)        pred_s, h = student.forward(q)        loss = mse_loss(pred_s, target)         grad_out = (pred_s - target) / pred_s.size        grad_h = grad_out @ student.fc2.w.T        grad_h = grad_h * (h > 0)        student.fc2.w -= 0.01 * (q.T @ grad_out)        student.fc2.b -= 0.01 * grad_out.mean(axis=0)        student.fc1.w -= 0.01 * (q.T @ grad_h)        student.fc1.b -= 0.01 * grad_h.mean(axis=0)         if epoch % 50 == 0:            print("epoch", epoch, "loss", round(float(loss), 4)) if __name__ == "__main__":    main()
目的:用纯 NumPy 实现一个微型知识蒸馏流程,演示 AD-MLP 如何让轻量 MLP 学生模仿强教师,并用简化注意力模拟 VAD 的目标查询交互。
  1. class MLP:定义可学习的两层 MLP,既作教师也作学生,区别只在隐藏层宽度。
  2. t_feat, _ = teacher.forward(scene)教师先编码地图矢量元素,相当于总规划师看懂电子地图。
  3. q = attn.forward(obs, t_feat, t_feat)模拟 VAD 中目标查询对地图特征的交叉注意力,让查询读到路况。
  4. target, _ = teacher.forward(q)教师输出参考动作,作为学生学习的“标准答案”。
  5. pred_s, h = student.forward(q)学生用很小的 MLP 前向推理,得到自己的规划动作。
  6. loss = mse_loss(pred_s, target)蒸馏损失:让学生输出尽可能贴近教师输出。
  7. student.fc1.w -= 0.01 * (q.T @ grad_h)梯度下降更新学生第一层,让学生的低维特征逐渐具备教师特征的表征能力。

常见误区

误区我看了论文觉得两家争得不可开交,选边站就行。VAD 是 transformer 豪华方案,AD-MLP 是无脑小网络,肯定有一个能统一天下。

正解VAD 与 AD-MLP 在实际系统中是互补的:VAD 的矢量化场景编码器可以当教师模型,为 AD-MLP 离线生成蒸馏特征;AD-MLP 的量产形态又可以反过来为 VAD 提供在线兜底。好比调度中心既保留全城电子地图,又在每个路口放轻装调度卡,两套体系层级不同、互为冗余,而非争夺同一岗位。

为何常见:论文通常用排行榜对比制造话题,读者容易把“指标上竞争”理解成“路线上对立”。

误区矢量化是什么意思?是不是把激光雷达点云按坐标存进数组,减少画布负担?那 VAD 和点云预处理有什么区别?

正解VAD 的矢量化是指把车道线、路沿、人行横道等语义要素抽象成折线、多边形等图元,并附上类别和状态标签。点云是无结构的稠密几何点,矢量化图元是带语义的结构化对象。类比来说,点云是一堆沙子,矢量化地图是画在纸上的道路简图,两者信息组织方式完全不同。

为何常见:因为“坐标数组”也是向量形式,初学者容易把数学意义上的向量与图形学中的矢量图元混淆。

误区transformer 已经证明注意力是王道,一个纯 MLP 连注意力都没有,怎么可能在自动驾驶这种安全攸关任务上可用?

正解AD-MLP 的结论并非“MLP 打败注意力”,而是“在合理蒸馏和足够数据下,轻量 MLP 可以达到可部署的基线性能”。它牺牲了长程交互建模能力,换来了极低时延和内存占用,并通过蒸馏从教师模型吸收结构化知识。对于 8 TOPS 芯片上的实时规划,这往往是最务实的选项。

为何常见:前几年 transformer 在 NLP/CV 上的成功让大家产生了“无注意力不模型”的锚定效应,忽略了部署约束。

误区VAD 是端到端规划模型,输出直接是自车轨迹,那它是不是跳过了对周围车辆的预测?安全不是打了折扣吗?

正解VAD 把预测与规划统一在同一个目标查询集合里:一张任务卡既预测其他车的未来轨迹,也解码自车的规划轨迹。它并没有取消预测,而是让预测结果以隐式特征的形式参与规划。就好比总规划师在画路线之前,心里早就默默估算了每台车两秒后会到哪,只是没有单独出一个“预测报告”。

为何常见:端到端框架弱化了传统模块边界,外部看起来只输出了一条轨迹,容易误以为中间预测被省略。

误区排行榜上 VAD minADE 比 AD-MLP 低,那 VAD 就是更好的方案,量产当然选精度高的。

正解minADE 只衡量“候选轨迹里最好的一条”与真实轨迹的贴合程度,它既不考虑所选最优候选的置信度是否可靠,也不反映推理延迟、内存占用和功耗。AD-MLP 的 minADE 虽然略大,但 FPS 可能高数倍,在域控芯片上更符合实时约束。工程选型必须把精度、时延、安全冗余放在一起权衡。

为何常见:大家习惯了在学术排行榜上看单一指标,而量产决策依赖的是多目标优化。

面试题

Q1. VAD 在场景表示上的核心创新是?

单选题 · easy

  • A.场景栅格化表达
  • B.场景矢量化表达← 正确答案
  • C.场景点云化表达
  • D.场景像素化表达

答案:B。VAD 用折线、多边形等矢量图元表示车道线与路沿,而不是用栅格像素或原始点云。B 正确;栅格与像素本质相同,点云是 VAD 可选输入而非其表示创新。

Q2. AD-MLP 的网络主干是?

单选题 · easy

  • A.多层感知机← 正确答案
  • B.稀疏Transformer
  • C.图卷积网络
  • D.循环神经网络

答案:A。AD-MLP 的核心主张就是使用轻量多层感知机作为主干,在保证基线性能的同时获得极低的计算开销。其余选项都引入了比 MLP 更重的结构,与论文主旨相悖。

Q3. 关于 VAD 中的目标查询(object query),下列说法正确的有?

多选题 · mid

  • A.初始化自随机噪声
  • B.模型训练时完全冻结
  • C.是一组可学习的向量← 正确答案
  • D.可与地图特征做交互← 正确答案

答案:CD。VAD 的目标查询是一组可学习参数,类似 DETR 的 object query,训练时持续更新,并通过交叉注意力与矢量化地图特征交互。虽然初始化常用随机值,但它不是随机噪声,也不会被冻结,因此 A、B 错误。

Q4. 知识蒸馏中,教师模型的主要作用是?

单选题 · mid

  • A.提供标注路况
  • B.直接控制车身
  • C.提供高维特征参考← 正确答案
  • D.降低数据噪声

答案:C。蒸馏中教师模型提供中间层特征或软标签作为学生学习的参考,学生通过对齐教师特征获得更强的表达能力。教师不参与车端推理,也不负责数据标注。

Q5. 对 minADE 指标的理解,正确的是?

单选题 · mid

  • A.平均位移误差最小候选← 正确答案
  • B.最大位移误差最大候选
  • C.所有候选的平均误差
  • D.只评估轨迹终点误差

答案:A。minADE 对每个候选轨迹逐时刻求 L2 距离并取平均,再在所有候选中取最小值。它评价的是“最好的一条候选有多接近真相”,并非最大误差或终点误差。

Q6. 自回归轨迹预测中,每一步生成的条件包含?

多选题 · hard

  • A.历史轨迹点← 正确答案
  • B.未来激光点云
  • C.场景上下文信息← 正确答案
  • D.上一步输出位置← 正确答案

答案:ACD。自回归模型在预测当前时刻位置时,会用到历史轨迹点、场景上下文和上一步输出位置,形成链式条件依赖。未来激光点云尚未产生,不能作为条件。

Q7. AD-MLP 更适合车端部署的主要原因是?

单选题 · easy

  • A.参数量少推理快← 正确答案
  • B.使用大模型推理
  • C.依赖高精地图
  • D.需要云端算力

答案:A。AD-MLP 采用窄 MLP 主干,参数量小、内存占用低、在嵌入式芯片上推理时延短,这使它更适合量产部署。B、D 与题意相反,C 并不是 AD-MLP 的设计特点。

Q8. 传统级联规划的主要问题是?

单选题 · mid

  • A.单模块已经够准
  • B.误差逐级累积← 正确答案
  • C.计算开销几乎为零
  • D.不需要感知模块

答案:B。感知、预测、规划各自独立训练时,前段误差会传递放大到后段,导致级联累积误差。端到端方案希望通过联合优化缓解这一问题,因此 B 正确。

Q9. 关于 VAD 与 AD-MLP 的差异,正确的有?

多选题 · hard

  • A.VAD 强调矢量化表示← 正确答案
  • B.AD-MLP 强调轻量结构← 正确答案
  • C.VAD 不使用任何查询机制
  • D.AD-MLP 可通过蒸馏获得← 正确答案

答案:ABD。VAD 以矢量化场景表示和查询式解码为核心,AD-MLP 以纯 MLP 加知识蒸馏为核心。VAD 恰恰大量使用目标查询与交叉注意力,因此 C 错误。

Q10. 在 8 TOPS 车规芯片上部署端到端规划,较稳妥的路线是?

单选题 · extreme

  • A.直接部署大VAD模型
  • B.蒸馏为AD-MLP形态← 正确答案
  • C.无限提高栅格分辨率
  • D.删除所有轨迹预测头

答案:B。大 VAD 模型在低算力芯片上时延过高,提高栅格分辨率只会加剧算力消耗,删除预测头则破坏安全冗余。相比之下,用强教师蒸馏出 AD-MLP 形态学生模型,可在精度与实时性之间取得平衡,是量产更稳妥的路线。