我们都知道二阶段的检测精度较高、但是速度慢;一阶段的检测检测精度低但是速度快。Focal Loss的设计目的就是让一阶段有二阶段的精度但是保持速度。

一阶段检测器精度低主要是由于正负样本失衡(而TP,FP又可以分为四种),刚开始一阶段直接就是以IOU为衡量标准去选择TP、FP,这样会引发:
1、neg太多以至淹没pos
2、neg大多是易分的
易分负样本反向梯度小,对模型训练作用小

二阶段为什么好,主要是先会根据score高低选出最有可能是前景的n个样本,这样就会把大多数易分负样本过滤;然后会根据IOU调整pos和neg的比例,防止neg过多,也防止了难分易分负样本。

后来一阶段有了online hard example mining(OHEM),这个东西就是通过对loss排序,选出loss最大的example(困难样本)来训练,这样就能保证训练时都说难分的,但是这会把易分的全部过滤了,造成易分样本无法进一步提升精度。

引入了focal loss,
focal是在交叉熵loss上进行修改而来的,这个loass通过减少易分样本的权重,是model在train时候更专注于难分样本
目标检测之Focal Loss(Retinanet)
易分样本的概率比较大,pt就会很大,调制系数就会很小(实验中阿尔法=0.25,gamma为2),换就话说一份样本就被控制了,其中若阿尔法为0,就是交叉熵。

实验证明:Retinanet既有速度又有精度,一个参数控制正负,一个参数控制难易。

但是,两个超参调节是focal loss的缺点(参数不好选择)。

引入了GHM(梯度调和机制),这是一种正负样本梯度的问题。

引入了GIOU。

相关文章: