本节摘要:自动驾驶要处理时序(轨迹、视频)。本节讲 RNN/LSTM/GRU 和序列模型——时序感知和预测的工具。
阅读完本节,你应当能够:
自动驾驶很多数据是时序:跟踪轨迹、行为预测、视频理解。RNN 专为时序设计,记忆历史信息。
RNN(循环神经网络)处理序列,每步输出依赖前步:

RNN 有梯度消失问题,长序列记忆差。LSTM 和 GRU 用门控解决:
LSTM(长短期记忆)用三个门:
LSTM 解决梯度消失,长序列好。
GRU(门控循环单元)简化 LSTM,少一个门,速度快,效果接近。
| 应用 | 说明 |
|---|---|
| 轨迹预测 | 历史轨迹推未来 |
| 多目标跟踪 | 时序关联 |
| 行为预测 | 时序行为识别 |
| 视频理解 | 时序场景理解 |
| 信号灯状态 | 时序确认状态 |
# LSTM 轨迹预测 lstm = nn.LSTM(input_size=2, hidden_size=64, batch_first=True) # 输入历史轨迹 (batch, seq_len, 2) out, (h, c) = lstm(history_trajectory) # 预测未来轨迹 future = decoder(h) # 未来 N 步位置
| 维度 | RNN | Transformer |
|---|---|---|
| 并行 | 串行,慢 | 并行,快 |
| 长序列 | LSTM 较好 | 自注意力好 |
| 计算 | O(n) | O(n²) |
| 趋势 | 被 Transformer 取代 | 主流 |
Transformer 在时序任务逐渐取代 RNN(并行、长序列好)。
轨迹预测是序列到序列任务(历史序列→未来序列),可用 Encoder-Decoder:
⚠️ RNN 被取代:Transformer 在时序任务逐渐取代 RNN(并行、长序列好)。新自动驾驶感知多用 Transformer,RNN/LSTM 仍有用但非主流。
💡 关键直觉:RNN 处理时序(轨迹/跟踪/行为预测),LSTM/GRU 门控解决梯度消失。自动驾驶用于轨迹预测、跟踪时序。趋势是 Transformer 取代 RNN(并行、长序列好)。
下一节讲 GAN。
RNN 每步计算 ht = tanh(W·[ht-1, xt] + b),把上一时刻的隐藏状态和当前输入一起"折叠"进新的隐藏状态。理论上 RNN 能记住任意长的历史,但实际训练时,梯度沿时间反向传播会连乘很多次权重矩阵,导致梯度指数级缩小(梯度消失)或爆炸(梯度爆炸)。LSTM 用三个门把"记忆"和"输入输出"分开:遗忘门决定旧记忆保留多少,输入门决定新信息写入多少,输出门决定当前输出多少。记忆通过细胞状态以逐元素相加的方式传递,梯度可以直接沿这条"直线"回流,从而缓解消失问题。GRU 把输入门和遗忘门合并成更新门,参数更少、训练更快。
# LSTM 前向(简化) f = sigmoid(Wf @ [h_prev, x]) # 遗忘门 i = sigmoid(Wi @ [h_prev, x]) # 输入门 c = f * c_prev + i * tanh(Wc @ [h_prev, x]) o = sigmoid(Wo @ [h_prev, x]) h = o * tanh(c)
虽然 Transformer 在时序任务上逐渐成为主流,RNN 与 LSTM 仍有一席之地:一是轻量——LSTM 单步计算简单,适合 10Hz 的预测模块;二是增量推理——RNN 天然按时间步推进,不需要像 Transformer 那样缓存整段历史;三是和检测器解耦方便,老代码栈迁移成本低。实际落地时,轨迹预测模块常把 LSTM 输出与车道线特征拼接后接一个 MLP 输出未来轨迹,这个简单结构在不少量产方案里依然可靠。训练上要注意时序数据的分段(按场景切段而不是随机切片)、标签的归一化(用相对坐标而不是绝对坐标),以及多步递推预测时的误差累积处理。对 RNN 类模型,推理时的长度泛化也是个坑:训练时序列长度固定,部署时历史轨迹长短不一。常见做法是把输入轨迹固定到最近 30 步,不足的补零并给 mask,超过的截断,保证推理与训练分布一致。
补充一个评价视角:判断一个时序任务该用 RNN 还是 Transformer,先看序列长度和实时性要求。轨迹预测的输入序列通常只有 10-30 步,LSTM 完全够用且延迟低;而 BEV 感知要同时建模多帧多视角的时空关系,序列长、结构复杂,Transformer 更合适。另一个实用角度是推理硬件:RNN 的串行依赖在 GPU 上并行度低,但在 CPU 或 NPU 上跑起来反而简单;Transformer 的矩阵乘法天然并行,更适合 GPU 架构。选型时把"序列结构、实时性、硬件架构"三件事一起摆上桌,结论通常就清楚了。