1. 论文信息

论文标题:Focal Loss for Dense Object Detection

论文来源:IEEE Transactions on Pattern Analysis and Machine Intelligence 2020
论文链接:Focal Loss for Dense Object Detection | IEEE Xplore
论文代码:https://github.com/facebookresearch/Detectron

image-20211119213555220

1
2
3
4
5
6
7
@inproceedings{lin2017focal,
title={Focal loss for dense object detection},
author={Lin, Tsung-Yi and Goyal, Priya and Girshick, Ross and He, Kaiming and Doll{\'a}r, Piotr},
booktitle={Proceedings of the IEEE international conference on computer vision},
pages={2980--2988},
year={2017}
}

2. 归纳总结

标签 目的 方法 总结
#Anchor #单阶段 解决正负样本严重不均衡的问题 retinanet和focal loss 针对训练过程中的实际问题,修改损失函数以达到优化的目的

3. 主要工作

作者认为之前的单阶段检测算法精度不高的原因可能是前后景类别(正负样本)严重不均衡导致的。因此作者重新设计了一个损失:Focal Loss,其能降低可以较好分类的样本的损失权重,防止训练过程中大量的easy negatives给检测器带来的压制影响,并基于Focal Loss设计提出并训练了RetinaNet。

3.1 网络结构

RetinaNet的结构如下图:

image-20211120135540595

主要包括三个部分:

  • Backbone:使用了ResNet+FPN,用于生成多尺度{p3~p7}卷积特征图
  • Anchor:p3-p7特征图的base_size设置为$[32^2,64^2,128^2,256^2,512^2]$,在每一层特征图针对denser scale coverage,设置{${2^0,2^{1/3},2^{2/3}}$}三种不同的anchor size,比例为{1:2,1:1,2:1},即每个位置9种Anchor。
  • subnets:用于分类和回归,结构相同但参数不共享的小型FCN结构

image-20211120135222791

3.2 Focal Loss

作者提到基于R-CNN模式的两阶段算法在解决训练过程中的正负样本不均衡的方法是:

  • 两阶段级联:在proposal阶段过滤掉大量负样本
  • 启发式采样:例如固定正负样本比例(例如1:3)或者在线难样本挖掘(Online Hard Example Mining,OHEM)

Focal loss的做法是设置一个sacling factor,如下图的$(1-p_t)^{\gamma}$,其可以自动的对easy example进行降权,从而使模型更关注hard example。

image-20211120135146831

首先,对于二分类任务,普通的交叉熵如下:

image-20211120132951497

如果定义$p_t$:

image-20211120133459396

那么交叉熵可以写成$CE(p,y)=CE(p_t)=-log(p_t)$

有一种常见的用于解决类别不均衡的方法是添加一个权重变量$\alpha \in [0,1]$:

image-20211120133655071

Focal Loss的做法是添加了一个权重变量$(1-p_t)^{\gamma}$:

image-20211120133916235

因此当$p_t$趋近于1时,可以较好分类的样本被降权;而$\gamma$可以用来调节权重比率。除此之外,还可以将$\alpha$和FL损失相结合:

image-20211120134227038

除此之外还有其他的Focal Loss变种形式。

4. 实验结果

image-20211120141212266