目标检测 | RetinaNet,经典单阶段Anchor-Based目标检测模型

2022-03-15 14:26:25 浏览数 (2)

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

代码语言:javascript复制
@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}
}

归纳总结

标签

目的

方法

总结

#Anchor #单阶段

解决正负样本严重不均衡的问题

retinanet和focal loss

针对训练过程中的实际问题,修改损失函数以达到优化的目的

主要工作

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

网络结构

RetinaNet的结构如下图:

主要包括三个部分:

  • 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结构

Focal Loss

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

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

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

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

如果定义p_t

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

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

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

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

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

实验结果

0 人点赞