183、Freeze 训练策略:冻结 Backbone 只训 Head vs 逐层解冻的最佳阶段划分
183、Freeze 训练策略:冻结 Backbone 只训 Head vs 逐层解冻的最佳阶段划分从一次翻车现场说起去年年底接了个工业质检项目,客户要求检测精度mAP@0.5必须到92%以上,但训练数据只有800张标注好的PCB板缺陷图。我二话不说直接上了YOLOv11m,默认配置跑100个epoch,结果验证集mAP卡在78%不动了。当时我盯着loss曲线看了半小时——训练loss降得挺快,但val loss从第15个epoch就开始震荡上升,典型的过拟合。后来跟团队里一个老哥聊,他说:“你试试冻住Backbone,只训Head,先跑50个epoch看看。”我半信半疑改了配置,结果mAP直接跳到86%。这个案例让我意识到,Freeze策略在小样本场景下不是锦上添花,而是救命稻草。为什么需要Freeze?别被“全量训练”忽悠了很多人觉得YOLOv11的Backbone是CSPDarknet,预训练权重已经在ImageNet上训得够好了,直接全量微调就行。但实际踩坑经验告诉我:当你的目标域数据量小于5000张时,全量训练几乎必然导致Backbone的特征提取能力被破坏。原因很简单——Backbone的前几层学习的是通用特征(边缘、纹理、颜色块),这些特征在ImageNet上已经收敛得很好。如果你用少量工业缺陷图去微调,梯度回传会把Backbone的权重往“只适合当前数据集”的方向拉,导致泛化能力断崖式下跌。Head部分则不同,它负责的是“在哪里检测什么类别”