首页 > 编程语言 >【CV算法基础】FocalLoss理解

【CV算法基础】FocalLoss理解

时间:2022-08-31 19:22:20浏览次数:103  
标签:loss 样本 分类 FocalLoss 调制 算法 CV focal stage

  作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。既然有了出发点,那么就要找one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:样本的类别不均衡导致的。负样本数量太大,占总的loss的大部分,而且多是容易分类的,因此使得模型的优化方向并不是我们所希望的那样。OHEM算法(online hard example mining)虽然增加了错分类样本的权重,但是OHEM算法忽略了容易分类的样本。Focal Loss函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。 因此可以通过设定a的值来控制正负样本对总的loss的共享权重。a取比较小的值来降低负样本(多的那类样本)的权重。 疑问:为什么α取较小的值可以降低负样本的权重??负样本占比较多。 显然前面的公式3虽然可以控制正负样本的权重,但是没法控制容易分类和难分类样本的权重,于是就有了Focal Loss: 这里的γ称作focusing parameter,γ>=0。幂次函数称为调制系数。 为什么要加上这个调制系数呢?目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。 两个重要性质:

  1. 当一个样本被分错的时候,pt是很小的,那么调制因子(1-Pt)接近1,损失不被影响;当Pt→1,因子(1-Pt)接近0,那么分的比较好的(well-classified)样本的权值就被调低了。因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。
  2. 当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。 专注参数γ平滑地调节了易分样本调低权值的比例。γ增大能增强调制因子的影响,实验发现γ取2最好。直觉上来说,调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围,增加了那些误分类的重要性。
focal loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失的贡献。 在实验中a的选择范围也很广,一般而言当γ增加的时候,a需要减小一点(实验中γ=2,a=0.25的效果最好)。 看了相关的博客文章,有的说到实际上focal loss是一个工程上的东西,其梯度曲线和交叉熵损失函数没有太大差别了,也就是说focal loss的设计没有起啥作用。 对于多分类呢??? 多分类的focal loss就是pt是对应的结果数值,不是一个而是多个,类似于矩阵点乘,确定之后,α和γ是定值。Pt可以选择softmax,或者其他概率值函数。

二分类:

多分类

 

参考

1. Focal Loss for Dense Object Detection

2. 【trick 3】Focal Loss —— 解决one-stage目标检测中正负样本不均衡的问题

3. Focal loss原理解析

标签:loss,样本,分类,FocalLoss,调制,算法,CV,focal,stage
From: https://www.cnblogs.com/happyamyhope/p/16624589.html

相关文章

  • 一致性哈希算法 consistent hashing
     在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先......
  • AI智能分析网关包含哪些深度学习算法?如何赋能场景应用?
    AI深度学习技术正在呈现飞速增长的状态,有数据分析预测,到2030年,AI有望实现13万亿美元的市场规模。尤其是伴随着智慧城市、智能交通、工业互联网、生产制造等应用场景对视频......
  • 算法复杂度
    递归普通情况,n只进行加减,多少的n次方,取决于返回几个voidfun(intn){...returnfun(n-1)}上面的就是O(n)voidfun(intn){...returnfun(n......
  • 算法 - 螺旋矩阵 II
    59.螺旋矩阵II这道题困扰了我很久,一些边界值控制比较繁琐,但是偶然发现按照以下方法写,在Leetcode可以AC。classSolution{publicstaticint[][]generateMatrix(......
  • Gosper's Hack 算法
    XIN队算法之枚举组合.枚举组合的一个非递归做法叫Gosper'sHack算法,思路就是对每个组合,用01串表示其选或不选,这样必然可以表示所有组合.我们考虑如何生成一个组合......
  • 字节对齐算法
    字节对齐算法字节对齐是在分配内存时需要考虑的问题,两个小算法:(1)最容易想到的算法:1unsignedintcalc_align(unsignedintn,unsignedalign)2{3if(n/......
  • 问题 N: Number Multiplication --Pollard-Rho算法质因数分解
    问题N:NumberMultiplication题意:给你m个M点,n个N点,M都是质数,N是和它相连的M的乘积,然后告诉你每个N点的值,求M点直接对每个N分解质因数即可,测试欧拉筛筛到4e7再......
  • 机器学习和 Python 中的贷款偿还预测(决策树算法)。
    机器学习和Python中的贷款偿还预测(决策树算法)。资源→我需要了解我的客户是否会归还他们从我的银行获得的贷款。问题陈述:-使用python中的决策树算法预测客户是否......
  • 使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法
    在学习操作系统的时候,我们会学到系统安全的章节,而在这一块会有关于加密解密算法的学习。一共有5种常见的加密解密算法:凯撒密码、字母倒排序、单表置换、维基利亚、转换加......
  • Python中的搜索算法。 #Python 系列 - 9
    Python中的搜索算法。#Python系列-9所以到目前为止,我们已经学习了python的基础知识。但是,我们从未见过这些基本原理的应用。在本文中,我们将看到两种处理在列表中搜索......