目标检测网络之retinanet解读(一)

原文链接:https://www.jianshu.com/p/6388838d8ae7

[Paper:Focal Loss for Dense Object Detection]
[https://arxiv.org/abs/1708.02002]
关于目标检测主要分为两大类别:one stage,two stage
one stage 代表:yolo系列,ssd(特点:检测精度低,但检测速度快)
two stage 代表:R-CNN系列,SPPNet(特点:检测精度高,但检测速度慢)

在论文中作者去探讨了造成one stage精度低的原因,发现在训练密集目标检测器的过程中出现了严重的foreground-background类别不平衡。

首先,什么是“类别不平衡”呢?

检测算法在早期会生成很多bbox,而在一幅正常的图像中需要检测的object不会很多,这就意味着多数的bbox是属于background,使得foreground-background类别不平衡。

存在类别平衡问题为什么会导致检测精度低呢?

因为bbox数量很多,而属于background的bbox太多了,假设分类器将所有的bbox全部归为background,那么精度也会很高,而这样的分类器是一个失败的分类器,所以导致目标检测的精度很低。

那么,为什么two stage机制的目标检测器可以达到很高的精度呢?

因为two stage的第一个阶段生成一个候选目标位置组成的稀疏样本集,即RPN简单的对anchor进行二分类(只是区分是foreground和background,并不会区别细类),这样,属于background类别的bbox会大量减少,虽然其数量依然远大于foreground的bbox(例如3:1),但已不像最初生成anchor差别那么大了,这一阶段最终结果是从“类别极不平衡”到“类别较不平衡”转变,也就是说two stage并不能完全解决类别不平衡问题,第二个阶段使用一个卷积神经网络将各候选位置归置foreground类别或者background类别,即在初步筛选后的bbox上进行难度小得多的分类(细分类),这样分类器便得到了较好的训练,从而精度提高了。但因为是经过了两个阶段的处理,操作复杂,使得检测速度变慢了。

为什么one stage系列无法避免这个问题呢?

因为one stage系列的检测器直接在“类别极不平衡”的bbox中进行难度极大的细分类,直接输出bbox和标签,而原有的交叉熵损失(CE)作为分类任务的损失函数,无法抗衡“类别极不平衡”(会在另一篇文章中详细讲解交叉熵损失),容易导致分类器训练失败。因此,one stage检测虽然速度快,但检测精度低。

既然one stage中的交叉熵损失函数无法抗衡“类别极不平衡”,所以retinanet作者何恺明及其团队提出Focal Loss替换交叉熵损失来提高检测精度。

Focal Loss的形式是怎样的,有什么含义?

首先介绍一下二分类的交叉熵损失:

wenyilab

公式(1)中,y∈{±1} 指定了ground-true class,p∈[0,1] 是模型对于标签y = 1的类的估计概率。为了方便,我们定义Pt:
wenyilab

公式(2)可以转换为:


wenyilab

解决类别不平衡的常见方法是分别为class1和class-1加入加权因子α∈[0; 1]、1-α。所以α-balanced 的CE损耗可写为:

wenyilab

鉴于以上的改进过程的思想,可以将交叉熵损失增加一个调节因子(1 - pt)γ,其中γ≥0。这样便出现了Focal Loss,其定义为:


wenyilab

在实践过程中使用的Focal Loss形式为:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值