174、YOLOv8改进实战:EMA指数移动平均与SWA随机权重平均的模型融合技巧 174、YOLOv8改进实战:EMA指数移动平均与SWA随机权重平均的模型融合技巧从一次凌晨的调试说起凌晨两点,我盯着tensorboard上那条震荡得像心电图一样的val/mAP曲线,恨不得把显示器砸了。训练了120个epoch的YOLOv8模型,验证集mAP@0.5:0.95在0.45到0.48之间反复横跳,明明训练loss已经收敛得不错,可验证就是不稳定。这种场景,做过目标检测的兄弟应该都不陌生。我试过调低学习率、加warmup、换优化器,效果都有限。直到后来在某个竞赛的baseline里看到有人用了EMA(指数移动平均),才意识到自己一直在用裸权重做推理,白白浪费了训练过程中积累的“历史经验”。EMA和SWA这两个技巧,说白了就是把训练过程中多个时刻的模型状态融合起来,而不是只取最后一个checkpoint。它们不是花哨的注意力机制,也不是复杂的Neck结构,但在我经手的十几个落地项目中,这两个技巧几乎每次都能稳定提升1-3个点的mAP,而且完全不需要改模型结构。EMA:给模型权重加个“低通滤波器”EMA的原理其实特别朴素。常规训练中,我们每一步都在更新模型参数θ,但EMA维护另一套影子参数θ_ema,更新规则是:θ_ema = decay * θ_ema + (1 - decay) * θdecay通常取0.999或0.9999,意味着影子参数会平滑地跟随当前参数,但不会剧烈震荡。这就像给权重信号加了个低通滤波