RetinaNet阅读笔记

《Focal Loss for Dense Object Detection》是Facebook AI 2017年提出的论文,这篇文章的贡献我觉得主要有两点:

  • 提出了one-stage 目标检测模型RetinaNet
  • 探究了one-state目标检测的类别失衡问题,并针对该问题提出了Focal Loss

类别失衡

为什么two-stage目标检测强于one-stage

In this paper, we investigate why this is the case. We discover that the extreme foreground-background class imbalance encountered during training of dense detectors is the central cause.

文章认为,在one-stage网络中,前景和背景的比例失衡问题,是造成one-stage精确度瓶颈的主要原因。而two-stage目标检测方法能很好的规避这个问题,主要原因有两点:

  1. two-stage cascade
  2. biased minibatch sampling

two-stage cascade

在目标检测中,前景目标是我们关心的主要区域,其中包含了用于物体检测的有用信息。而背景区域相比于前景而言:

1.无法提供用于提取目标特征的有用信息

2.背景区域过多,比例远远高于前景,从而使得最终的loss被背景区域所支配,loss无法达到预期的知道作用。

在stage one候选区域提取网络(rpn)中,能够抛弃大部分背景框而提取出候选前景框,达到了滤除绝大多数背景信息,rpn之后的区域多数都是我们关心的目标区域以及hard example,为模型训练提供更多有用的信息。

biased minibatch sampling

在stage two中,对正负样本进行抽样来控制比例,比如采用1:3的正负样本比例,正负样本的比例不至于失衡。

通过loss解决类别失衡问题

Cross Entropy Loss存在的问题

Binary Cross Entropy Losss的形式如下:

其中y是真实标签值,p为网络输出的类别概率。假设当前目标的类别标签为1,在输出概率p为横坐标,loss为纵坐标的图像如下面的这条蓝色曲线:

可以看到,当类别标签为1,即使检测输出概率为0.6~1的范围内,对应的纵坐标值也依旧有着不小的loss,而通常输出概率大于0.6这部分预测结果,我们通常认为是得到了正确分类的well-classified examples。这部分example已经得到了很好的分类,理论上我们应该更加关注那些输出概率和标签值相差非常大的样本,而对于well-classified的部分减小对其的关注度。

另一方面考虑,由于图像中存在着大量的背景区域,远远超过了前景区域的面积,而背景区域由于和前景区域有较大的区分度,通常为well-classified examples,而又因为背景区域的数量众多,在这样的情况下,如果背景的example经过分类计算后还有着一定的loss,乘上数量这将是一个很可怕的数字。所以目标是很明确的:更加关注于那些不好分类的hard example,惩罚well-classified examples的loss值

Focal Loss

为了解决类别失衡问题,文章中提出了Focal Loss,其形式为:

其中:

p 是分类输出的概率。

不考虑系数\alpha ^{t},当目标类别标签y=1的情况下,对于well-classified examples,p_{t}=p,值会非常接近于1,而1-p_{t}的值则更加接近于0,如果\gamma的取值范围大于1,可以想象(1-p_{t})^{\gamma }的值将会更加的接近于0,从而达到了惩罚目的;而如果这个样本没有被很好的分类,输出概率值p远小于1,(1-p_{t})^{\gamma }的值则更加接近于1,不受到影响。说白了也就是通过指数来增加对well-classified examples计算的loss增加惩罚,使其loss变得更小。对应上面的图中红色到绿色曲线为\gamma取值0.5~5的对应曲线,可以看到在p_{t}接近于1的情况下,将会比cross entropy得到更低的loss。

而系数\alpha ^{t}则是起到了类似于minibatch sampling的一样的,平衡正负样本的作用。

\alpha =0.5的时候,为传统的的binary cross entropy,可以观察到当\alpha =0.75的时候,AP得到了明显提升。

\alpha的基础上引入参数\gamma,可以看到在\alpha =0.25\gamma =2的情况下AP最高。

RetinaNet

网络结构

网络结构上RetinaNet没有提出新的东西,就是FPN和PCN的结合,骨干网络选择ResNet,是一个较为典型的one-stage目标检测方法。值得一提的是,backbone后,RetinaNet将目标分类和目标框回归分解成了两个子网络,如下图:

这里要说明一下,RetinaNet中作者提取了FPN中的P3~P7层(P_{l}代表相较于input大小除以2^{l})作为feature map,而没有采用具有更高分辨率的P2往上层,这样 是出于计算量考量,毕竟更高层虽然有更加丰富的特征但是也有更大分分辨率,会增加计算量。

且P3~P5和传统FPN相同,通过top-down和相加得到对应的层;而P6层是通过C5直接通过3*3的步长为2的卷积计算而来,P7则是通过P63*3的步长为2的卷积计算而来,作者说这样是兼顾计算量和准确性考虑。

参数初始化

对于分类网络classification subnet,对于最终的卷积层的bias参数,作者初始化成了b=-log((1-\pi )/\pi ),π经过实验测试当π取值为0.01的时候效果最好(我本人认为这就很玄学了)。

效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值