172、Mosaic 关闭时机的消融实验:最后 0/5/10/20/30 个 epoch 关闭对 mAP 的影响

📅 2026/7/10 19:27:51
172、Mosaic 关闭时机的消融实验:最后 0/5/10/20/30 个 epoch 关闭对 mAP 的影响
172、Mosaic 关闭时机的消融实验:最后 0/5/10/20/30 个 epoch 关闭对 mAP 的影响一个让我熬夜三天的bug去年秋天接了个工业检测项目,客户要求检测小目标——电路板上的微小焊点缺陷。YOLOv8跑基线,mAP@0.5:0.95只有31.2%,小目标AP更是惨不忍睹。直觉告诉我,Mosaic数据增强得留着,毕竟它把小图拼成大图,对小目标友好。于是我把Mosaic开到最后一个epoch,结果验证集mAP反而掉到29.8%。关掉Mosaic?小目标AP直接崩到12%。这让我意识到:Mosaic不是开不开的问题,是什么时候关的问题。后来翻YOLOv5源码,发现Ultralytics团队在最后10个epoch默认关闭Mosaic。但为什么是10?5行不行?20呢?30呢?没人给过系统性的消融实验。今天这篇笔记,就是我对这个问题的完整复盘。Mosaic的“双刃剑”本质先说说Mosaic为什么需要关闭。训练初期,Mosaic通过拼接4张图,让模型看到更多上下文、更丰富的背景,对小目标尤其有效。但训练后期,模型已经学到了合理的特征分布,Mosaic的随机拼接反而破坏了目标原有的尺度分布和空间位置关系——想象一下,一个原本占据画面30%的大目标,被Mosaic缩放到只占15%,模型在最后阶段还在适应这种“假分布”,自然学不到真实场景的尺度。更关键的是,Mosaic会引入大量“伪边界”——拼接处的物体被截断,模型被迫学习处理这些不自然的边界情况。训练后期,模型应该专注于精