正负样本不平衡处理方法总结

2023-11-03

1, Bootstrapping,hard negative mining
最原始的一种方法,主要使用在传统的机器学习方法中。
比如,训练随机森林,对于每一个树就是采样booststraping方法采样,也算是随机森林的其中一个随机性表现。再比如bagging方法,也是基于该有放回重采样方法。

比如,SVM分类中去掉那些离分界线较远的样本,只保留离分界线较近的样本。

 

2, heuristic sampling

标准的faster rcnn中,假设正样本IOU(0.7~1.0)。负样本IOU(0.0~0.3)。比如实际的RPN网络中,实际最后的anchor经过NMS处理后的负样本是很多的,假如有30000个。这里面只有少数的正样本,大部分都是负样本。在RPN模块中,仅仅对其中大约1/3的hard的proposal进行了2分类和回归的loss计算。即只从3000个proposal里面只选择那些hard负样本,这样实际训练出来的效果最好。但是后续的roi pooling部分,只需要传递256个proposal进行计算既可。即正的proposal128个,负的proposal128个。假设正的不够,则使用负的进行补齐。

 

3, online hard example mining(OHEM)

出自,Training Region-based Object Detectors with Online Hard Example Mining这篇文章,

 

在fast RCNN这样的框架下,在原始的网络基础上,经过Selective-search后,新接入了一个绿色的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的平衡,从而实现对不同正负样本的平衡。

 

6, local rank,PISA,ISR

 

 

References:

https://github.com/abhi2610/ohem

Libra R-CNN: Towards balanced learning for object detection

Prime Sample Attention in Object Detection
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正负样本不平衡处理方法总结 的相关文章

  • Android Studio连接夜神模拟器

    Android Studio连接夜神模拟器 一 下载夜神模拟器 二 夜神模拟器连接Android Studio 三 其他操作 3 1 屏幕旋转 3 2 创建其他模拟器 一 下载夜神模拟器 官网 https www yeshen com 下载
  • TCP如何保证可靠传输

    TCP如何保证可靠传输 TCP保证可靠传输的方式有 校验和 序列号 确认应答 超时重传 连接管路 流量控制 拥塞控制等 1 校验和 在数据传输过程中 吧传输的数据当作一个16位整数 吧所有的数据加起来 最前面的进位补到最后一位 然后取反得到

