071、YOLOv11改进-轻量化解耦头通道剪枝设计即插即用涨点实验
踩坑实录:一个让我熬夜三天的解耦头问题
上个月做工业缺陷检测项目,模型部署到边缘设备上,发现推理速度卡在解耦头这块。YOLOv11默认的解耦头设计,分类和回归分支各用两个3x3卷积加一个1x1输出,参数量看着不大,但实际跑起来,尤其是batch size小的时候,卷积层带来的访存开销比计算开销更扎眼。我试过直接砍通道数,结果mAP掉了2个点,召回率崩得没法看。
后来翻了几篇轻量化检测头的论文,发现核心矛盾在于:分类分支需要足够的通道数来区分细粒度类别,回归分支对空间位置更敏感但通道冗余度其实很高。YOLOv11默认把两个分支设成相同的通道数(通常是256或128),这本身就是一种浪费。更关键的是,解耦头内部的3x3卷积,很多通道的激活值接近零,剪掉对最终输出几乎没影响。
设计思路:不是简单砍通道,是让剪枝自己学会砍哪里
我做的改进叫LightDecoupleHead,核心就两件事:通道差异化分配和结构化剪枝引导。
通道差异化分配很好理解——分类分支保留较多通道(比如128),回归分支压缩到64甚至32。但直接硬编码通道数太死板,我加了一个可学习的通道缩放因子,让网络自己决定每个分支该用多少通道。具体做法是在每个分支的3x3卷积后面接一个1x1的通道注意力模块,输出一个缩放向量,对特征图做逐通道乘法。训练时用L1正则化约束这个缩放因子,让不重要的通道自动趋近于零。
结构化