focal loss个人理解

对于目标定位和分割来讲,严重存在正负样本不匹配现象,导致网络趋向于负样本。如何更好的学习正样本,常见的方法是交叉熵前面加上一定的beta系数。

方法一:

拿分割任务简单介绍下:设图片大小为256*256,分割目标大小为30*30。则beta_p = 256*256/(30*30) =72.8

beta_n = 256*256/(256*256-900) =1.01    拿这两个权重对二分类损失进行加权,代码比较简单就不粘贴了。

方法二:

这个公式拿上面的例子进行计算的情况下:w+=  (256*256-900)/(256*256) = 0.986

w- = (30*30)/(256*256) = 0.0137     w+  和 w-和为一

下面介绍下focal_loss     参考论文大神何凯明https://arxiv.org/pdf/1708.02002.pdf

二分类(sigmoid)

这个公式是根据前面的公式修改的,主要有两个超参数alpha和gamma。

其中超参数论文给出的最优值是alpha=0.25,gamma=2。alpha是用来调节正样本惩罚的比例,一般需要根据不同的数据集进行调整。alpha设置为0.25,相当于正负样本权重比为0.25:0.75==1:3。gamma就是调节容易样本所占权重的一个超参数。相当于对全部正负样本进行平衡,和在线困难样本挖掘略有不同。

多分类(sigmoid)   one-hot编码

多分类采用上面的公式,虽然采用one-hot编码,但是网络最后的输出是采用sigmoid,而不是softmax。虽然softmax也可以,但是论文指出softmax没有sigmoid好。多分类也是采用二分类进行计算,并不是采用常用的-ylogy这个公式,还是采用二分类交叉熵公式-(ylogy+(1-y*log(1-y))),也就是说直接将one-hot进行二分类交叉熵损失计算。

对于目标检测来讲,正负样本都是采用这个公式,并没有关注于哪一个anchor是正是负。只是关注于one-hot里面1的损失。总的来讲就是为了平衡里面的0和1。这是个人的理解,如有不对欢迎指出来。

目标检测我常用的损失是关注于one-hot编码采用-ylogy这个公式,计算出正样本的loss,然后从负样本中挑选一定比例的负样本loss,两者之和用来更新网络。以上指的是分类损失,回归就是采用常用的smooth_l1_loss。

本人还是觉得使用softmax套用二分类的形式进行计算才符合正负困难样本比例平衡,因为网络标签是one-hot编码,只需要在不同的样本类前面调整alpha就好,根据alpha去平衡数据中不同数据的占比,相当于设置了一个权重配比而已。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值