184、分层学习率设置代码实现:Backbone 低学习率 Neck Head 高学习率的分组优化
184、分层学习率设置代码实现:Backbone 低学习率 Neck Head 高学习率的分组优化从一次翻车现场说起去年秋天调一个YOLOv8的工业检测模型,数据集是某电子元件的表面缺陷,总共就3000张图。我按老套路把backbone冻住只训head,跑了50个epoch,mAP卡在0.72死活上不去。后来一狠心把backbone解冻,全局lr设成1e-3,结果第二天早上来看loss炸了——backbone的预训练权重被冲得七零八落,mAP掉到0.3。这就是典型的分层学习率没做好的下场。backbone是预训练好的特征提取器,你给它喂太大的学习率,它就把ImageNet上学到的通用特征全忘了。而head是随机初始化的,学习率小了根本学不动。YOLOv11的neck结构比v8还深了两层,这个问题更严重。分组优化的底层逻辑先想清楚一件事:backbone、neck、head三个模块的“学习阶段”完全不同。backbone已经在大规模数据上训好了,它需要的只是微调——学习率通常设在全局lr的0.1到0.5倍。neck是连接器,负责特征融合,它需要中等学习率,大概在全局lr的0.5到1倍。head是检测头,从零开始学分类和回归,学习率应该最大,甚至可以比全局lr还高一点。YOLOv11的模型结构里,这三个模块的边界很清晰。以yolov11l为例,backbone从第0层到第9层(具体看你的配置文件),neck从第10层到第21层,head是最后的检测层。但注意,YOLOv11的head里还包含了DFL和