来源:https://www.cnblogs.com/king-lps/p/9497836.html

编辑:石头

1. 总述

Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。

2. 损失函数形式

Focal loss是在交叉熵损失函数基础上进行的修改,首先回顾二分类交叉上损失:

是经过激活函数的输出,所以在0-1之间。可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。那么Focal loss是怎么改进的呢?

首先在原有的基础上加了一个因子,其中gamma>0使得减少易分类样本的损失。使得更关注于困难的、错分的样本。

例如gamma为2,对于正类样本而言,预测结果为0.95肯定是简单样本,所以(1-0.95)的gamma次方就会很小,这时损失函数值就变得更小。而预测概率为0.3的样本其损失相对很大。对于负类样本而言同样,预测0.1的结果应当远比预测0.7的样本损失值要小得多。对于预测概率为0.5时,损失只减少了0.25倍,所以更加关注于这种难以区分的样本。这样减少了简单样本的影响,大量预测概率很小的样本叠加起来后的效应才可能比较有效。

此外,加入平衡因子alpha,用来平衡正负样本本身的比例不均:文中alpha取0.25,即正样本要比负样本占比小,这是因为负例易分。

只添加alpha虽然可以平衡正负样本的重要性,但是无法解决简单与困难样本的问题。

gamma调节简单样本权重降低的速率,当gamma为0时即为交叉熵损失函数,当gamma增加时,调整因子的影响也在增加。实验发现gamma为2是最优。

3. 总结

作者认为one-stage和two-stage的表现差异主要原因是大量前景背景类别不平衡导致。作者设计了一个简单密集型网络RetinaNet来训练在保证速度的同时达到了精度最优。在双阶段算法中,在候选框阶段,通过得分和nms筛选过滤掉了大量的负样本,然后在分类回归阶段又固定了正负样本比例,或者通过OHEM在线困难挖掘使得前景和背景相对平衡。而one-stage阶段需要产生约100k的候选位置,虽然有类似的采样,但是训练仍然被大量负样本所主导。

清晰易懂的Focal Loss原理解释相关推荐

  1. Focal loss原理解析

    Focal Loss for Dense Object Detection ICCV2017 RBG和Kaiming大神的新作. 论文目标 我们知道object detection的算法主要可以分为两 ...

  2. Generalized Focal Loss 原理与代码解析

    Paper:Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Det ...

  3. 目标检测 | 清晰易懂的SSD算法原理综述

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 SSD(Single Shot Detection)是一个流行且强 ...

  4. 清晰易懂的条件随机场原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 如果问机器学习初学者,<统计学习方法>中最难理解的章节 ...

  5. Focal Loss --- 从直觉到实现

    作者 | 虎哥@知乎 整理 | NewBeeNLP 做机器学习分类问题,难免遇到Biased-Data-Problem, 例如 CV的目标检测问题: 绝大多数检测框里都是 backgroud NLP的 ...

  6. 【CV】10分钟理解Focal loss数学原理与Pytorch代码

    原文链接:https://amaarora.github.io/2020/06/29/FocalLoss.html 原文作者:Aman Arora Focal loss 是一个在目标检测领域常用的损失 ...

  7. pytorch gather_【CV】10分钟理解Focal loss数学原理与Pytorch代码

    原文链接:https://amaarora.github.io/2020/06/29/FocalLoss.html 原文作者:Aman Arora Focal loss 是一个在目标检测领域常用的损失 ...

  8. CE Loss,BCE Loss以及Focal Loss的原理理解

    一.交叉熵损失函数(CE Loss,BCE Loss) 最开始理解交叉熵损失函数被自己搞的晕头转向的,最后发现是对随机变量的理解有偏差,不知道有没有读者和我有着一样的困惑,所以在本文开始之前,先介绍一 ...

  9. Focal loss 中两个加权参数的原理和产生的影响

    首先需要明确一个在损失函数中的加权细节:想要在损失函数中对样本进行加权,那么加权的思路应该要是逆向的.因为损失函数的优化目标是越小越好,所以你越想保护的部分应该给予小权重,使得这部分可以大.而越想惩罚 ...

最新文章

  1. 中美程序员的不完全对比,看看跟你了解的一样吗?
  2. python列拼接dataframe_如何将两个dataframe中的两列合并为新dataframe(pandas)的一列?...
  3. python自带编译器如何生成exe_别再问我怎么Python打包成exe了!
  4. Python之钉钉机器人推送天气预报
  5. SVN中trunk,branches,tags用法详解
  6. verilog实现多周期处理器之——(五)移动操作(通用数据传送)指令的实现
  7. 蓝桥杯2015年第六届C/C++省赛A组第九题-垒骰子
  8. Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
  9. 如何编写一个Makefile文件(手把手的教你)
  10. 用计算机采集光栅尺的数据,基于PLC的光栅尺数据采集系统及方法与流程
  11. BigDecimal精度控制
  12. UPC 2020年夏混合个人训练第五十场【DEG】
  13. 国产开源「文本-视频生成」模型!免费在线体验,一键实现视频生成自由
  14. [附源码]java毕业设计汽车票售票系统lunwen
  15. MATLAB光谱特征波长提取,uve算法提取光谱特征波长
  16. 网易运营微专业_运营基础
  17. 3dmax2019删除不想要的模型部分
  18. spring boot+MySQL婚纱影楼管理系统vue
  19. 【360安全卫士显示界面异常解决】
  20. 天价NFT,24*24像素头像

热门文章

  1. 【机器学习】基于人工鱼群算法的多元非线性函数寻优
  2. moravec 角点检测
  3. 整理了 65 个 Matplotlib 案例,这能不收藏?
  4. 人大团队研究:面向文本生成,预训练模型进展梳理
  5. 关于深度学习编译器,这些知识你需要知道
  6. GitHub标星10,000+,Apache项目ShardingSphere的开源之路
  7. 2020年AI如何走?Jeff Dean和其他四位“大神”已做预测!
  8. Google、微软、阿里、腾讯、百度这些大公司在GitHub上开源投入排名分析 | CSDN原力计划...
  9. 一天掌握AI核心技术,上手应用,开发者该划哪些重点?
  10. 专访百度熊辉:有人转AI纯粹因为好找工作,这样的人不是我想要的