1. 课程导入

自动驾驶系统本质上是一个强实时、高可靠、资源受限的嵌入式智能系统。无论是前视摄像头、激光雷达、毫米波雷达,还是多传感器融合后的 BEV 感知网络,其模型规模在过去五年中呈指数级增长。一个典型的 BEV 感知模型可能包含数千万甚至上亿参数,单帧推理需要数十亿次乘加运算(MACs)。与此同时,车载计算平台的算力、功耗与散热预算却极为有限,这就构成了本课程要解决的核心矛盾:模型能力增长与车端算力约束之间的鸿沟。

一、计算瓶颈从哪里来

要理解稀疏化与结构剪枝的价值,先要看清瓶颈的真实来源。自动驾驶模型的计算压力并非均匀分布,而是集中在几个关键环节:

  • 骨干网络的特征提取:ResNet、VoVTr、Swin 等主干在浅层高分辨率阶段产生大量激活值,卷积或注意力的计算密度极高。
  • 多尺度特征融合:FPN、PAN、BiFPN 等结构需要反复上采样、下采样与逐元素相加,带来额外的内存带宽消耗。
  • 时序与多帧融合:为提升稳定性和速度估计,感知模型常融合 3~5 帧历史特征,计算量随帧数近似线性增长。
  • 决策规划网络:基于 Transformer 的轨迹预测与规划模型,其自注意力复杂度随场景中智能体数量呈平方增长。

这些环节共同导致一个结果:算力瓶颈往往不是“算不动”,而是“搬不动”。在车端 SoC 上,内存带宽和功耗墙常常比峰值算力更早成为限制因素。因此,稀疏化与结构剪枝的目标不仅是减少 MACs,更是减少无效计算、降低访存压力、提升硬件利用率。

核心判断:在自动驾驶场景中,一个“更小但结构规整”的模型,往往比一个“参数更少但稀疏不规则”的模型更容易在车端芯片上获得真实加速。

二、稀疏化与结构剪枝的工程价值

稀疏化与结构剪枝属于模型压缩的两条主线。稀疏化关注将权重或激活中的大量冗余元素置零,形成稀疏张量;结构剪枝则关注以通道、滤波器、注意力头、层为粒度,直接移除整块结构。两者在工程上的价值可以归纳为四个层面:

  1. 降低延迟:减少实际参与计算的乘加次数,缩短单帧推理时间,为控制模块留出更多安全余量。
  2. 降低功耗与散热压力:车规级芯片对功耗极为敏感,剪枝后模型更易满足被动散热或风冷设计。
  3. 提升部署灵活性:更小的模型可以部署到中低算力平台,支持多车型、多配置的快速适配。
  4. 改善硬件利用率:结构化剪枝后的规整张量更容易被 TensorRT、NPU 编译器高效调度。

下面这张图展示了从原始模型到车端部署的典型压缩路径,以及各环节对应的工程目标。

自动驾驶模型压缩与部署路径 原始感知模型 高精度 / 高算力 参数量大、延迟高 稀疏化训练 权重/激活置零 保留表达能力 结构剪枝 通道/层/注意力头 移除整块冗余 微调恢复 精度回归 校准 BN / 量化 车端部署目标与收益 延迟下降 单帧推理更快 安全余量更大 功耗降低 散热压力减小 满足车规约束 内存占用下降 带宽压力缓解 多模型共存 平台适配 中低算力 多车型复用

三、典型场景:从 BEV 感知到规划模型

以一个量产 BEV 感知模型为例,其骨干网络在 640×640 输入下,单帧 MACs 约为 120G,其中约 60% 集中在浅层高分辨率卷积。通过结构化通道剪枝,将浅层通道数压缩 40%,整体 MACs 可降至约 78G,而 mAP 仅下降 0.6 个百分点。再配合 INT8 量化与 TensorRT 部署,端到端延迟从 42ms 降至 26ms,满足 30ms 的实时控制周期要求。

在决策规划侧,基于 Transformer 的轨迹预测模型常面临智能体数量波动问题。当场景中智能体从 10 个增加到 50 个时,自注意力计算量增长约 25 倍。此时采用注意力头剪枝与稀疏注意力,可以在保持轨迹预测误差基本不变的前提下,将最坏情况延迟控制在预算内。

工程经验:剪枝不是一次性动作,而是“训练—剪枝—微调—再剪枝”的迭代过程。每轮剪枝后都需要用真实路测数据做精度回归,避免只在验证集上过拟合。

四、常见误区与复盘

初学者在稀疏化与剪枝实践中容易陷入以下误区:

误区 表现 正确做法
只看参数量 参数减少 50%,但延迟几乎不变 关注 MACs、访存量和硬件实际加速比
追求非结构化稀疏 稀疏度很高,但 GPU/NPU 无法加速 优先结构化剪枝,匹配硬件规整计算
剪枝后不微调 精度断崖式下降 剪枝后必须进行充分微调与 BN 校准
忽略时序稳定性 单帧指标正常,但视频抖动明显 用多帧序列评估,关注时序一致性

这些误区的共同根源,是把剪枝当成纯粹的“模型压缩”问题,而忽略了它同时是一个硬件协同设计问题。一个在服务器 GPU 上表现良好的稀疏模型,未必能在车端 NPU 上获得同等收益。因此,本课程始终强调“算法—硬件—数据”三位一体的工程视角。

五、课程学习目标与知识框架

本课程围绕“能理解、能动手、能落地”三个层次展开,学习目标如下:

  • 理解层:掌握稀疏化、结构化剪枝、量化、知识蒸馏的基本原理与适用边界。
  • 方法层:熟悉 L1 正则、BN 缩放因子、通道重要性评分、迭代剪枝等主流方法。
  • 工具层:能够使用 PyTorch、TensorRT、ONNX 等工具完成剪枝与部署验证。
  • 工程层:能够针对 BEV 感知、轨迹预测等自动驾驶任务设计压缩方案并评估收益。

整体知识框架可以概括为四条主线:瓶颈分析 → 稀疏化方法 → 结构剪枝方法 → 部署与评估。后续章节将依次展开,从理论到代码,从单模块到端到端系统,逐步构建完整的工程能力。

# 典型剪枝流程伪代码
model = build_bev_model()
model.load_state_dict(pretrained)

for epoch in range(warmup_epochs):
    train(model, dataloader)          # 正常训练

for round in range(prune_rounds):
    importance = compute_channel_importance(model, calib_loader)
    model = prune_channels(model, importance, ratio=0.2)
    model = finetune(model, train_loader, epochs=10)
    evaluate(model, val_loader)       # 精度回归

export_onnx(model)
build_tensorrt_engine(onnx_path, int8=True)
注意:剪枝比例不是越高越好。在自动驾驶场景中,感知精度下降会直接传导到决策安全,因此任何压缩方案都必须以“安全指标不退化”为硬约束,而不是单纯追求压缩率。

通过本章的学习,你已经建立了对计算瓶颈、压缩价值和工程约束的整体认知。接下来,我们将从最基础的稀疏性概念出发,逐步深入到可落地的结构化剪枝技术。