Focal Loss与RetinaNet:解决目标检测中类别不平衡的新型损失函数
阅读笔记 · 来源:ICCV 2017 最佳学生论文《Focal Loss for Dense Object Detection》
论文背景
本文与同年 ICCV 最佳论文"Mask R-CNN"可视为孪生之作:作者团队基本来自 Facebook 人工智能研究院(FAIR),聚焦的同样是物体识别与语义分割领域,但不涉及实例分割问题。
核心作者:林仓义(Tsung-Yi Lin,第一作者,当时在 FAIR 实习,现就职于 Google Brain)、Priya Goyal、Ross Girshick、何恺明、Piotr Dollár。其中 Girshick、何恺明、Dollár 同时也是 Mask R-CNN 的核心作者。
问题定义:单阶段 vs 两阶段目标检测
目标检测任务有两种主流技术路线:
单阶段(One-stage):直接从输入图像提取特征,一步完成物体分类与边界框定位。思路直观,但面临严重挑战——图像中绝大多数区域不包含目标物体(负例),导致数据集正负样本极度不均衡。传统的交叉熵损失函数无法有效应对这种分布,学习过程事倍功半。
两阶段(Two-stage):先通过神经网络生成候选区域(Region Proposal),再对候选区域进行精细分类与定位。典型代表包括 Faster R-CNN 及其变体。两阶段模型在精度上长期领先,但推理速度较慢。
在本文发表之前,单阶段模型的检测精度始终无法匹敌两阶段模型。
核心贡献:Focal Loss(焦点损失)
传统交叉熵的缺陷
对于二分类问题,设模型预测为正例的概率为 p,交叉熵损失(Cross Entropy)即为负对数似然。问题在于:即使 p 已经足够大(如 p > 0.5),交叉熵仍会产生不可忽略的损失——模型被迫在已经能自信判断的样本上继续"用力",而真正困难、需要重点学习的样本反而没有被充分关注。
Focal Loss 的设计思想
Focal Loss 对交叉熵做了一个关键修改:在负对数似然前乘以一个与模型置信度成反比的调节系数,该系数由一个可调超参数 γ 控制。
这个设计带来两个关键特性:
- 降低易分类样本的权重:当模型对某个样本的预测高度自信(p → 1),调节系数趋近于 0,大量降低该样本对总损失的贡献。
- 保持难分类样本的权重:当样本被错误分类、或真实概率很小,损失与交叉熵基本持平,模型继续聚焦这些困难样本。
直观理解:Focal Loss 让模型"学会忽略已经会做的题,集中精力攻克难题",从而在正负样本严重失衡的场景下仍能高效训练。
RetinaNet:基于 Focal Loss 的单阶段检测网络
论文基于 Focal Loss 提出了一个完整的单阶段检测网络RetinaNet,架构要点如下:
| 组件 | 作用 |
|---|---|
| ResNet 骨干网络 | 从原始输入图像提取基础图像特征 |
| FPN(Feature Pyramid Network) | 多尺度特征金字塔,处理不同分辨率和大小的目标 |
| Anchor 机制 | 类似 Faster R-CNN,从滑动窗口中探索候选矩形框 |
| 双平行子网络 | 分别用于物体分类和边界框回归,借虴两阶段模型的设计 |
RetinaNet 的设计哲学是:用 Focal Loss 解决单阶段模型的训练难题,同时在网络结构上融合两阶段模型的优秀实践(FPN + Anchor + 双头输出),取长补短。
实验验证
在 COCO 目标检测数据集上的实验结果:
- RetinaNet 的平均精度(Average Precision)超越所有此前发布的单阶段模型,验证了 Focal Loss 和网络架构的有效性。
- 在不同 γ 参数配置下的对比实验表明,调节系数对最终精度有显著影响。
- 与经典两阶段模型 Faster R-CNN 及其变体相比,RetinaNet精度持平甚至更优,同时保留了单阶段模型的推理速度优势。
关键结论
- 目标检测中单阶段模型长期受困于正负样本不均衡,问题的根源在于传统损失函数(交叉熵)的固有缺陷,而非模型结构本身。
- Focal Loss 通过动态调节样本权重,让模型自动聚焦困难样本,是一种简洁而高效的解决方案。
- RetinaNet = Focal Loss + ResNet + FPN + Anchor,实践证明这一组合在精度和速度之间取得了优秀平衡。
- 本文启发了一个重要方向:修改目标函数本身是应对数据不平衡问题的有效手段,与数据重采样、难例挖掘等方法形成互补。