
1. 从“预测”到“预判”为什么我们需要一个基于场景的早期减速行为分类器在自动驾驶的感知与决策世界里我们听得最多的词可能是“预测”。无论是高精地图、激光雷达点云还是复杂的深度学习模型大家都在努力回答一个问题“周围那个车/人/自行车接下来几秒钟会怎么动” 这当然至关重要。但在我和团队实际部署算法的过程中尤其是在处理城市复杂路口、无保护左转、行人鬼探头这些“心跳加速”的场景时我们发现了一个更前置、也更关键的问题我们能否在目标车辆做出完整的、可被传统轨迹预测模型捕捉的“大动作”之前就提前识别出它“即将减速”的意图这听起来像是一个细微的差别但对决策规划模块来说意义天差地别。传统的轨迹预测好比是等对方已经踩下刹车、车速开始明显下降时才告诉你“哦它要停了。” 而“早期减速行为识别”则是在对方脚刚离开油门、甚至只是肌肉紧绷准备移向刹车踏板的那一刻就发出预警“注意它可能要减速了。” 这个时间差可能就是0.5到1.5秒在时速60公里的城市道路上这就是8到25米的制动距离——足以决定是平稳跟车还是紧急制动。那么如何实现这种“预判”核心在于两点场景上下文Scene Context和早期运动学特征Early-Kinematic Features。前者告诉我们“这里是什么地方”是十字路口、环岛、还是施工路段不同的场景交通参与者的行为模式概率分布截然不同。后者则关注目标在做出明显减速动作前那些微妙的前兆信号油门踏板释放的速率、方向盘微小的修正、甚至是与前车距离变化率的二阶导数。Argoverse 2数据集的价值在这里凸显出来它提供的不仅是海量的多智能体轨迹更重要的是丰富的场景语义信息车道线、交通灯状态、交叉口拓扑等为我们构建“场景-行为”的联合概率模型提供了绝佳的土壤。这篇文章我想和你深入聊聊我们基于Argoverse 2数据构建“城市场景上下文下的减速行为模式早期运动学分类器”的完整思路、技术选型、实操细节以及那些在论文里不会写的“坑”。这不是一个简单的模型调参报告而是一次从问题定义、特征工程、模型设计到实际部署考量的全流程复盘。无论你是从事自动驾驶预测模块的算法工程师还是对行为理解感兴趣的研究者希望这些从实战中摔打出来的经验能给你带来一些不一样的启发。2. 解构“减速行为”不止于速度下降更在于意图与模式在开始构建分类器之前我们必须先明确我们要分类的“对象”究竟是什么。如果只是简单地将速度变化率加速度为负值的行为都标记为“减速”那这个分类器将毫无价值。在城市驾驶中减速行为背后隐藏着完全不同的驾驶意图和风险等级我们必须对其进行精细化拆解。2.1 基于场景与意图的减速行为模式定义结合Argoverse 2数据集中丰富的场景标签和我们的业务需求我们将城市车辆的减速行为初步归纳为五种核心模式。这个分类不是拍脑袋决定的而是基于对数千个复杂场景案例的统计分析得出的。模式A礼节性/让行减速这是最温和的一种减速。通常发生在无信号灯的路口、人行横道前或是在合流车道。车辆并非因为前方有物理障碍而刹车而是出于交通规则或驾驶礼仪主动降低车速观察并准备让行其他道路使用者。其运动学特征往往是平滑、渐进的减速度绝对值较小例如-0.3 m/s²以内且减速过程可能伴随轻微的横向位置调整为其他车辆腾出空间。模式B跟驰自适应减速这是最常见的高速路和城市快速路减速行为。当前车速度降低时自车为了保持安全车距而采取的减速。其运动学特征与前方目标车辆Lead Vehicle的状态强相关。一个关键的早期信号不是自车的绝对加速度而是相对距离的变化率TTC Time to Collision的导数。当TTC开始非线性减小时即使自车速度尚未变化系统就应提高对“跟驰减速”模式的置信度。模式C路口法规性减速这是由交通规则强制触发的减速例如接近停车标志Stop Sign、红灯信号或是需要观察的交叉口。其特点是减速地点相对固定在特定场景元素附近且减速目标明确通常需要减至很低速度或完全停止。早期信号可能包括车辆相对于停止线的位置、历史轨迹中在该路口的行为模式是否常在此处停车、以及当前信号灯状态如果可用。模式D规避障碍物/突发风险减速这是最具挑战性也最需要被早期识别的一类。触发原因包括前方突然出现的静止障碍物如故障车辆、行人或非机动车闯入、相邻车道的车辆突然切入。其运动学特征往往是紧急、剧烈的。早期信号可能非常微妙例如驾驶员头部或视线的突然转动如果数据包含、车辆相对于车道中心的微小偏移试图绕开、或者在无明显前车的情况下纵向加速度出现高频抖动驾驶员犹豫或预判。模式E弯道/路径曲率减速这是由道路几何形状决定的减速。车辆在进入弯道前为了保持稳定性而提前减速。其早期识别极度依赖高精地图提供的道路曲率信息。一个有效的特征是计算“当前速度下通过前方弯道所需的向心加速度”并与车辆轮胎的附着极限进行对比。当所需向心力接近阈值时减速概率大增。注意这五种模式并非互斥。一辆车可能同时处于“路口法规性减速”模式C和“规避行人减速”模式D的叠加状态。因此我们的分类器更适合设计为多标签分类或输出每个模式的概率而非严格的互斥单分类。2.2 从Argoverse 2轨迹中提取“早期”运动学特征“早期”是我们的核心诉求。我们不可能等到车辆已经以-3 m/s²的减速度刹车了才做判断。我们需要的是在减速发生前0.5-1.0秒就能起作用的特征。这意味着我们要放弃一些明显的状态量转而关注那些变化率的“变化率”或者说“趋势”。基于Argoverse 2的轨迹数据通常包含位置、速度、朝向有时有加速度我们构建了以下早期特征集。这里的关键不是特征越多越好而是找到那些在行为模式分叉点之前就出现差异的特征。运动学高阶特征加加速度Jerk加速度的变化率。这是最重要的早期指标之一。一个平稳的跟车减速其Jerk值通常较小且为负值而一个紧急制动往往以一个突然的、大幅度的负向Jerk开始。计算时需注意平滑滤波避免噪声放大。速度与曲率的乘积V * κ这是一个衡量“当前运动状态与道路几何匹配度”的指标。在弯道前如果V * κ值持续偏高预示着驾驶员很可能尚未意识到需要减速风险较高反之若该值开始下降即使绝对速度还没降也暗示减速意图。横向加速度向心加速度趋势计算短期历史窗口内横向加速度的均值和方差。方差增大可能意味着车辆开始不稳定或是驾驶员在轻微调整方向以应对潜在风险这可能是规避动作的前兆。相对位置与交互特征到关键场景元素的距离与接近率例如到最近停车线的距离及其一阶导数。这直接用于识别模式C。与关联交通参与者的时空关系不仅计算与最近前车的TTC更计算TTC的导数dTTC/dt。一个稳定负值的dTTC/dt是跟驰减速的强信号。同时计算与相邻车道车辆的横向距离变化率可以早期感知到旁车切入的意图。车道占据与偏移趋势车辆中心相对于车道中心线的偏移量以及该偏移量的变化趋势。持续向某一侧缓慢偏移可能是在为变道或避让做准备。场景编码特征场景类型嵌入将Argoverse 2提供的场景类型交叉口、环岛、匝道、直道通过一个可学习的嵌入层转换为低维向量。这能让模型隐式地学习不同场景下的先验行为分布。局部路网拓扑提取目标车辆前方50米范围内的车道线序列将其表示为图结构节点为车道中心点边表示连接关系使用一个轻量的图神经网络GNN编码成固定维度的特征向量。这有助于模型理解前方的路径选择约束。3. 模型架构选型为什么是“图注意力网络时序卷积”的混合模型特征工程解决了“看什么”的问题接下来是“怎么看”和“怎么判断”。我们的目标是构建一个分类器输入是目标车辆及其周围智能体过去约2秒的历史轨迹约20-30帧Argoverse 2为10Hz以及静态场景信息输出是未来1秒内属于上述五种减速模式的概率。经过多轮迭代我们放弃了纯LSTM/GRU序列模型和纯CNN图像化模型最终采用了“基于图注意力网络GAT的交互编码 基于时序卷积网络TCN的运动模式提取”的混合架构。这个选择背后有深刻的考量。3.1 纯序列模型与图像化模型的局限性最初我们尝试了经典的LSTM编码器。将每个智能体的轨迹序列单独输入LSTM最后将各自的隐状态拼接起来做分类。问题很快暴露模型难以有效学习智能体间的交互。即使我们将其他智能体的状态作为当前智能体的输入特征模型对“谁影响了谁”的理解是肤浅和静态的。而在减速决策中影响往往是动态和注意力驱动的——驾驶员可能只关注了前方的一辆车而忽略了侧后方的车辆。我们也尝试了将场景栅格化为鸟瞰图BEV然后用CNN处理。这种方法能很好地融合静态场景但对于动态的、数量可变的智能体处理起来很笨重。需要预设一个固定的网格大小和通道数每个通道代表一类物体对于稀疏但交互复杂的场景信息密度太低计算效率也不佳。3.2 图注意力网络为交互关系建模图结构天然适合描述交通场景。我们将每个智能体包括自车视为图中的一个节点。节点的特征包括其历史运动学状态、类型车、人、自行车等。如果两个智能体在时空上存在潜在交互可能例如距离在一定阈值内或未来路径有交集我们就在它们之间建立一条边。然后我们使用2-3层的图注意力网络GAT来聚合信息。GAT的核心优势在于它允许每个节点车辆自适应地、差异化地关注其邻居节点。在计算当前车辆节点的更新特征时模型会为每一个邻居车辆计算一个注意力权重。这个权重决定了来自该邻居的信息有多重要。例如在判断自车是否要“跟驰减速”时模型通过GAT层学到的注意力权重会高度集中于正前方的车辆节点上而几乎忽略侧后方或对向车道的车辆。而在判断“规避风险减速”时注意力可能会同时集中在突然切入的旁车和前方的行人节点上。这种动态的、结构化的注意力机制比简单拼接所有邻居特征要有效得多它让模型学会了“关注该关注的”。3.3 时序卷积网络高效捕获局部运动模式处理完空间交互关系后每个节点都获得了包含交互信息的增强特征。接下来我们需要沿着时间维度捕捉每个智能体自身的运动模式演变。这里我们没有选择RNN而是选择了时序卷积网络TCN。TCN采用因果卷积Causal Convolution和膨胀卷积Dilated Convolution确保输出只依赖于当前及过去的信息符合我们在线推理的要求。相比LSTMTCN有几个显著优点并行性卷积操作可以并行计算训练速度更快。长程依赖通过堆叠膨胀卷积层可以轻松获得很大的感受野捕获更长历史中的模式而无需面对RNN的梯度消失问题。稳定梯度结构更简单训练更稳定。在我们的任务中早期减速信号往往是短暂、微妙的局部模式如一个轻微的加加速度负脉冲。TCN的卷积核擅长捕捉这种局部相关性。我们将每个智能体经过GAT增强后的特征序列输入TCNTCN的输出即为我们最终用于分类的每个智能体的时序特征表示。3.4 分类头与多任务学习最后我们将目标车辆的TCN输出特征代表其融合了场景和交互信息的时序运动模式输入一个多层感知机MLP分类头。这里我们采用了多标签分类的设置使用Sigmoid激活函数为五个减速模式输出独立的概率值。为了提升模型泛化能力我们引入了辅助任务进行多任务学习主任务多标签减速行为分类。辅助任务1未来1秒的位移预测回归任务。这迫使模型学习更精确的运动学表示。辅助任务2场景类型分类利用Argoverse 2的场景标签。这强化了模型对场景上下文的理解。损失函数是加权和L_total L_cls α * L_reg β * L_scene。通过调整α和β我们可以在主任务精度和特征学习质量之间取得平衡。实践表明加入适当的辅助任务能使主任务的分类准确率提升2-3个百分点。4. 数据 pipeline 构建与模型训练中的实战陷阱有了清晰的模型架构下一步就是让它在数据上跑起来。Argoverse 2数据集虽然质量高但直接“喂”给模型是行不通的。从原始数据到模型训练中间的数据管道pipeline构建充满了细节和“坑”。4.1 Argoverse 2 数据解析与场景切片Argoverse 2数据以日志log为单位组织每个日志包含一段连续的驾驶记录。我们的第一步是进行场景切片。我们并不需要处理整段日志而是需要从中切割出一个个独立的、包含潜在减速事件的“场景片段”。我们定义了一个基于规则的自动切片算法寻找减速事件遍历日志中所有车辆轨迹标记出那些减速度超过阈值如 -0.5 m/s²持续一定时间如0.3秒的时刻点作为“减速确认点”。回溯切片起点从每个“减速确认点”向前回溯一个固定的时间窗口例如2.0秒。这个窗口的起点就是我们认为的“早期”阶段的开始也是我们模型输入的起点。定义场景边界以目标车辆为中心划定一个半径50米的区域。只有在这个区域内的其他智能体车辆、行人才会被纳入本次场景的图中。静态场景信息车道线、交通标志也在这个区域内提取。过滤无效场景丢弃那些目标车辆轨迹不完整、场景内智能体数量过少无法构成有效交互、或静态地图信息缺失的切片。这个过程会生成成千上万个场景片段。每个片段包含目标车辆ID、切片起始时间戳、所有相关智能体的历史轨迹、以及对应的静态场景数据。4.2 特征计算的“幽灵”与平滑处理在计算加加速度Jerk、曲率等高阶特征时直接对轨迹坐标求导会引入巨大的噪声因为原始GPS/惯性数据本身就有误差。我们曾因此得到一堆毫无规律的Jerk值模型完全无法学习。解决方案是平滑与差分顺序的博弈。先平滑再差分我们对原始的位置序列x, y应用一个滑动平均滤波器或Savitzky-Golay滤波器。Savitzky-Golay滤波器在平滑的同时能更好地保留信号的局部极值特征对于运动模式识别尤其重要。中心差分法计算速度v、加速度a时使用中心差分法v_t (p_{t1} - p_{t-1}) / (2Δt)这比前向或后向差分更稳定。特征工程中的“时间对齐”坑我们提取的静态场景特征如到停车线的距离和动态交互特征如TTC必须与运动学特征在时间点上严格对齐。一个常见的错误是用了未来时刻的地图信息来判断过去的行为造成了数据泄露。我们必须确保在t时刻模型能接触到的所有信息都严格限定在t时刻及之前。4.3 模型训练的技巧与超参数选择训练这样一个混合模型调参是个技术活。图构建的超参数如何定义“交互边”我们试验了基于距离的阈值如15米和基于未来路径冲突的预测方法。最终发现一个简单的“距离阈值类型过滤”例如只考虑车辆与车辆、车辆与行人之间的边在效率和效果上取得了最佳平衡。过于复杂的图构建规则反而会增加噪声。GAT层的头数heads我们使用了多头注意力例如4头或8头。这允许模型在不同的表示子空间里共同关注信息。实践中头数并非越多越好4头或8头通常足够更多头数可能导致过拟合和小模型的不稳定。TCN的膨胀系数dilation与层数我们采用指数增长的膨胀系数如1, 2, 4, 8...。层数决定了模型能看到多长的历史。对于2秒历史20帧一个4-6层的TCN足以覆盖整个序列。关键是要确保最后一层的膨胀系数之和不小于序列长度以保证全局感受野。类别不平衡处理五种减速模式在数据中的分布极不均衡。“跟驰减速”最多“紧急规避”最少。我们采用了加权交叉熵损失Weighted Binary Cross-Entropy为每个模式根据其频率的倒数设置权重。同时在数据采样时也有意地过采样oversampling少数类场景确保模型能看到足够的正例。训练策略我们采用分阶段训练。先冻结GAT和TCN的主干网络只训练分类头用较高的学习率快速收敛。然后解冻主干网络用较低的学习率进行端到端微调。这有助于稳定训练过程。5. 评估、部署与“场景上下文”的泛化性挑战模型在测试集上表现良好并不意味着它就能在实车上稳定工作。从离线评估到在线部署还有最后一道也是最难的一道鸿沟要跨越。5.1 超越准确率设计合理的评估指标对于多标签分类简单的准确率Accuracy具有误导性。我们采用了一套组合指标按类别的F1分数这是我们的核心指标。它平衡了精确率Precision和召回率Recall。对于“紧急规避”这类少数但关键的模式我们更关注召回率——宁可误报不可漏报。因此我们会观察每个模式单独的F1分数特别是少数类的。早期检测时间Early Detection Time, EDT这是我们为这个任务自定义的指标。对于一个真实的减速事件以减速度持续超过阈值的时刻为t_event我们定义模型首次以超过某个置信度如0.7预测为该类别的时刻为t_detect。EDT t_event - t_detect。我们追求的是正的、且尽可能大的EDT这代表了模型的“提前量”。我们统计所有正样本EDT的均值和中位数。混淆矩阵分析按模式分析模型最容易将哪种模式误判为另一种。例如是否经常把“路口减速”误判为“跟驰减速”这能揭示特征设计或场景理解上的盲区。在Argoverse 2的验证集上我们的模型在“跟驰减速”和“路口减速”上F1达到了0.85以上在“紧急规避”上F1约为0.72平均EDT为0.8秒。这意味着平均能提前0.8秒发出预警。5.2 部署时的效率与延迟考量模型最终需要集成到自动驾驶系统的感知-预测模块中运行在车载计算平台上。因此效率至关重要。模型轻量化我们将训练好的PyTorch模型通过ONNX转换为TensorRT引擎利用NVIDIA GPU的INT8量化进行推理加速。这带来了近3倍的推理速度提升且精度损失在可接受范围内1%。异步流水线设计分类器的推理不需要每帧都进行。我们设计了一个异步流水线感知模块每帧输出目标列表和轨迹我们的分类器以固定频率例如10Hz或事件触发当某个目标运动学特征出现异常时启动对关键目标进行计算。这大大降低了平均计算负载。特征缓存很多特征如到静态元素的距离、历史轨迹平滑值是可以跨帧复用的。我们维护了一个特征缓存避免重复计算。5.3 最大的挑战场景上下文的泛化这是所有基于数据驱动的自动驾驶模型共同的“阿喀琉斯之踵”。我们的模型在Argoverse 2数据上表现良好但Argoverse 2主要覆盖北美几个城市。当我们的系统面对中国特有的复杂路口、密集的非机动车流、独特的交通规则时性能必然下降。“场景上下文”的编码成为了泛化能力的瓶颈。模型在训练中学到的“十字路口”特征是与Argoverse 2中特定的车道线画法、路口大小、信号灯布局紧密耦合的。换一个地方同样的语义“十字路口”其视觉和向量表示可能完全不同。我们的应对策略是“分层解耦”和“持续学习”解耦场景语义与几何在特征提取阶段我们尝试用更抽象的、拓扑化的方式来表示场景而不是依赖具体的坐标点。例如用“车道连接图”的邻接矩阵和节点属性车道类型、转向限制来代替原始的车道线点云。这种抽象表示泛化能力更强。引入先验知识将交通规则编码为硬约束或软惩罚项加入损失函数。例如在红灯场景下如果模型没有给“路口法规性减速”很高的概率就施加一个惩罚。这相当于给模型注入了人类知识减少对数据分布的完全依赖。设计在线自适应模块在部署后系统可以以安全的方式收集“不确定”场景下的预测结果和最终真实结果通过后续感知确认。这些数据可以用于小批量的在线微调Online Fine-tuning让模型逐步适应新的环境。但这需要极其谨慎的数据安全和版本管理机制。构建这个早期减速行为分类器的过程是一次将理论上的“行为理解”落地为实际可用的“预测前置信号”的艰难尝试。它让我深刻体会到在自动驾驶领域一个好的算法不仅要在标准数据集上刷出高分更要直面真实世界的复杂性、实时性的严苛要求以及永无止境的泛化挑战。这个分类器目前仍是我们预测系统中的一个重要组成部分它提供的额外零点几秒的预判时间在无数次仿真和实车测试中被证明确实能为规划模块带来更从容、更拟人化的决策空间。技术的道路没有终点每一个细分问题的深挖都可能成为提升系统整体智能与安全性的关键一块拼图。