随机推荐

  • 钱币兑换问题(dp背包)

    钱币兑换问题 在一个国家仅有1分 2分 3分硬币 将钱N兑换成硬币有很多种兑法 请你编程序计算出共有多少种兑法 Input 每行只有一个正整数N N小于32768 Output 对应每个输入 输出兑换方法数 Sample Input 293
  • 观察者模式(推模型+拉模型)

    观察者模式 Observer Pattern 当一个对象被修改时 会自动通知它的依赖对象 现在我们是新闻社 要向所有新闻订阅者推送新闻 那么该如何实现呢 经过思考我们不难发现一家新闻社一般对应的是多个新闻订阅者 那么我们先从新闻社开始入手
  • 同步和异步的区别及优缺点 通俗理解

    一 同步和异步的区别 程序里面的同步和异步和我们现实生活理解不太一样 一般我们对同步的理解是同时做很多事情 但程序中的同步是按照任务的顺序执行任务 前一个任务没有执行结束 下一个任务不会执行 要等待上一个任务执行结束 通俗举例 我大学有个室
  • 服务器同时读写多个文件,多服务器文件读写

    多服务器文件读写 内容精选 换一换 表1列出了弹性文件服务的常用功能 在使用弹性文件服务之前 建议您先通过常用概念介绍了解NFS CIFS等基本概念 以便更好地理解弹性文件服务提供的功能 表示该类型的文件系统支持该功能 表示该类型的文件系统
  • angular项目从部署到启动

    angular是前端三大框架之一 适合开发大型需要多人合作的项目 代码规范 社区活跃 不过学习曲线陡峭 这篇介绍环境搭建 完成就可以启动ng项目了 一 Node js和npm 在node官网 https nodejs org zh cn d
  • Java实战之城市多音字处理

    Java实战之城市多音字处理 一 需求 对城市名称转化为拼音的时候 当遇到多音字城市的时候 转化拼音就不是我们想要的了 使用 pinyin4j 无法直接解决这个问题 网上有很多维护多音字信息的 觉得麻烦 如 长沙 gt zhangsha 厦
  • Massif:堆分析器

    简介 Massif是一个堆分析器 它度量程序使用了多少堆内存 这包括有用的空间 以及分配给簿记和对齐目的的额外字节 它还可以测量程序堆栈的大小 尽管默认情况下它不这样做 堆分析可以帮助您减少程序使用的内存量 在具有虚拟内存的现代机器上 这提
  • 人工智能如何理解开悟?

    马斯克为啥牛逼你知道吗 为啥现能成世界首富 你们知不知道 最近这一个月全世界最火的连比尔盖茨都说了 这个是比当年人类发明互联网更加震撼人心的 就是马斯克有一家公司发明了一个聊天机器人 叫track GDP 这个track GDP有多厉害呢
  • 现在的jdk keytool无法获取到jks的MD5怎么办?

    一 使用其他版本的JDK 可获取MD5的版本 https ask dcloud net cn article 38778 二 使用openssl 获取 命令如下 keytool exportcert keystore xxx keystor
  • qt 5.12.1 下载安装详细教程

    前言 Qt是一个跨平台的C 图形界面应用程序框架 它提供给开发者建立图形用户界面所需的功能 广泛用于开发GUI程序 也可用于开发非GUI程序 Qt很容易扩展 并且允许真正地组件编程 基本上 Qt同X Window上的Motif Openwi
  • 几种字符串补“0”(或其它字符)的方式

    几种字符串补 0 或其它字符 的方式 好记性不如烂笔头 先记下 呵呵 方式一 这个最多程序员用的 也是最普通的方式 int a 656 string b a if b length lt 6 for int i 0 i lt 6 b len
  • 参数在信号-槽参数用值传递还是引用传递

    结论 以下表格总结了我们的结果 例如第一行 如果程序传递信号的参数为引用到槽 那么在直接连接则不发生复制 在队列连接则发生一次复制 Signal Slot Direct Queued const Copy const Copy 0 1 co
  • Matlab找出矩阵每一行的最大值及其位置

    dis max arr 2 dis array zeros M N for i 1 size dis hang max dis i 1 c find edtImage i hang max dis array i c 1 end figur
  • 移植NTP时间同步工具到arm linux平台创建定时任务

    移植NTP时间同步工具到arm linux平台创建定时任务 下载源码 解压并编译 一个脚本进行编译 上传文件至开发板 运行 创建开机启动项 注意在windows上编写的文件可能需要执行以下命令 ntp服务器 下载源码 wget c http
  • (ubuntu)linux和mac安装Miracl密码库

    只要你按照以下步骤操作 可以得到Miracl密码库的静态编译文件 a 步骤一 官网仓库 注意 是下载ZIP 而不是直接clone下来 不然的话是绝对不行的 步骤二 unzip j aa L MIRACL master zip 执行命令 终端
  • spring中的动态代理

    两种代理原理 jdk动态代理是利用反射机制生成一个实现代理接口的匿名类 在调用具体方法前调用InvokeHandler来处理 cglib动态代理是利用asm开源包 对代理对象类的class文件加载进来 通过修改其字节码生成子类来处理 spr
  • [Android常见问题] 自定义授权界面

    自定义授权界面 http bbs mob com thread 278 1 1 html 出处 http bbs mob com 本帖最后由 wolf 于 2016 5 6 10 30 编辑 自定义授权界面 1 准备工作 参考文档 在你的项
  • Couldn‘t find meta-data for provider with authority com.wust.camerademo

    报错信息 Couldn t find meta data for provider with authority com wust camerademo 报错原因 AndroidManifest xml 清单文件中未注册 provider
  • ae渲染出现错误是什么问题_After Effects错误:写入文件.....时发生渲染错误.输出模块失败.文件可能已损坏。(-1610153464)...

    我来回答一下 你在电脑里安装了其他下载的aex文件格式的插件 你只要把你这些插件删除掉 问题就可以解决 安装插件不正确 或者有相同的插件也出现提示框 其实 这个提示不重要 你正常开启AE以后 正常使用软件 只是 安装错误的插件 使用起来没有
  • 正负样本不平衡处理方法总结

    1 Bootstrapping hard negative mining 最原始的一种方法 主要使用在传统的机器学习方法中 比如 训练随机森林 对于每一个树就是采样booststraping方法采样 也算是随机森林的其中一个随机性表现 再比