该损失函数提出于柯凯明大神的论文–RetinaNet : Focal Loss for Dense Object Detection

Focal loss 目标

one-stage目标检测网络像SSD/YOLO一般在模型训练时会先大密度地在模型终端的系列feature maps上生成出10,000甚至100,0000个目标候选区域,然后再分别对这些候选区域进行分类与位置回归识别。
然而在这些生成的数万个候选区域中,绝大多数是背景区域,这就存在样本类别不均衡问题。easy negative examples会对loss起主要贡献作用,会主导梯度的更新方向,少量正样本提供的关键信息不能在一般所用的training loss中发挥正常作用,从而无法得出一个能对模型训练提供正确指导的loss。
常用的解决此问题的方法就是负样本挖掘。

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

Focal loss函数形式

基于二分类交叉熵(BCE)改进而来,首先回顾BCE loss。
二分类交叉生损失函数形式如下:

令:

那么可以得到:

y是预测输出。

该损失函数对于正样本而言,输出概率越大,loss越小,对于负样本而言,输出概率越小,损失越小。如果此时有大量的负样本,那么就有可能损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。

如下图,即使是(负样本)easy examples(Pt >> 0.5),它的loss也很高,如下图蓝线。
即使是easy examples(Pt >> 0.5),它的loss也很高,如下图蓝线。

那对于BCE而言,怎么降低大量负样本的影响呢?
作者引入了α系数,变为如下形式:

因子的大小一般为相反类的比重。即负样本越多,我们给它的权重越小。这样就可以降低负样本的影响。

但这只是解决了正负样本的不平衡,并没有解决easy和hard examples之间的不平衡。
因此,针对easy和hard 样本,我们定义Focal loss。
Focal loss形式如下:

简化改写为:

对于简单样本,Pt会比较大,所以权重减小,针对hard example,Pt比较小,则权重比较大,让网络倾向于利用这样的样本来进行参数的更新。
结合两个改进,可以得到最终的Focal loss:

同时解决了正负样本,难易样本不均衡的问题。

参考:
https://blog.csdn.net/LeeWanzhi/article/details/80069592

Focal损失函数学习笔记相关推荐

  1. 【人脸识别】人脸识别损失函数学习笔记

    目录 一.SphereFace:A-Softmax(CVPR2017) 1.1 传统的softmax Loss(第二章中有更详细的公式解释): 1.2 sphereface对softmax进行了两点改 ...

  2. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优

    Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...

  3. PyTorch学习笔记(21) ——损失函数

    0. 前言 本博客内容翻译自纽约大学数据科学中心在2020发布的<Deep Learning>课程的Activation Functions and Loss Functions 部分. ...

  4. 深度学习新的采样方式和损失函数--论文笔记

    深度学习新的采样方式和损失函数--论文笔记 论文<Sampling matters in deep embedding learning> 论文地址:https://arxiv.org/p ...

  5. 3D目标检测学习笔记

    博主初学3D目标检测,此前没有相关学习背景,小白一枚-现阶段的学习重点是点云相关的3D检测. 本文是阅读文章:3D Object Detection for Autonomous Driving: A ...

  6. YOLOV3论文阅读(学习笔记)

    cv小白的yolov3学习笔记总结 论文下载地址:YOLOv3: An Incremental Improvement yolov网址:https://pjreddie.com/darknet/yol ...

  7. blazeface学习笔记

    完整的应该是一个人脸识别项目,人脸识别,大言不惭的说,我之前其实也做过,比如用dlib来做人脸识别,就是用opencv那一套来实现,说句实在话,速度非常慢,即便是在intel CPU上,一秒也就两三帧 ...

  8. 笔记 | 吴恩达Coursera Deep Learning学习笔记

    向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...

  9. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  10. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

最新文章

  1. 总结:被MySQL UTF8编码坑的惨痛教训...
  2. win7怎么跳过硬盘自检_win10系统改装win7步骤教程
  3. ubuntu改变@后面的主机名
  4. 创新学习对象1-陕西省网络与系统安全重点实验室研究员的李光夏老师
  5. 120. 三角形最小路径和
  6. Android Flutter 内存机制初探
  7. 【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程...
  8. xsl判断节点存在_HashMap1.8之节点删除分析
  9. SOA研究综述(转)
  10. 微软消息队列MSMQ 传输异常的总结!
  11. c语言80c51控制系统设计,89C51单片机的步进电动机控制系统设计
  12. 给大学生的劝告,你们为何应该开始接触 Unix/Linux
  13. 学习笔记 JavaScript ES6 声明方式const(二)
  14. catia今天突然打不开了_catia打不开的解答
  15. 在Excel中如何实现快速互换两列内容
  16. JZOJ4816. label
  17. 线程死锁、锁死、饥饿、活锁讲解
  18. viewpager禁止左右滑动
  19. 小白学习之路,网络编程(上)
  20. 《Google Android 开发入门与实战》

热门文章

  1. [转]AndroidTolls国内镜像
  2. GEE开发之Sentinel-2计算NDVI和数据分析
  3. 温度报警器c语言课程设计,综合电子设计课程设计实验报告-可调温度报警器.doc...
  4. 黑马程序员pink老师Javascript语法基础 | 总结
  5. 苹果手机如何设置喜欢的铃声?想给自己的iphone换个别具特色的铃声吗?
  6. 涂抹果酱(状压dp)
  7. 差分 --算法竞赛专题解析(32)
  8. 电商小程序开发要多少钱?一文看懂电商小程序开发成本
  9. 使用kodexplorer搭建私人云存储服务器
  10. Java 基础篇--字符串