【目标检测】Retinanet:Focal Loss for Dense Object Detection
原文链接如下:
https://blog.csdn.net/JNingWei/article/details/80038594
https://blog.csdn.net/weixin_41665360/article/details/90039317
https://blog.csdn.net/weixin_30856725/article/details/95157073
1、目标检测存在的问题
目前检测器主要有以下两派:
在two-stage检测器大行其道的今天,作者探究了one-stage 检测器在精度上不如two-stage检测器的原因。他们认为,one-stage检测器规则的密采样候选框的机制,会在采框过程中产生大量负样本,这种在训练时的前景-背景类别失衡会导致大量的简单负样本在训练过程中压倒检测器。简而言之,这些明显错误的简单负样本会在训练过程中影响检测器的学习,而那些更challenge的负样本会得不到关注。
基于以上研究,作者提出了一种焦点损失(Focal Loss),给予easy的负样本一个小的loss权重,避免训练过程中正负样本loss失衡。
2、焦点损失(Focal Loss)
常规的交叉熵损失函数:
若将p和(1-p)统一表示为如下:
则交叉熵可以简化为:
Focal Loss损失函数如下:
加入
参数后为:
说明:FL是一个尺度动态可调的交叉熵损失函数,在FL中有两个参数 和
,其中
主要作用是解决正负样本的不平衡,
主要是解决难易样本的不平衡。
3、参数说明
3.1、解决正负样本不平衡
交叉熵损失可以表示如下:
值往往需要根据验证集进行调整,论文中给出的是0.25。
3.2、 解决难易样本的不平衡
在实验中,发现 γ=2,α=0.25γ=2,α=0.25 的取值组合效果最好。
4、RetinaNet( FPN + sub-network + FL)
主要流程图如上,(a)(b)是比较常规的特征提取网络,作者采用的FPN50和FPN101,(c)(d)是分类和回归的subnet。整体的框架很简洁。
注明:
- RetinaNet简单而十分强大,以至于成为了当下最佳(accuracy/speed/complexity trade-off)的detector之一。
- RetinaNet的detector部分是两条平行pipe-line,且 设计相同 (除了尾部的output不一样) 但 参数不共享 (Faster R-CNN中第一层的参数是共享的) 。
- reg_pipe-line直接输出target,所以是采用了无分类的bbox regressior(Faster R-CNN是每个类各一个bbox regressor)。
5、结果
参考实践: