今天的工作让我真正理解了,指标高不等于模型好。最初看到 mAP≈0.93 时,我误以为已经取得了很好的效果。但当按照规范重新划分数据集后,指标骤降到 0.69------原来高分只是"数据划分不规范"带来的假象。核心教训:没有可靠的评估体系,任何优化都是盲目的。
我犯过的关键错误与反思
-
数据划分随意 → 评估失真
训练/验证/测试集存在泄漏或分布不均。学到了:必须先建立标准化的数据划分流程,确保 baseline 真实可信。
-
模型结构与数据配置混淆
以为换了
yolo11n.pt就是换了模型,忽略了 yaml 中路径、类别等配置的影响。工程上要严格区分"模型结构"和"数据配置"。 -
路径混乱,缺乏工程控制
/kaggle/working与/kaggle/input不分,yaml 文件反复修改却没有版本记录。科研也需要工程规范,之后我会统一管理路径、保存每次实验的配置文件。 -
baseline 未稳定就盲目改结构
在没有稳定 baseline 的情况下尝试 P2 层等改动。对照实验的前提是 baseline 可复现,以后必须"先固化,再优化"。
做得相对正确的三件事
-
问题拆解,而不是直接调参
指标下降后,我分析了小目标比例(34%)和各类别召回率(helmet/vest 仅 0.5),明确核心矛盾是"小目标感知不足",而非单纯的精度问题。
-
调整 Mosaic 增强比例
实验发现 Mosaic=1.0 会严重破坏小目标结构,降低到 0.5 后指标有所回升。理解了数据增强不是越强越好,而要和目标尺度分布匹配。
-
引入 P2 检测层
从 P3~P5 扩展到 P2~P5,将特征图分辨率从 stride 8 提升到 stride 4,直接针对小目标问题。方向已被验证合理,最终结果正在训练中。
我的收获
-
评估体系意识:学会发现并修正数据划分问题,建立可信 baseline。
-
小目标分析能力:能依据 MS COCO 标准统计目标尺度分布,并据此设计改进策略。
-
结构改进实践:掌握了 YOLO 检测头配置方法,成功添加 P2 层。
-
工程规范初步建立:不再随意改文件,开始记录实验配置和路径结构。
下一步计划
-
跑完 P2 模型的完整训练,获得最终指标(mAP、Recall 等)。
-
做对比实验表:baseline vs Mosaic=0.5 vs P2 层,计算提升幅度。
-
进一步优化 Loss:尝试 Focal Loss 或 Varifocal Loss,解决类别不平衡和难例挖掘问题。
-
撰写实验报告:将整个过程按"问题-分析-改进-验证"的逻辑整理成文。