014、数据增强不是越多越好Mosaic、MixUp、Copy-Paste 的适用边界与踩坑记录上个月调一个YOLOv8的工地安全帽检测模型训练集两万张Mosaic、MixUp、Copy-Paste全开mAP反而比只用Mosaic低了3个点。当时盯着tensorboard上的loss曲线训练集loss降得飞快验证集loss在第三个epoch就开始震荡——典型的过拟合信号但数据增强不是防过拟合的吗怎么越增强越崩后来花了三天逐项排查发现不是增强本身的问题是“增强策略”和“数据特性”打架了。今天把踩过的坑和摸索出的边界条件写清楚省得你们再走一遍。Mosaic小目标的天使大目标的魔鬼Mosaic把四张图拼成一张相当于变相增加了batch size对小目标检测效果显著。但注意这个“小目标”是有前提的。踩坑记录1当目标尺寸超过图像1/4时Mosaic会制造大量截断样本。我那个安全帽数据集里有些近景拍摄的安全帽占了图像1/3面积。Mosaic随机裁剪后这些大安全帽经常被切掉一半只剩个帽檐。模型学到的特征是“帽檐背景”而不是“完整安全帽”。推理时遇到完整安全帽反而漏检。经验边界如果你的数据集中目标面积占图像比例超过15%的样本占比超过20%Mosaic的mosaic_prob建议降到0.3以下。YOLOv8默认是1.0直接改config里的mosaic_prob: 0.3。踩坑记录2Mosaic和图像分辨率不匹配。我用YOLOv6训练1920x1080的监控画面输入尺寸640x640。Mosaic把四张图缩放到320x320再拼相当于每张图的信息量被压缩到原来的1/9。小目标比如远处的人头直接变成几个像素点特征提取器根本学不到东西。解决方案要么把输入尺寸提到1280YOLOv8支持要么把Mosaic的scale范围从默认的[0.1, 2.0]改成[0.5, 1.5]。别问我怎么知道的跑了一周实验才试出来。MixUp分类任务的利器检测任务的暗器MixUp把两张图按比例混合标签也按比例混合。在分类任务上效果显著但在检测任务上我建议你谨慎使用。踩坑记录3MixUp导致边界框回归不稳定。想象一下一张图里有个0.7透明度的安全帽另一张图里有个0.3透明度的行人。模型需要同时预测两个目标但它们的边界框是重叠的。YOLO的anchor匹配机制会混乱——这个anchor到底该匹配哪个目标两个都匹配那损失怎么算YOLOv8的MixUp实现里标签是直接拼接的没有做任何去重或权重调整。训练初期模型会疯狂震荡因为同一个位置出现了两个不同类别的目标。经验边界只有当你的数据集类别数超过10类且类别间特征差异明显比如车和行人时MixUp才有正面效果。如果只有3-5类且类别间有相似性比如安全帽和头盔MixUp大概率帮倒忙。踩坑记录4MixUp的alpha参数不是越大越好。默认alpha0.2意味着混合比例集中在0.2/0.8附近。我试过alpha0.5结果模型学出来的特征全是“模糊的中间态”推理时对清晰目标的置信度反而下降。个人习惯alpha设0.15且只在最后50个epoch开启。前期让模型先学清楚特征后期用MixUp做微调。Copy-Paste实例分割的宝藏目标检测的陷阱Copy-Paste把目标从一个图复制到另一个图在实例分割任务上效果炸裂。但在目标检测上我踩过一个很隐蔽的坑。踩坑记录5Copy-Paste破坏了场景上下文。工地场景里安全帽通常出现在人的头部位置。Copy-Paste随机把安全帽贴到背景墙上模型学到了“安全帽可以出现在任何位置”。推理时模型对正确位置人头的安全帽反而不敏感因为训练时见过太多“墙上安全帽”的样本。更致命的问题如果复制过来的目标遮挡了原始目标模型会学到“目标可以被部分遮挡”但实际场景中遮挡模式是有规律的比如人站在机器后面而Copy-Paste的遮挡是随机的、无规律的。经验边界Copy-Paste只适用于两类场景一是小目标极度匮乏比如远距离行人二是目标形状高度标准化比如交通标志。对于一般场景建议关闭。踩坑记录6Copy-Paste和Mosaic叠加使用。我试过MosaicCopy-Paste同时开训练集里一张图可能包含8-12个目标其中一半是粘贴过来的。模型学到的不是“检测目标”而是“检测所有看起来像目标的物体”。验证集mAP直接掉到0.4以下。个人建议Mosaic和Copy-Paste二选一不要同时开。如果非要开把Copy-Paste的prob降到0.1以下。数据增强的“黄金组合”实验记录最后给一组我实测过的配置针对不同场景场景1小目标密集比如无人机航拍行人Mosaic: prob0.5, scale[0.5, 1.5]MixUp: 关闭Copy-Paste: prob0.3只复制小目标其他增强HSV抖动、随机平移场景2大目标为主比如车辆检测Mosaic: prob0.2, scale[0.8, 1.2]MixUp: prob0.1, alpha0.1Copy-Paste: 关闭其他增强随机旋转±15°、随机缩放场景3通用场景比如监控安防Mosaic: prob0.5, scale[0.3, 1.5]MixUp: prob0.2, alpha0.15最后30个epoch开启Copy-Paste: 关闭其他增强HSV抖动、随机裁剪重要提醒以上配置不是万能药。每次换数据集先跑一个baseline只开HSV抖动然后逐个加增强每个增强跑20个epoch看验证集mAP趋势。别一次性全开否则你根本不知道哪个增强在拖后腿。数据增强的本质是“让模型见过更多样化的数据”但前提是这些“多样化”不能偏离真实分布。Mosaic、MixUp、Copy-Paste都是强增强它们制造的数据分布和真实分布之间的差距就是你需要警惕的边界。下次训练前先问问自己我的数据里目标尺寸分布是怎样的场景上下文重要吗类别间差异大吗想清楚这三个问题再决定开哪些增强。别像我一样跑了一周实验才发现是增强策略的问题。
014、数据增强不是越多越好:Mosaic、MixUp、Copy-Paste 的适用边界与踩坑记录
014、数据增强不是越多越好Mosaic、MixUp、Copy-Paste 的适用边界与踩坑记录上个月调一个YOLOv8的工地安全帽检测模型训练集两万张Mosaic、MixUp、Copy-Paste全开mAP反而比只用Mosaic低了3个点。当时盯着tensorboard上的loss曲线训练集loss降得飞快验证集loss在第三个epoch就开始震荡——典型的过拟合信号但数据增强不是防过拟合的吗怎么越增强越崩后来花了三天逐项排查发现不是增强本身的问题是“增强策略”和“数据特性”打架了。今天把踩过的坑和摸索出的边界条件写清楚省得你们再走一遍。Mosaic小目标的天使大目标的魔鬼Mosaic把四张图拼成一张相当于变相增加了batch size对小目标检测效果显著。但注意这个“小目标”是有前提的。踩坑记录1当目标尺寸超过图像1/4时Mosaic会制造大量截断样本。我那个安全帽数据集里有些近景拍摄的安全帽占了图像1/3面积。Mosaic随机裁剪后这些大安全帽经常被切掉一半只剩个帽檐。模型学到的特征是“帽檐背景”而不是“完整安全帽”。推理时遇到完整安全帽反而漏检。经验边界如果你的数据集中目标面积占图像比例超过15%的样本占比超过20%Mosaic的mosaic_prob建议降到0.3以下。YOLOv8默认是1.0直接改config里的mosaic_prob: 0.3。踩坑记录2Mosaic和图像分辨率不匹配。我用YOLOv6训练1920x1080的监控画面输入尺寸640x640。Mosaic把四张图缩放到320x320再拼相当于每张图的信息量被压缩到原来的1/9。小目标比如远处的人头直接变成几个像素点特征提取器根本学不到东西。解决方案要么把输入尺寸提到1280YOLOv8支持要么把Mosaic的scale范围从默认的[0.1, 2.0]改成[0.5, 1.5]。别问我怎么知道的跑了一周实验才试出来。MixUp分类任务的利器检测任务的暗器MixUp把两张图按比例混合标签也按比例混合。在分类任务上效果显著但在检测任务上我建议你谨慎使用。踩坑记录3MixUp导致边界框回归不稳定。想象一下一张图里有个0.7透明度的安全帽另一张图里有个0.3透明度的行人。模型需要同时预测两个目标但它们的边界框是重叠的。YOLO的anchor匹配机制会混乱——这个anchor到底该匹配哪个目标两个都匹配那损失怎么算YOLOv8的MixUp实现里标签是直接拼接的没有做任何去重或权重调整。训练初期模型会疯狂震荡因为同一个位置出现了两个不同类别的目标。经验边界只有当你的数据集类别数超过10类且类别间特征差异明显比如车和行人时MixUp才有正面效果。如果只有3-5类且类别间有相似性比如安全帽和头盔MixUp大概率帮倒忙。踩坑记录4MixUp的alpha参数不是越大越好。默认alpha0.2意味着混合比例集中在0.2/0.8附近。我试过alpha0.5结果模型学出来的特征全是“模糊的中间态”推理时对清晰目标的置信度反而下降。个人习惯alpha设0.15且只在最后50个epoch开启。前期让模型先学清楚特征后期用MixUp做微调。Copy-Paste实例分割的宝藏目标检测的陷阱Copy-Paste把目标从一个图复制到另一个图在实例分割任务上效果炸裂。但在目标检测上我踩过一个很隐蔽的坑。踩坑记录5Copy-Paste破坏了场景上下文。工地场景里安全帽通常出现在人的头部位置。Copy-Paste随机把安全帽贴到背景墙上模型学到了“安全帽可以出现在任何位置”。推理时模型对正确位置人头的安全帽反而不敏感因为训练时见过太多“墙上安全帽”的样本。更致命的问题如果复制过来的目标遮挡了原始目标模型会学到“目标可以被部分遮挡”但实际场景中遮挡模式是有规律的比如人站在机器后面而Copy-Paste的遮挡是随机的、无规律的。经验边界Copy-Paste只适用于两类场景一是小目标极度匮乏比如远距离行人二是目标形状高度标准化比如交通标志。对于一般场景建议关闭。踩坑记录6Copy-Paste和Mosaic叠加使用。我试过MosaicCopy-Paste同时开训练集里一张图可能包含8-12个目标其中一半是粘贴过来的。模型学到的不是“检测目标”而是“检测所有看起来像目标的物体”。验证集mAP直接掉到0.4以下。个人建议Mosaic和Copy-Paste二选一不要同时开。如果非要开把Copy-Paste的prob降到0.1以下。数据增强的“黄金组合”实验记录最后给一组我实测过的配置针对不同场景场景1小目标密集比如无人机航拍行人Mosaic: prob0.5, scale[0.5, 1.5]MixUp: 关闭Copy-Paste: prob0.3只复制小目标其他增强HSV抖动、随机平移场景2大目标为主比如车辆检测Mosaic: prob0.2, scale[0.8, 1.2]MixUp: prob0.1, alpha0.1Copy-Paste: 关闭其他增强随机旋转±15°、随机缩放场景3通用场景比如监控安防Mosaic: prob0.5, scale[0.3, 1.5]MixUp: prob0.2, alpha0.15最后30个epoch开启Copy-Paste: 关闭其他增强HSV抖动、随机裁剪重要提醒以上配置不是万能药。每次换数据集先跑一个baseline只开HSV抖动然后逐个加增强每个增强跑20个epoch看验证集mAP趋势。别一次性全开否则你根本不知道哪个增强在拖后腿。数据增强的本质是“让模型见过更多样化的数据”但前提是这些“多样化”不能偏离真实分布。Mosaic、MixUp、Copy-Paste都是强增强它们制造的数据分布和真实分布之间的差距就是你需要警惕的边界。下次训练前先问问自己我的数据里目标尺寸分布是怎样的场景上下文重要吗类别间差异大吗想清楚这三个问题再决定开哪些增强。别像我一样跑了一周实验才发现是增强策略的问题。