049、YOLOv11轻量化剪枝——基于L1范数的通道剪枝实现YOLOv11轻量化的即插即用代码与精度保持一、从一次部署翻车说起去年有个项目,客户要求把YOLOv11s塞进一块边缘计算板子,算力大概只有RTX3060的十分之一。我一开始觉得问题不大,YOLOv11s本身已经比v8小了不少,结果一跑——帧率只有7FPS,推理延迟直接飙到140ms。翻看nvidia-smi,显存占用倒是还好,但计算单元利用率一直上不去,明显是模型体积和计算量跟硬件不匹配。常规做法是换更小的模型,比如YOLOv11n,但客户对mAP有硬性要求,不能低于0.5。试了一下YOLOv11n,mAP直接从0.53掉到0.46,完全没法交差。这时候就得动剪枝的心思了——不是简单换模型,而是把YOLOv11s里冗余的通道砍掉,保留关键特征提取能力,同时把计算量降下来。L1范数通道剪枝是我在这个场景下试过最稳的方案。原理不复杂:每个卷积层的输出通道,如果对应的BN层缩放因子(gamma)接近0,说明这个通道对后续特征贡献很小,砍掉它基本不影响精度。YOLOv11的C2f模块和Detect头里大量使用了BN层,天然适合这种剪枝方式。二、剪枝前的准备工作——别急着动手先确认一件事:你的YOLOv11模型是不是标准的训练流程出来的。如果用了EMA、标签平滑、或者自定义的损失函数,剪枝策略需要微调。我这里假设你用的是ultralytics官方仓库训练的模型,权重文件是.pt格式。剪枝前一定要做一次完整评估,记录baseline。我习惯用这段代码跑一