focal loss
论文地址:https://arxiv.org/pdf/1708.02002.pdf
传统的交叉熵损失函数:
定义pt如下。
那么公式可以改写为
我们可以用αt来改进交叉熵公式。
αt是个(0,1)的数,定义和pt差不多。取α为0.25,当为正样本时α是0.25,权重小,负样本时α时0.75,权重就大一些。
focal loss公式:
我猜FL是个pt的单调递减函数。γ=1的时候可以证明。p越小FL的权重就越大。
例如当p=0.9,γ=2时,y=1,FL=1/100 * CE
当p=0.5,γ=2时,y=1,FL=0.25 * CE
当p=0.1,γ=2时,y=-1,FL=0.81 * CE
Focal Loss通过调整loss的计算公式使单级结构达到和Faster RCNN一样的准确度,公式是Focal Loss的计算方法。pt是不同类别的分类概率,r是个大于0的值,at是个[0,1]间的小数,r和at都是固定值,不参与训练。r和at的最优值是相互影响的,所以在评估准确度时需要把两者组合起来调节。作者在论文中给出r=2、at=0.25时,ResNet-101+FPN作为backbone的结构有最优的性能。
RetinaNet
RetinaNet is a single, unified network composed of a backbone network and two task-specific subnetworks.
The backbone is ResNet-FPN , construct a pyramid level with levels P3 and P7.
The subnetworks is classification and bbox regression.
Anchor; A=9 and each anchor is k+4 vector.
这个结构要注意几点:
1、训练时FPN每一级的所有example都被用于计算Focal Loss,loss值加到一起用来训练;
2、测试时FPN每一级只选取score最大的1000个example来做nms;
3、整个结构不同层的head部分(图2的c和d部分)共享参数,但分类和回归分支间的参数不共享;
4、分类分支的最后一级卷积的bias初始化成前面提到的-log((1-π)/π);
这个网络在coco数据集上达到了39.1的mAP。
γ对loss的影响:
各类算法的比较: