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 课程目标:你能带走什么?

这门课不是纯理论,是我这些年踩坑、填坑的经验总结。学完之后,我希望你能做到:

  1. 一眼识别不平衡问题:拿到数据集,扫一眼就能判断哪些类别需要特殊照顾。
  2. 掌握三大类解决方案
    • 数据层面:过采样、欠采样、数据增强——什么时候用哪个?
    • 算法层面:Focal Loss、GHM、Class-Balanced Loss——原理和实战调参。
    • 训练技巧:两阶段训练、类别感知采样、动态阈值——我压箱底的东西。
  3. 能复现、能调优:每个方法我都会给可运行的代码,不是伪代码,是能直接跑的。
  4. 避坑指南:哪些方法看似有效实则坑人?我帮你提前踩一遍。

我的建议:别指望一个方法解决所有问题。实际项目中,往往是数据增强 + 损失函数改进 + 训练策略调整,三管齐下。这门课会教你如何组合使用。

1.5 学习路径:怎么学最有效?

我把课程分成了四个阶段,你跟着走就行:

阶段 章节 核心内容 产出
基础篇 1-5 不平衡问题的本质、评估指标、数据层面方法 能诊断问题,能做数据增强
进阶篇 6-15 Focal Loss、GHM、Class-Balanced Loss等算法 能修改损失函数,理解原理
实战篇 16-25 两阶段训练、采样策略、模型集成 能独立解决不平衡检测任务
专题篇 26-30 小样本检测、长尾分布、工业落地 能应对极端不平衡场景

我个人建议:别跳着看。基础篇虽然简单,但很多坑都在那里埋着。比如数据增强,你以为只是翻转裁剪?其实类别感知的增强策略,才是真正拉开差距的地方。

1.6 写在开始之前

做目标检测这些年,我最大的感受是:模型不是越复杂越好,而是越“懂”数据越好。类别不平衡,说白了就是模型没看懂你的数据分布。我们要做的,就是帮它“看明白”。

嗯,准备好了吗?

下一章,我们直接动手——用代码诊断你的数据集到底有多不平衡。我会带你写一个可视化工具,一眼看出哪些类别在“拖后腿”。

一句话记住这节课:类别不平衡不是数据的问题,是训练策略的问题。别怪数据少,怪你没用对方法。