原论文:《T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Doll´ar. Focal loss for dense object detection[C]. In ICCV, 2017.》
- 特意设计了专门的目标检测网络 RetinaNet 进行实验验证。
- 论文中经过实验得到 RetinaNet 中损失函数超参数的 一对最佳值: γ = 2 \gamma=2 γ=2、 α = 0.25 \alpha=0.25 α=0.25。
目的:解决目标检测模型中存在的正负样本不平衡问题。
方法:通过损失函数,抑制分类正确的样本在权重更新中的作用。样本被正确分类的得分越高,其作用越低。
比如:一个得分为0.99的正样本比得分0.70的正样本作用小;一个得分为0.01的负样本比一个得分为0.40的负样本作用小。
1. Focal Loss 损失函数
首先介绍 交叉熵损失函数(Cross Entropy)以及 平衡交叉熵损失函数(Balanced Cross Entropy),这两个函数对提出 Focal Loss 损失函数 有启发作用。
记 y y y 为正负类别,1 为正 0 为负; p p p 是模型对正类别的预测值, 1 − p 1-p 1−p 是对负类别的预测值。
- 交叉熵损失函数
C E ( p , y ) = { − l o g ( p ) i f y = 1 − l o g ( 1 − p ) i f y = 0 CE(p,y)=\begin{cases} &-log(p)\ \ \ \ \ \ \ \ \ \ \ if\ y=1 \\ &-log(1-p)\ \ \ \ if\ y=0 \\ \end{cases} CE(p,y)={ −log(p) if y=1−log(1−p) if y=0
记
p t = { p i f y = 1 1 − p i f y = 0 p_t=\begin{cases} &p\ \ \ \ \ \ \ \ \ if\ y=1\\ &1-p\ \ if\ y=0\\ \end{cases} pt={ p if y=11−p if y=0
则
C E ( p , y ) = C E ( p t ) = − l o g ( p t ) CE(p,y)=CE(p_t)=-log(p_t) CE(p,y)=CE(pt)=−log(pt)- 平衡交叉熵损失函数
C E ( p t ) = − α t l o g ( p t ) CE(p_t)=-\alpha_t log(p_t) CE(pt)=−αtlog(pt)
其中, α ∈ [ 0 , 1 ] \alpha\in [0,1] α∈[0,1],且
α t = { α i f y = 1 1 − α i f y = 0 \alpha_t=\begin{cases} &\alpha\ \ \ \ \ \ \ \ \ if\ y=1\\ &1-\alpha\ \ if\ y=0\\ \end{cases} αt={ α if y=11−α if y=0
1.1 Focal Loss 损失函数
F L ( p t ) = − ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-(1-p_t)^\gamma log(p_t) FL(pt)=−(1−pt)γlog(pt)
γ ≥ 0 \gamma\ge 0 γ≥0 是超参数,被称为可调焦点参数(Tunable Focusing Parameter),下面是不同值控制下的损失函数曲线。论文的实验中, γ = 2 \gamma=2 γ=2 的效果最好。
1.2 基于 α \alpha α 的 Focal Loss 损失函数
这个是实际使用的损失函数。
F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-\alpha_t (1-p_t)^\gamma log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
2. RetinaNet 网络
结构图:
不再详细介绍该网络。
最后是实验数据: