132、YOLOv8改进实战:Mosaic增强的源码级优化——自适应拼接策略提升小目标多样性

发布时间:2026/8/3 9:54:56
132、YOLOv8改进实战:Mosaic增强的源码级优化——自适应拼接策略提升小目标多样性 132、YOLOv8改进实战:Mosaic增强的源码级优化——自适应拼接策略提升小目标多样性做目标检测的兄弟应该都遇到过这个场景:小目标数据集上训了三天,mAP卡在0.3死活上不去。我去年接了个无人机航拍的项目,里面行人车辆小得跟芝麻似的,YOLOv8默认配置跑出来,小目标AP直接崩到0.12。调了几天参数,最后发现是Mosaic增强在搞鬼——它随机拼图的方式对小目标太不友好了。从一次翻车现场说起当时我打开WandB看训练日志,发现一个诡异现象:训练集上loss降得挺漂亮,验证集上小目标AP纹丝不动。直觉告诉我数据增强出了问题。我写了个可视化脚本,把Mosaic后的图片dump出来看——好家伙,四张图拼在一起,小目标被缩放到原来的1/4大小,有些甚至只有几个像素。模型学到的全是模糊的色块,能检测出来才见鬼。更坑的是,Mosaic的随机裁剪区域经常把小目标切掉一半。你想想,一个原本就20x20像素的行人,被裁掉半边肩膀,剩下的特征跟背景噪声有什么区别?模型直接摆烂,把这类样本当负例处理了。源码里藏着什么猫腻翻YOLOv8的Mosaic实现,核心逻辑在ultralytics/data/augment.py的Mosaic类里。它先随机选四张图,然后按中心点拼成2x2网格,最后随机裁剪一个区域返回。关键代码长这样:# 随机选择中心点坐标/