模型跑了几十个 epoch,准确率还是卡在 60% 上下徘徊。这时候别急着换架构、调学习率,或者去 Stack Overflow 上找更复杂的损失函数。
很多时候,问题不出在算法本身,而在你喂给模型的数据里。垃圾进,垃圾出(Garbage In, Garbage Out)这句老话在 AI 领域从未过时。如果你正在经历痛苦的模型训练瓶颈,先停下来,回头看看那堆看似完美的标注数据。
做物体检测时,标注员最容易犯的错误就是“差不多就行”。
比如标注一辆车,框画得比车身大出一圈,或者只框住了车头。单个看可能没大事,但成千上万张图累积下来,模型学到的特征就是模糊的。它会困惑:背景里的树影算不算车的一部分?车轮到底属不属于检测对象?
这种噪声会让收敛变得极其缓慢。
检查方法很简单:随机抽取 50-100 个样本,叠加显示 Ground Truth 和预测框。如果大部分预测框都在试图“修正”标注的偏差,那就是标注精度出了问题。标注必须紧贴物体边缘,像素级的误差在大规模训练中会被放大成巨大的噪音。
分类任务里,最头疼的不是猫和狗,而是“像猫的狗”或者“哈士奇”。
如果标注指南里没写清楚,A 标注员把灰狼标为“狗”,B 标注员标为“野生动物”,C 标注员直接跳过。模型面对同一类图像,收到的信号却是冲突的。它学不会区分,只能学会犹豫。

这就涉及数据标注的一致性问题。
很多项目初期,为了凑数量,疯狂采集容易获取的数据。结果训练集里 80% 都是白天、晴天、正脸的图片。
一到实际场景,遇到雨天、逆光、侧脸,模型直接罢工。
这不是模型笨,是它没见过。数据分布必须覆盖真实场景的多样性。如果某些关键类别样本极少,不要指望模型能“举一反三”。要么去过采样,要么去专门采集那些稀缺场景。
哪怕只有几百张高质量的难例数据,往往也比几千张重复的简单数据更有价值。
修好这些细节,再重新跑一次训练。你会发现,不需要改代码,效果也能涨几个点。
