1. Focal Loss 的诞生背景与核心问题
在计算机视觉领域,目标检测任务长期存在一个根本性矛盾:两阶段检测器(如R-CNN系列)精度高但速度慢,单阶段检测器(如YOLO、SSD)速度快但精度低。2017年Facebook AI Research团队发现,造成这种差距的关键原因在于训练过程中的极端类别不平衡问题。
以经典的单阶段检测器为例,在一张普通图片中:
- 真实目标(前景)可能只有几个(如3-5个bounding box)
- 生成的候选框(anchors)通常超过10万个
- 其中绝大多数(>99.9%)都是容易分类的负样本(背景)
这种不平衡会导致两个严重后果:
- 大量简单负样本主导梯度更新方向
- 模型难以学习到困难样本(hard examples)的有效特征
传统解决方案如OHEM(Online Hard Example Mining)虽然有效,但存在两个缺陷:
- 完全丢弃简单样本,浪费计算资源
- 对噪声样本敏感(可能把标注错误样本当作困难样本)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Focal Loss 的数学原理与设计思想
2.1 从标准交叉熵出发
标准交叉熵损失(Cross Entropy Loss)可以表示为:
$$
CE(p, y) = \begin{cases}
-\log(p) & \text{if } y=1 \
-\log(1-p) & \text{otherwise}
\end{cases}
$$
其中$p$是模型预测的概率(经过sigmoid),$y$是真实标签。对于二分类问题,可以统一写成:
$$
CE(p_t) = -\log(p_t)
$$
其中$p_t = \begin{cases}
p & \text{if } y=1 \
1-p & \text{otherwise}
\end{cases}$
2.2 引入平衡因子
为解决类别不平衡,常见做法是添加权重因子$\alpha$:
$$
CE(p_t) = -\alpha_t \log(p_t)
$$
其中$\alpha_t = \begin{cases}
\alpha & \text{if } y=1 \
1-\alpha & \text{otherwise}
\end{cases}$
但这只能平衡正负样本的重要性,
