4. 自动驾驶模型特点
自动驾驶模型不是单一网络,而是由多种结构范式拼接而成的复合系统。BEV感知负责把多相机、激光雷达、毫米波雷达统一到鸟瞰图空间;Transformer承担跨模态、跨视角的全局关系建模;CNN骨干提取局部纹理与几何特征;多任务头同时输出检测、分割、车道线、可行驶区域、轨迹预测等结果;时序融合模块则把历史帧信息压缩进当前帧。理解这些模块的参数分布与冗余特征,是后续稀疏化与结构剪枝能否安全落地的前提。
一、核心原理:参数分布决定剪枝策略
从参数总量看,CNN骨干通常占据最大比例,尤其在ResNet、RegNet或VoVNet等结构中,卷积层参数可占全模型60%以上。但参数多不等于计算量大:深度可分离卷积、1×1卷积和分组卷积的参数占比与FLOPs占比往往不一致。Transformer模块参数集中在Q/K/V投影、FFN和LayerNorm,其中FFN常占Transformer块参数的2/3左右,但注意力矩阵的计算量随序列长度平方增长。BEV感知模块的参数可能不多,却对空间对齐和坐标变换极其敏感。多任务头的参数占比通常较小,但共享骨干与任务特定分支之间的梯度冲突会显著影响剪枝后的精度恢复。
二、方法流程:从参数画像到冗余定位
建议按以下流程建立模型画像:
- 模块级参数统计:按BEV、Transformer、CNN骨干、多任务头、时序融合五类分别统计参数量、FLOPs、激活值大小。
- 通道重要性评估:对卷积层使用L1/L2范数、BN缩放因子或Taylor一阶重要性;对注意力层使用注意力熵、头输出方差。
- 结构化分组:把耦合紧密的层划为同一剪枝组,例如残差块内的卷积、Transformer块内的QKV与输出投影。
- 敏感度扫描:逐组施加不同剪枝率,记录mAP、NDS、车道线IoU、轨迹ADE等指标变化。
- 冗余定位:找出“高参数占比+低敏感度”的组,作为优先剪枝对象。
# 示例:按模块统计参数与FLOPs
for name, module in model.named_modules():
if isinstance(module, (nn.Conv2d, nn.Linear)):
params = sum(p.numel() for p in module.parameters())
flops = profile_flops(module, input_shape)
print(f"{name:60s} params={params/1e6:.2f}M flops={flops/1e9:.2f}G")
三、参数分布与冗余特征对比
| 模块 | 典型参数占比 | 计算特征 | 冗余表现 | 剪枝风险 |
|---|---|---|---|---|
| CNN骨干 | 50%~70% | 卷积密集,局部感受野 | 通道冗余高,BN缩放因子小 | 低,适合优先剪枝 |
| Transformer | 15%~30% | 注意力平方复杂度,FFN占大头 | 注意力头冗余、FFN中间维度冗余 | 中,需保留跨模态对齐能力 |
| BEV感知 | 5%~15% | 坐标变换、采样、池化 | 空间采样点存在冗余 | 高,剪枝易破坏几何对齐 |
| 多任务头 | 5%~15% | 轻量卷积/全连接 | 任务间共享特征冗余 | 中,需按任务敏感度分别处理 |
| 时序融合 | 5%~20% | 循环或注意力融合 | 历史帧特征通道冗余 | 高,剪枝易导致时序抖动 |
从冗余类型看,CNN骨干以通道冗余和卷积核冗余为主;Transformer以注意力头冗余和FFN中间层冗余为主;BEV感知的冗余更多体现在采样点与网格分辨率上;多任务头的冗余常表现为任务分支间的重复特征;时序融合的冗余则来自历史帧信息衰减与通道重复。
四、案例场景:BEV+Transformer模型的剪枝复盘
某BEV感知模型包含ResNet-50骨干、BEVFormer编码器、检测头、分割头和轨迹预测头。初始统计显示:CNN骨干参数占58%,Transformer占24%,BEV模块占8%,多任务头占6%,时序融合占4%。直接按全局L1剪枝30%后,检测mAP下降4.2个点,车道线IoU下降6.8个点,轨迹ADE上升0.35米。复盘发现:被剪掉的通道集中在BEV空间变换层和时序融合层,而这些层参数少但敏感度高。
调整策略后,采用分组敏感度剪枝:CNN骨干剪40%,Transformer剪25%,BEV模块仅剪10%,多任务头剪15%,时序融合剪8%。同时冻结BEV坐标变换层和时序融合的残差路径。最终在参数量减少32%的情况下,mAP仅下降0.9个点,车道线IoU下降1.2个点,轨迹ADE上升0.08米,满足工程可用性。
五、常见误区与复盘要点
- 误区一:按全局参数量统一剪枝。不同模块的冗余度和敏感度差异巨大,统一剪枝率会同时误伤BEV和时序模块。
- 误区二:只看FLOPs不看激活值。自动驾驶模型推理受显存带宽限制,激活值大的层剪枝后收益更明显。
- 误区三:忽略多任务梯度冲突。共享骨干剪枝后,各任务头对特征的需求不同,需重新平衡损失权重。
- 误区四:时序融合剪枝后不做时序一致性校验。单帧指标正常不代表时序输出稳定,需增加相邻帧抖动指标。
综上,自动驾驶模型的稀疏化不能采用“一刀切”策略。必须先建立模块级参数画像,再结合冗余度与敏感度做分组剪枝。CNN骨干适合优先压缩,Transformer适合注意力头与FFN维度裁剪,BEV感知和时序融合应以保护为主,多任务头则按任务敏感度分别处理。只有把参数分布、计算特征和精度敏感度放在同一张图上分析,才能在压缩模型的同时守住自动驾驶的安全底线。