1、课程导论:为什么类别不平衡是目标检测的“头号公敌”?课程目标与学习路径
1.1 一个让我深夜崩溃的Bug
我记得那是2019年,我在做一个工业质检项目。
检测流水线上的微小零件缺陷。训练集里,正常零件占了98%,缺陷样本只有2%。
模型跑了一周,mAP看着还行——0.89。但一上线,缺陷一个都抓不住。
老板拍桌子:“你这模型是瞎了吗?”
我盯着PR曲线,半天说不出话。嗯,就是类别不平衡搞的鬼。
说白了,类别不平衡就是:数据集中某些类别的样本数量远多于其他类别。在目标检测里,这问题比分类任务更棘手——因为一张图里可能有多个目标,背景区域又占了绝大部分。
1.2 为什么它是“头号公敌”?
你想想看,目标检测模型本质上是在做两件事:分类 + 定位。不平衡问题会同时攻击这两个环节。
- 分类分支被“带偏”:模型发现,只要把所有候选框都判成“背景”或“多数类”,loss就能降得很低。它学到的其实是偷懒,不是真正的判别能力。
- 定位分支“营养不良”:少数类的正样本太少,回归器根本没见过几种真实的偏移模式。我见过一个项目,模型对“罕见类别”的预测框总是飘忽不定,说白了就是没练够。
- 评估指标“骗人”:整体mAP可能还行,但按类别一看,多数类0.95,少数类0.05。这种模型你敢上线吗?
避坑指南:我曾经犯过一个错——只看整体mAP就宣布模型达标。后来按类别拆开看,才发现少数类的AP几乎为0。记住:一定要按类别看AP,尤其是稀有类。
1.3 不平衡到底有多严重?
我整理了几个真实场景的数据,你看看差距有多大:
| 场景 | 多数类样本数 | 少数类样本数 | 比例 |
|---|---|---|---|
| 自动驾驶(行人vs自行车) | 50,000 | 800 | 62.5:1 |
| 医疗影像(肿瘤检测) | 10,000 | 120 | 83.3:1 |
| 工业质检(缺陷检测) | 100,000 | 500 | 200:1 |
| 遥感图像(飞机vs油罐) | 20,000 | 300 | 66.7:1 |
你看,100:1甚至200:1的比例,在真实项目里太常见了。我个人的习惯是:一旦比例超过10:1,就必须专门处理,否则模型一定会出问题。
3.4 课程目标:你能带走什么?
这门课不是纯理论,是我这些年踩坑、填坑的经验总结。学完之后,我希望你能做到:
- 一眼识别不平衡问题:拿到数据集,扫一眼就能判断哪些类别需要特殊照顾。
- 掌握三大类解决方案:
- 数据层面:过采样、欠采样、数据增强——什么时候用哪个?
- 算法层面:Focal Loss、GHM、Class-Balanced Loss——原理和实战调参。
- 训练技巧:两阶段训练、类别感知采样、动态阈值——我压箱底的东西。
- 能复现、能调优:每个方法我都会给可运行的代码,不是伪代码,是能直接跑的。
- 避坑指南:哪些方法看似有效实则坑人?我帮你提前踩一遍。
我的建议:别指望一个方法解决所有问题。实际项目中,往往是数据增强 + 损失函数改进 + 训练策略调整,三管齐下。这门课会教你如何组合使用。
1.5 学习路径:怎么学最有效?
我把课程分成了四个阶段,你跟着走就行:
| 阶段 | 章节 | 核心内容 | 产出 |
|---|---|---|---|
| 基础篇 | 1-5 | 不平衡问题的本质、评估指标、数据层面方法 | 能诊断问题,能做数据增强 |
| 进阶篇 | 6-15 | Focal Loss、GHM、Class-Balanced Loss等算法 | 能修改损失函数,理解原理 |
| 实战篇 | 16-25 | 两阶段训练、采样策略、模型集成 | 能独立解决不平衡检测任务 |
| 专题篇 | 26-30 | 小样本检测、长尾分布、工业落地 | 能应对极端不平衡场景 |
我个人建议:别跳着看。基础篇虽然简单,但很多坑都在那里埋着。比如数据增强,你以为只是翻转裁剪?其实类别感知的增强策略,才是真正拉开差距的地方。
1.6 写在开始之前
做目标检测这些年,我最大的感受是:模型不是越复杂越好,而是越“懂”数据越好。类别不平衡,说白了就是模型没看懂你的数据分布。我们要做的,就是帮它“看明白”。
嗯,准备好了吗?
下一章,我们直接动手——用代码诊断你的数据集到底有多不平衡。我会带你写一个可视化工具,一眼看出哪些类别在“拖后腿”。
一句话记住这节课:类别不平衡不是数据的问题,是训练策略的问题。别怪数据少,怪你没用对方法。