CodeWalk

RetinaNet与Focal Loss解决类别不平衡

作者:孤独的心 · 2026-05-30 12:55

RetinaNet是One-Stage目标检测器的代表作,通过Focal Loss解决了正负样本不平衡问题。请详细解释Focal Loss的设计思想和RetinaNet的架构特点。

回答

孤独的心

RetinaNet由Lin等人于2017年提出,核心贡献是Focal Loss,专门解决One-Stage检测器面临的极端类别不平衡问题。

问题背景: One-Stage检测器在每张图上生成密集的候选框(~100k),其中绝大多数是简单负样本(背景),导致标准交叉熵损失被大量易分类负样本主导,模型无法有效学习困难样本。

Focal Loss设计: FL(p_t) = -α_t (1-p_t)^γ log(p_t)

  • 其中p_t是模型对真实类别的预测概率。
  • (1-p_t)^γ称为调制因子(Modulating Factor):当样本被正确分类(p_t→1)时,调制因子→0,降低该样本的损失贡献;当样本被错误分类(p_t→0)时,调制因子→1,保留其损失贡献。γ≥0为聚焦参数,推荐γ=2。
  • α_t:平衡正负样本的权重系数。
  • 效果:大幅降低易分类负样本的损失比重,使模型更关注困难的、稀有类别的样本。

RetinaNet架构

  1. 骨干网络:ResNet+FPN(Feature Pyramid Network),输出多尺度特征。
  2. 两个独立的子网络:分类子网络(预测K个类别的概率)和回归子网络(预测边界框偏移)。
  3. 子网络为全卷积网络,在每个金字塔层级的所有位置上进行密集预测。

性能: RetinaNet-101-FPN在COCO上达到39.1 AP,超越同期Faster R-CNN和YOLOv2,推理速度也更快。