正负样本不平衡处理方法总结【转】
转自:watersink
1, Bootstrapping,hard negative mining
最原始的一种方法,主要使用在传统的机器学习方法中。
比如,训练cascade类型分类模型的时候,可以将每一级分类错误的样本继续添加进下一层进行训练。
比如,SVM分类中去掉那些离分界线较远的样本,只保留离分界线较近的样本。
2, heuristic sampling
标准的faster-RCNN中,假设正样本IOU(0.7~1.0)。负样本IOU(0.1~0.3),hard 负样本IOU(0.0~0.1)。比如实际的RPN网络中,实际最后的anchor经过NMS处理后的负样本是很多的,假如有100000个。而实际训练的正负样本比例为1:3,负样本大概只需要2000-3000个。这时就只选择那些hard负样本,这样实际训练出来的效果最好。
3, online hard example mining(OHEM)
出自,Training Region-based Object Detectors with Online Hard Example Mining这篇文章,
在faster RCNN这样的框架下,在原始的网络基础上,新接入了一个绿色的Read-only Layer,该网络对所有的ROI进行前向传播,并计算最后的loss,然后红色的网络对其中loss较大的ROI进行前向和后向传播,可以说是一种动态的选择性的传播梯度。优势也就显而易见,比原始的faster RCNN可以节省很大的运算量,训练速度回提升,最终模型准确性也提升。
其中,一个trick就是,在绿色的网络进行前向传播完,其中出来的好多ROI会存在一些Loss较高,但是这些ROI有很大的IOU的情况,这样就会使得梯度重复计算和传播,因此,这里,作者加入了NMS进行IOU的过滤。
4,Focal Loss
出自Focal Loss for Dense Object Detection这篇文章,
文章重点就是提出了focal loss这个cross entropy (CE) loss的改进版,实现了对于正负样本不平衡的调整。具体思路就是其公式,
从这个公式就可以分析出,
假设r=2,pt分数为0.9,那么这个easy example的loss将会被缩小0.01a倍
假设r=2,pt分数为0.968,那么这个easy example的loss将会被缩小0.001a倍
假设r=2,pt分数为0.1,那么这个hard example的loss将会被缩小0.81a倍
同样所有样本的loss都会缩小,但是hard example要不easy example缩小的小,从而取得好的训练效果。
从上图也可以反映出,r>0的曲线的loss要比r=0的曲线的更低,loss更小。
当然文章还提出了一个RetinaNet
RetinaNet以Resnet为基础结构,通过Feature Pyramid Network (FPN)产生多尺度的输出特征图,然后分别级联一个分类和回归的子网络。这点和faster RCNN有点区别,在faster中是只使用一个网络进行分类和回归操作,RetinaNet将2个任务分离后,也许会在精度上有一定提高吧,也更容易训练。
这里一个trick是RetinaNet的初始化,
(1)除了分类子网络的最后一层,其余层w全部初始化为u=0, σ = 0:01的高斯分布,b初始化为0。
(2)最后一个分类的卷积层,b初始化为- log((1 - π)/π),文中使用π = 0.01,这样初始化使得每个anchor被标记为前景的概率为0.01,
这里b的这个公式是怎么得出的呢?
最终的分类得分是一个逻辑回归,公式为,
这里的z=wx+b,由于w初始化为u=0, σ = 0:01的高斯分布,所以,z=b,最终的概率设为π,从而得出公式,
从而解出,b=- log((1 -π)/π)
这个初始化对于focal loss的训练很重要。
5,class balanced cross-entropy
出自Holistically-nested edge detection这篇文章, 主要用于FCN,U-net等分割,边缘检测的网络,用于对像素级别的2分类样本不平衡进行优化。
sigmoid_cross_entropy公式:
-y_hat* log(sigmoid(y)) - (1 - y_hat) * log(1 - sigmoid(y))
class_balanced_sigmoid_cross_entropy公式:
-β*y_hat* log(sigmoid(y)) -(1-β) * (1 - y_hat) * log(1 - sigmoid(y))
思想就是引入新的权值β,实现正负样本loss的平衡,从而实现对不同正负样本的平衡。
References:
https://github.com/abhi2610/ohem
转载于:https://www.cnblogs.com/demian/p/9575735.html
正负样本不平衡处理方法总结【转】相关推荐
- 正负样本不平衡处理方法总结
转载链接: https://blog.csdn.net/qq_14845119/article/details/78930091 1, Bootstrapping,hard negative mini ...
- 关于正负样本不平衡问题的解决方法收集整理
参考文献 1.如何解决机器学习中数据不平衡问题 2.Learning from imbalanced data 原文 3.对于正负样本不均衡的解决方法 4.2中论文的翻译总结 一. 问题背分析 1.背 ...
- 目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA
GitHub 简书 CSDN 文章目录 1. 前言 2. OHEM 3. Focal Loss 3.1 Cross Entropy 3.2 Balanced Cross Entropy 3.3 Foc ...
- python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...
机器学习中难免遇到正负样本不平衡问题,处理办法通常有梁总,一:过采样,增加正样本数据:二:欠采样,减少负样本数据,缺点是会丢失一些重要信息.smote属于过采样. 代码 # from imblearn ...
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...
- 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
训练目标检测模型的一个难点是样本不均衡,特别是正负样本比例严重失衡.目前解决这类问题主要是两种方案(见综述Imbalance Problems in Object Detection: A Revie ...
- 2019 sample-free(样本不平衡)目标检测论文阅读笔记
点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...
- [机器学习] focal loss:解决样本不平衡的一种通用方案
文章目录 focal loss 提出的场景和针对的问题 focal loss 提出的场景:目标检测 focal loss 针对的问题:类别不平衡 如何处理目标检测下的类别不平衡 如何理解目标检测场景下 ...
- 寻找解决样本不均衡方法之Focal Loss与GHM
寻找解决样本不均衡方法之Focal Loss与GHM 主要参考资料:5分钟理解Focal Loss与GHM--解决样本不平衡利器 - 知乎 (zhihu.com) Focal Loss的引入主要是为了 ...
- yolo 负样本_目标检测正负样本区分策略和平衡策略总结(二)
0 简介 本文抛弃网络具体结构,仅仅从正负样本区分和正负样本平衡策略进行分析,大体可以分为正负样本定义.正负样本采样和平衡loss设计三个方面,主要是网络预测输出和loss核心设计即仅仅涉及网络的he ...
最新文章
- 在线绘图|2分钟轻松搞定桑基图(Sankey diagrams)
- 在python中、下列代码的输出是什么-python期末考试试题汇总
- 机器学习java_Java机器学习,第1部分
- 用QXmlStreamWriter写入xml
- 提高电脑反应速度_如何组装一台4000元左右的台式电脑?
- maven解析xml+测试test+注解
- conan入门(六):conanfile.txt conanfile.py的区别
- selenium 确实是好东西,使用selenium-server 加快执行速度,对速度有很大提升,同时可以拆分服务,进行集群部署。
- 诗字辈大全:诗仙、诗圣、诗魔、诗佛、诗神、诗鬼、诗杰、诗狂、诗骨、诗家夫子、诗豪、诗囚、诗奴...
- 【Try to Hack】veil-evasion免杀
- node之cookie-parser
- Chtholly Nota Seniorious
- 锐起无盘精华100问!(包括3.1,3.0版本)
- Matlab读取和显示图像
- JFinal配置说明
- 使用OpenConnect替代Cisco AnyConnect
- 速学堂 JAVA300 第四章 作业
- jira是干什么_JIRA简介及基本概念
- 【Keil5 C51】AT89C52 数码管的动态显示
- 机器人离线编程软件AUTOMAPPPS与DELMIA对比