目标检测之retinanet

abstract

  • 论文地址:Focal Loss for Dense Object Detection
  • 论文主要提出了一种新的loss,称为focal loss,用于解决one stage目标检测过程中正负样本数量差距太大的情况。
  • 基于FPN提出了一个新的one stage目标检测框架,称为RetinaNet,目前在精度和速度方面达到了最好的平衡。

introduction

  • 当前detection主要有one stage与two stage两种方法
    • one stage是直接对生成的bbox进行细分类,在这些bbox中,正负样本数量差距很大,即类别严重不均衡。但是它的速度很快。
    • two stage是首先使用RPN等方法对生成的proposal进行一个二分类(属于前景还是背景),在这个过程中,大量属于背景的bbox会从所有的region proposals列表中删除。相当于这一步会稍微减小正负样本类别不均衡的现象;之后再使用Roi net等做后续的分类与bbox regression任务等。但是two stage方法的速度很慢。
  • 作者希望能够结合one stage与two stage的优点。one stage精度较差的主要原因是bbox的正负样本极度不均衡,之前有确定前景-背景proposal比例、OHEM等方法用于解决类别不均衡的问题。但是这些都是two stage的方法。在one stage方法中,会有更多的candidate bbox(~100K),因此使用之前的这些方法可能并不是很有效,因为one stage中的类别不均衡现象更加严重,绝大部分都是background。
  • 基于上述问题,论文中提出一种新的loss,即focal loss,与focal loss相似的变体都可以达到很好的检测效果。
  • 为了进行这种想法的验证,作者将FPN作为backbone,提出一种one stage检测框架,称之为RetinaNet。目前精度秒杀one stage方法,速度秒杀two stage方法,对比图如下。

retinanet-效果.png

  • RetinaNet主要是在loss方面做了改进,网络结构并没有改进,因此detection结果精度的提升主要是基于loss的改进。

focal loss

definition

  • 对于二分类问题,传统的cross entropy loss

$$CE(p,y) = CE(p_t) = -log(p_t)$$

  • 之前有人已经提出了balanced cross entropy,公式为

$$CE(p_t) = -\alpha_t log(p_t)$$

$\alpha_t$与类别t的样本数量成反比,即数量越少的类别,其loss权重越大。这也是本文中提出的focal loss的baseline。

  • focal loss的定义如下

$$FL(p_t) = -(1 - p_t)^{\gamma} log(p_t)$$

$\gamma$是超参数,论文中$\gamma = 2$效果最好。$\gamma = 0$时,与传统的cross entropy loss function相同。

  • 结合balanced cross entrop,focal loss的最终公式如下:

$$FL(p_t) = -\alpha (1 - p_t)^{\gamma} log(p_t)$$

上面的公式相对于不加参数$\alpha$的loss,最终训练出的模型精度略微提升了一些。

Class Imbalance and Model Initialization

  • 在二分类模型中,默认的二分类的输出概率是相等的。在类别不均衡的情况中,那些数量很多的类别的loss可能会占据最终loss的绝大部分,因此引入prior的概念,用$\pi$去表示这个prior,使得那些珍稀样本prior很小,这会在类别不均衡的情况下,提升训练的稳定性。

RetinaNet Detector

主要结构

  • Feature Pyramid Network Backbone:基于FPN的backbone,给定单一尺度的图像信息,FPN可以提取多尺度的特征信息。论文中是基于resnet构建了FPN。
  • anchor box在P3与P7的feature pyramid上分别表示$32^2$与$512^2$的大小,每个pyramid level,设置$aspect ratio={1:2,1:1,2:1}$,$scale\;ratio={0,2^{1/3},2^{2/3}}$。相当于每个level上会产生9个anchor box
  • 对于每个anchor box,预测其类别(K-vector),并进行bbox regression(4-vector)。

  • RetinaNet主要流程如下。

retinanet-流程.png

results

  • RetinaNet的mAP结果如下

retinanet-mAP.png

conclusion

  • 论文中主要针对类别不均衡的问题,提出了focal loss这种新的loss function。
  • 基于focal loss提出了one stage的目标检测方法,称为RetinaNet,它在速度和精度上都达到了state of art的水平。