Focal Loss

Background

现在的object detection主要分为两大类:

  1. two-stage detecor,以Faster-RCNN为代表,需要region proposal net来提取proposal,接着对提取出的proposal进行分类和精确坐标回归。这类算法可以达到很高的准确率,但因为需要单独对每个proposal进行分类/回归,速度较慢。
  2. one-stage detector,以YOLO和SSD为代表,不需要region proposal,直接回归/分类。这类算法速度很快,但是准确率不如前者。

计算Loss的bbox可以分为positive和negative两类。

  1. 当bbox与ground truth间的IOU大于阈值时,会认为该bbox属于positive example
  2. 当bbox与ground truth间的IOU小于阈值时,会认为该bbox属于negative example。其中,大多数的negative example不在前景和背景的过度区域,容易分类,称为easy negative

one-stage detector的识别准确率不高的原因:

  • 极度不平衡的正负样本比例: negative example过多造成它的loss太大,以至于把positive的loss都淹没掉了,不利于目标的收敛;而且绝大部分负样本都 是easy example,这就导致下面一个问题:
  • gradient被easy example dominant:easy negative在训练时对应的背景类score会很大,也就是单个example的loss很小,反向计算时梯度小。梯度小造成easy negative example对参数的收敛作用很有限。我们更需要loss大的对参数收敛影响也更大的example,即hard positive/negative example。

Solution strategy

 

1.按照class比例加权重:最常用处理类别不平衡问题的方式。eg:

2.OHEM:只保留loss最高的那些样本,完全忽略掉简单样本。它通过对loss排序,选出loss最大的example来进行训练,这样就能保证训练的区域都是hard example。这个方法有个缺陷,它把所有的easy example都去除掉了,造成easy positive example无法进一步提升训练的精度。

3.OHEM+按class比例sample:在前者基础上,再保证正负样本的比例(1:3)

Faster RCNN很好的规避上述两个问题。做法:

  1. 会根据前景score的高低过滤出最有可能是前景的example (1K~2K个),因为依据的是前景概率的高低,就能把大量背景概率高的easy negative给过滤掉,这就解决了前面的第2个问题;
  2. 会根据IOU的大小来调整positive和negative example的比例,比如设置成1:3,这样防止了negative过多的情况(同时防止了easy negative和hard negative),就解决了前面的第1个问题。所以Faster RCNN的准确率高。
  3. 另外还通过hard negatiive mining(OHEM),控制难分样本占据的比例,以解决样本类别不均衡的问题。 

对于one-stage的检测器来说,尽管可以采用同样的策略(OHEM)控制正负样本,但是还是有缺陷。

 


FL

Focal Loss通过调整loss的计算公式使one-stage达到和Faster RCNN一样的准确度。这个函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。

上面at=0.25是相对于负样本的。

  \alpha为权重系数,当为正样本时,  \alpha \in \left [ 0,\, 1 \right ] ,为负样本时,1-\alpha

增加了一个系数at,跟pt的定义类似,当label=1的时候,at=a;当label=-1的时候,at=1-a,a的范围也是0到1。因此可以通过设定a的值(一般而言假如1这个类的样本数比-1这个类的样本数多很多,那么a会取0到0.5来增加-1这个类的样本的权重)来控制正负样本对总的loss

调制因子:当γ=1时

当一个样本被分错的时候,Pt是很小的,那么调制因子(1-Pt)约等于1。因此调制系数就趋于1,损失不被影响,也就是说相比原来的loss是没有什么大的改变的

当一个样本被正确分类的时候Pt→1,调制因子(1-Pt)约等于0,那么分的比较好的(well-classified)样本的权值就被调低了。因此当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。

聚焦参数γ:

当γ=0的时候,focal loss就是传统的交叉熵损失。

当γ增加的时候,调制系数也会增加。 γ增大能增强调制因子的影响,实验发现γ取2最好

调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围。

举个栗子:当γ=2,对于一个easy example(negative/positive)

  1. 当pt=0.9时,它的loss要比标准的交叉熵loss小100倍,
  2. 当pt=0.968时,它的loss要比标准的交叉熵loss小1000倍,
  3. 对于hard example(pt < 0.5),loss最多小了4倍。则hard example的权重相对就提升了很多。这样就增加了那些误分类的重要性。

推广到多分类:
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值