当前位置: 首页 > news >正文

【训练方法】OHEM

目录

  • 概述
  • 细节
    • 困难负样本挖掘(HEM)
    • 在线困难负样本挖掘(OHEM)

概述

目标检测任务重存在严重的正负样本不均衡问题,以往的解决方法是困难负样本挖掘方法(HEM),但是它不太适合端到端的网络训练,所以本文提出了一种在线的困难负样本挖掘方法(OHEM),用于Fast RCNN这一类的基于候选框的目标检测模型。关于Fast RCNN

细节

困难负样本挖掘(HEM)

HEM是什么:首先困难样本挖掘( hard Negative Mining)是为了得到更加优秀的负样本,让网络学习。比如一个没有包含任何物体的候选框,标签是负的,模型就很容易将它判别,所以他是简单负样本,而一个包含了1/3物体的候选框,我们打的标签仍然是负的,模型就很容易将它判别为正的,那么这个就困难负样本了。模型训练到后期,对于简单的负样本肯定很容易判别,但是对于困难的负样本,就没那么有力的。尤其是我们采样负样本的时候,如果随机采样,很可能采样到的就是简单的负样本,对这些样本的训练,不会给模型带来什么提高,所以我们需要困难样本挖掘。

HEM怎么做:传统的做法是用样本集训练模型,然后用模型对其他样本进行推理,将推理错的样本加入样本集中,然后迭代以上过程。常用于:SVM、决策树等算法中。

为什么不太适合端到端的网络训练:因为照上面的做法,训练一次网络,就进行一次推理找到hard negative加入样本集,然后再迭代,网络的训练速度会满很多很多。所以fast rcnn 和 faster rcnn都没有使用这个方式。

在线困难负样本挖掘(OHEM)

困难负样本挖掘的核心就是找困难负样本,而传统方法为了找它选择了训练一下,中断一下的做法,一个直观的想法就是能不能不中断训练流程,在训练的过程中找到困难负样本顺便将它加入样本集中。原因:虽然每次梯度下降用到的图片数n是很少的,比如n=2,但是每张图片都会包含很多的候选框,我们可以从中挑选困难负样本。

直观的想法:fast rcnn 中每次采样N张图片,在每张图片上选R/N个候选框进行训练,那么我们可以直接将loss最大的前p个候选框作为我们的目标,其他的候选框直接将梯度置为0就好了。看上去达到了我们的目的,但是哪怕很多的候选框梯度是0,依然会进行反向传播,所以还存在一些问题。

进一步的想法:就是再设计一个并行的检测模块,假设原先的模块是a,新增的模块是b。那么我们就可以让a模块进行推理并将loss最大的前p个候选框作为我们的目标,将这部分框送给b去进行推理和参数的更新,并把更新的参数同步给a。并且我们可以实现一个一级流水线,也就是a推理当前的batch的时候,b可以对上一个batch中挑选出来的候选框进行推理的参数的更新了,所以网络参数更新的频率没有下降。还有一点就是:前p个loss最大的候选框中,可能有部分框是临近的,这些框中挑一个就好了,所以排完序之后先进行一次NMS,然后再挑前p个。
在这里插入图片描述

相关文章:

  • java毕业设计汽车出租平台源码+lw文档+mybatis+系统+mysql数据库+调试
  • C#教程 - 其他(Other)
  • Java项目:JSP会议-会议室管理系统
  • 计算空间物体包围球的两种算法实现
  • Unity 导航寻路快速上手
  • Advanced Git
  • Selenium基础 — Selenium自动化测试框架介绍
  • C语言小程序-通讯录(动态内存管理)
  • L2W3作业 TensorFlow教程
  • 开发中 — — 异常与日志处理
  • C++——入门详解(上)
  • 盘点六大程序员接单网站,务必收藏!
  • Java算法解题小记
  • java-php-python-springboot小说网站计算机毕业设计
  • 医药研发团队怎么利用RPA智能员工降低运营成本
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【css3】浏览器内核及其兼容性
  • Angular 响应式表单之下拉框
  • C学习-枚举(九)
  • EOS是什么
  • ES6之路之模块详解
  • Flannel解读
  • Java 23种设计模式 之单例模式 7种实现方式
  • javascript面向对象之创建对象
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Quartz初级教程
  • React Native移动开发实战-3-实现页面间的数据传递
  • Spark RDD学习: aggregate函数
  • SQLServer之索引简介
  • Web Storage相关
  • 不上全站https的网站你们就等着被恶心死吧
  • 关于for循环的简单归纳
  • 计算机常识 - 收藏集 - 掘金
  • 开源SQL-on-Hadoop系统一览
  • 跳前端坑前,先看看这个!!
  • 通过几道题目学习二叉搜索树
  • 一些css基础学习笔记
  • 一些关于Rust在2019年的思考
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #Z0458. 树的中心2
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .Net Core与存储过程(一)
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET和.COM和.CN域名区别
  • .NET正则基础之——正则委托
  • .pop ----remove 删除
  • /bin、/sbin、/usr/bin、/usr/sbin
  • [.NET]桃源网络硬盘 v7.4