损失函数:Focal Loss( 二 )


这样做的好处就是:

损失函数:Focal Loss

文章插图
正样本:概率越小 , 表示hard  , 损失越大; 负样本:概率越大 , 表示hard  , 损失越大 。
这样 , (正样本)当对于简单样本 , Pt会比较大 , 所以权重自然减小了 。针对hard  , Pt比较小 , 则权重比较大 , 让网络倾向于利用这样的样本来进行参数的更新(可参考上图思考) 。且这个权重是动态变化的 , 如果复杂的样本逐渐变得好分 , 则它的影响也会逐渐的下降 。
gamma调节简单样本权重降低的速率 , 当gamma为0时即为交叉熵损失函数 , 当gamma增加时 , 调整因子的影响也在增加 。实验发现gamma为2是最优 。
3、Focal Loss的生成
最终 , 我们把这两种单独的改进进行合并 , 最终Focal Loss的形式为:
既做到了解决正负样本不平衡 , 也做到了解决easy与hard样本不平衡的问题 。
这里的两个参数α和γ协调来控制 , 论文采用α=0.25 , γ=2效果最好 。
三、Caffe实现
修改:
layer {name: "mbox_loss"type: "MultiBoxFocalLoss" #change the typebottom: "mbox_loc"bottom: "mbox_conf"bottom: "mbox_priorbox"bottom: "label"top: "mbox_loss"include {phase: TRAIN}propagate_down: truepropagate_down: truepropagate_down: falsepropagate_down: falseloss_param {normalization: VALID}focal_loss_param { #set the alpha and gamma, default is alpha=0.25, gamma=2.0alpha: 0.25gamma: 2.0}multibox_loss_param {loc_loss_type: SMOOTH_L1conf_loss_type: SOFTMAXloc_weight: 1.0num_classes: 2share_location: truematch_type: PER_PREDICTIONoverlap_threshold: 0.5use_prior_for_matching: truebackground_label_id: 0use_difficult_gt: trueneg_pos_ratio: 3.0neg_overlap: 0.5code_type: CENTER_SIZEignore_cross_boundary_bbox: falsemining_type: NONE #do not use OHEM(online hard example miniing)}}
参考链接:https://blog.csdn.net/LeeWanzhi/article/details/80069592caffe相关配置:https://blog.csdn.net/wfei101/article/details/79477542Focal Loss的Caffe源码:https://download.csdn.net/download/duan19920101/12150017