《Focal Loss for Dense Object Detection》论文阅读总结

论文:《Focal Loss for Dense Object Detection》
信息: RBG和Kaiming大神在ICCV2017年的大作
论文地址:https://arxiv.org/abs/1708.02002

最近才读到这篇文章,发现自己之前的paper的idea在方向上与这篇论文有些类似,不过解决办法和对问题的理解上不得不感叹凯明大神他们的高明,难以望其项背。而自己一直做的回归问题,毕竟回归问题和分类问题有着很大的差别,所以一直关注的是有关回归相关的任务,个人觉得回归问题比分类问题可能难一些,因为回归问题要找的是拟合曲面而分类问题要找的是分类曲面。这篇文章对样本类别不均衡问题的理解和Focal Loss Function的提出也给了我很大的启发。样本类别不均衡问题几乎是所有问题的通病,所以这篇文章是很有价值的。

Why Focal Loss

这篇文章一个重要的贡献点是基于交叉熵损失函数提出Focal loss,那么为什么 先讲一个故事:高三那年,一次月考摸底考试我考了40(很衰,总分是100)
老师大骂:小明,你每天在干什么,考得这么差,你看看这题,上次考过的题上次错这次又错,再看看这题,我讲过800遍了。
:老师,我每天都好好听课了,也不停的在写三年高考五年模拟之类的资料书,可就是每次考试考不好。
老师:你有错题集吗?
:错题集是干什么的?
老师:你找一个本子,每次做错的题都记在本子上,并分析你为什么做错,并且想想下次考会有哪些变化。要保证下次不会再做错这样的题。三年高考五年模拟是怎么做的?
:(自豪)我可是一个题不落全做。
老师:资料书子类的要有选择性的做,遇到自己熟悉且会做题可以选择性的跳过,这样才能节省时间去做你不会的题。

何大神这篇论文讲的就是这个故事。九年义务教育+魔鬼高中三年,我们一直在训练一个做题模型(model),那就是我们自己。如果一门科目的ground-truth是100分,我们考了40(prediction),如果只是考试(forward pass)而不去反思做错的60=100-40(loss)分的题(backward pass),那么我们将永远只会做自己会做的题,永远不会进步。而错题本绝对是解决这个问题的利器(错题本里面记载题目就好比是数据集中的negative examples)。另外,我们知道高考是一个人才层次选拔性的考试,大部分的题不难,难的部分才是决定一个学生(model)是上985/211,还是进普通院校。但是难的题不管是考试还是市面上的学习资料都是占比较少的(样本类别不均衡问题,这也是正常的,你先保证你能上普通院校才有能力去拼搏985/211),我们做资料(data)的时候,必须选择性的做,如果大部分的时间用在重复地做自己会做的容易的题目(easy examples),必然考场上遇到难题(hard examples)时候我们将束手无措。(这个故事也不完全相符,可以帮助大家理解文章样本类别不均衡问题)

论文中首先对比了在object detection 领域中,目前具有代表性的one-stage和two-stage model优缺点进行了对比,前者速度快,但准确度上差强人意,而后者准确度高但是速度慢。作者希望综合两者之间的优点,也就是one-stage model在保证速度的同时也能达到two-stage的accuracy。作者发现one-stage model准确度不高主要是样本类别不均衡导致的。一张图片中我们可能获得成千上万的candidate locations 但是positive examples却很少(具有类别信息的examples很少),这是不利于模型对具有类别信息的positive examples的学习的。其次,hard examples也很少,这就导致easy examples由于数量多,它产生的梯度会主导模型的学习过程,会削弱hard examples的作用,降低模型对hard examples 的判别能力。

Focal Loss

那么如何解决这个问题呢?作者基于标准的交叉熵损失函数提出Focal Loss 解决这些问题。对于二分类问题,标准的cross entropy loss 是:
这里写图片描述
如果定义 pt p t 为:
这里写图片描述
那么公式(1)可以重写为 CE(p,y)=CE(pt)=log(pt) C E ( p , y ) = C E ( p t ) = − l o g ( p t )
一般地,为了平衡positive/negative examples的作用,我们赋予一个权重因子 α α 给正样本的loss,而负样本的权重是 (1α) ( 1 − α ) ,因此交叉熵损失函数重写为:
这里写图片描述
但是权重因子 α α 只能解决positive/negative examples问题,不能区分easy/hard examples问题。解决easy/hard examples问题关键所在是如何抑制容易分类的样本的梯度的作用。我们知道,越容易分类的样本,其 pt p t 越大越接近1,因此如将 (1pt) ( 1 − p t ) 作为样本的损失权重就能却分easy/hard的问题并起到抑制作用。而采用指数形式 (1pt)γ ( 1 − p t ) γ 就能调整该抑制作用的大小,这也是作者提出一个调整因子。因此我们再次重写交叉熵损失函数:
这里写图片描述
这里实验中 γ=2 γ = 2 的时候,效果最好。
论文中,作者还提出了一个RetinaNet网络,它通过Focal loss进行训练最终取得十分不错的检测效果。该网络主要是基于Feature Pyramid Network[1],后面再对该论文进行详细阅读。

reference

[1] Lin T Y, Dollár P, Girshick R B, et al. Feature Pyramid Networks for Object Detection[C]//CVPR. 2017, 1(2): 4.

你可能感兴趣的:(计算机视觉,Deep,Learning(深度学习),Machine,Learning(机器学习))