OHEM 详解

article/2025/11/11 7:15:43

OHEM 详解

    • 一、Hard Negative Mining Method
      • (一)Hard Negative Mining Method 思想
      • (二)Hard Negative Mining Method 使用
      • (三)Hard Negative Mining Method 缺点
    • 二、OHEM
      • (一)训练方式
        • 1. Foreground RoIs
        • 2. Background RoIs
        • 3. Balancing fg-bg RoIs
      • (二)实现方式 1
      • (三)实现方式 2

Training Region-based Object Detectors with Online Hard Example Mining

论文链接


  在 two-stage 的目标检测方法中,经过区域生成算法或者网络生成的 region proposals 通常会经过正负样本的筛选和比例平衡后,才送入之后的检测网络进行训练。但是正负样本的定义和训练的比例是需要人为定义的。如果要筛选 hard mining。通常使用的都是 hard negative mining 的方法。但是此方法不适用于 end-to-end 的模型。因为会大大降低模型的训练速度。
  作者观察到传统 hard negative mining 的缺点后,提出了一种 Online Hard Example Mining 的方法。可以自动地选择 had negative 来进行训练,不仅效率高而且性能好。


一、Hard Negative Mining Method


  对于 two-stage 的目标检测方法,我们会先生成很多的 region proposals,然后再放入之后的网络进行训练。但是在这些生成的 region proposals 中,正负样本的比例严重不平衡。极端的情况,假如我们有 99 个负样本和 1 个正样本。我们的网络只用预测所有的样本都为负样本就可以达到 99% 的正确率,所以我们需要对正负样本的数量进行平衡,只选出那些 hard negative 的样本进行训练。


(一)Hard Negative Mining Method 思想


  解决上述问题的传统方法是用 Hard Negative Mining Method 的方法,它的 思想如下:

  对于 hard Negative Mining(困难样本挖掘)可以理解为错题集,你不会把所有的错题都放到错题集中,你会挑出那些你最容易错的题放到错题集中,Hard Negative Mining Method 就是这样。

  首先是 negative,即负样本,其次是 hard,说明是困难样本,也可以说是容易将负样本看成正样本的那些样本,例如 roi 里没有物体,全是背景,这时候分类器很容易正确分类成背景,这个就叫 easy negative;如果 roi 里有二分之一个物体,标签仍是负样本,这时候分类器就容易把他看成正样本,这时候就是 had negative。hard negative mining 就是多找一些 hard negative 加入负样本集,进行训练,这样会比 easy negative 组成的负样本集效果更好。


(二)Hard Negative Mining Method 使用


  通常 使用 Hard Negative Mining Method 的方法为:

  迭代地交替训练,用样本集更新模型,然后再固定模型 来选择分辨错的目标框并加入到样本集中继续训练。传统,我们会使用 SVM + Hard Negative Mining Method 进行训练


(三)Hard Negative Mining Method 缺点


  那么传统的 Hard Negative Mining Method 有什么 缺点 呢?

  Hard Negative Mining Method 很难应用到 end-to-end 的检测模型。 因为 Hard Negative Mining Method 需要迭代训练,如果我们将他使用到 end-to-end 的卷积神经网络,需要每次将网络冻结一段时间用来生成 hard negative。而这对于使用线上优化的算法来说是不可能的,例如 SGD (随机梯度下降算法)。使用 SGD 来训练网络需要上万次更新网络,如果每迭代几次就固定模型一次,这样的速度会慢得不可想象。

  我们可以观察到在 fast rcnn 和 faster rcnn 中都没有用到 Hard Negative Mining Method。这就是因为如上的原因,一般使用 SVM 分类器才能使用此方法(SVM 分类器和 Hard Negative Mining Method 交替训练)


二、OHEM


  我们知道,基于 SVM 的检测器,在训练时,使用 hard example mining 来选择样本需要交替训练,先固定模型,选择样本,然后再用样本集更新模型, 这样反复交替训练直到模型收敛。

  作者认为可以把交替训练的步骤和 SGD 结合起来。之所以可以这样,作者认为虽然 SGD 每迭代一次只用到少量的图片,但每张图片都包含上千个 RoI,可以从中选择 hard examples,这样的策略可以只在一个 mini-batch 中固定模型,因此模型参数是一直在更新的。

  更具体的,在第 t 次迭代时,输入图片到卷积网络中得到特征图,然后把特征图和所有的 RoIs 输入到 RoI 网络中并计算所有 RoIs 的损失,把损失从高到低排序,然后选择 B / N (B 为 Roi 总个数,N 为输入图片个数)个 RoIs。这里有个小问题,位置上相邻的 RoIs 通过 RoI 网络后会输出相近的损失,这样损失就翻倍。作者为了解决这个问题,使用了 NMS(非最大值抑制) 算法,先把损失按高到低排序,然后选择最高的损失,并计算其他 RoI 与这个 RoI 的 IoU (交叉比),移除 IoU 大于一定阈值的 RoI,然后反复上述流程直到选择了 B/N 个 RoIs。


(一)训练方式


fast RCNN

  Fast R-CNN(上图)是使用SGD来优化模型的,每个RoI的损失包括分类损失和回归 损失,其中不断降低分类损失使得模型分类更准确,不断降低回归损失使得 预测标注框更准确。

  SGD是以mini-batch为单位来更新模型的。对于每个mini-batch,先从数据 集中取N张,然后每张图片采样B/N个RoIs

1. Foreground RoIs

  一个RoIs怎样才算作一个目标RoI(也就是含有目标的RoI)呢,在R-CNN, SPPnet, and MR-CNN等把RoI与真实框的交叉比(IOU)大于等于0.5即判定 为目标RoI,在本文中也是这样的设置

2. Background RoIs

  而如果要被判定为背景RoI,则要求该RoI与真实框的交叉比大于等于 bg_lo这个阈值并且小于0.5。虽然这样的设置能加快收敛和检测准确度, 但这样的设置会忽略不怎么出现但又十分重要的比较难分辨的背景。因 此,在本文的OHTM方法中,作者去掉了这样的设置。

3. Balancing fg-bg RoIs

  为了解决目标框和背景框之间的不平衡,Fast R-CNN设置在一个 mini-batch中,它们之间的比例是1:3。作者发现,这样的一个比例对 于Fast R-CNN的性能是十分重要的,增大或者减小这个比例,都会使模 型的性能有所下降,但使用OHEM便可以把这个比例值去掉。


(二)实现方式 1


  直接修改损失层,然后直接进行 hard example selection。损失层计算所有的 RoIs,然后按损失从大到小排序,当然这里有个 NMS(非最大值抑制) 操作,选择 hard RoIs 并 non-hard RoIs 的损失置0。虽然这方法很直接,

  但效率是低下的,不仅要为所有 RoI 分配内存,还要对所有 RoI 进行反向传播,即使有些 RoI 损失为0。


(三)实现方式 2


OHEM

  对于方法 1 的缺点很明显,我们还有更好的一种实现方式。作者提出了上面这样的架构。这个架构有两个相同的 RoI 网络,不同的是其中一个只可读,另一个可读可写。我们看到(a) 是只可读的,只对所有 RoI 做前向计算,所以只需分配内存给前向计算 操作,(b) 既可读也可写,对被选择的 hard RoIs 不仅做前向计算也做反向传播计算。

  对于一次 SGD 迭代,计算过程如下:先计算出特征图,可读 RoI 网络对所有 RoI 执行前向计算并计算每个 RoI 的损失,然后选择 hard RoIs。把这些 hard RoIs 输入到可读可写的 RoI 网络中执行前向前向计算和反向传播更新网络,并把可读可写的 RoI 网络的参数赋值给只可读的网络,一次迭代就完成了。

  这个方式和第一种方式在内存空间是差不多的,但第二种方式的速度快 了两倍。



参考链接:

https://arxiv.org/pdf/1604.03540.pdf
https://zhuanlan.zhihu.com/p/58162337


http://chatgpt.dhexx.cn/article/WYBrIGJV.shtml

相关文章

OHEM(Online Hard Example Mining )算法

OHEM算法提出于论文 Training Region-based Object Detectors with Online Hard Example Mining,链接:https://arxiv.org/abs/1604.03540。在hard example(损失较大的样本)反向传播时,可以减少运算量。 OHEM主要思想是…

虚拟机VMware官网下载教程,中文详细步骤(图文)

目录 一、找到官网 二、注册,登录(之前有账号的直接登录) 三、下载 四、VMware安装 五、Ubuntu下载,安装 一、找到官网 中文官网:VMware 中国 - 交付面向企业的数字化基础 | CNhttps://www.vmware.com/cn.html …

虚拟机VMware Workstation安装使用教程

1.官网下载,百度一个序列号进行注册。 2.打开VM,创建虚拟机 2.初次使用的话,选择典型就可以 3.如果有已有的iso文件,可以选择“安装程序光盘印象文件”,但是这是简易安装,可能后期会出现bug,不…

VMware安装虚拟机详细教程

VMware安装虚拟机目录 一、VMware添加虚拟机二、虚拟机启动及配置三、IP地址、子网掩码、网关和域名 一、VMware添加虚拟机 在我们安装完VWware,下载好安装的操作系统的镜像文件后(这里我们是(centos7版本),可以开始安…

VMware下载与安装教程(详细)

虚拟机VMware下载与安装教程 1. VMware最新版下载Vmware历史版本下载 2. VMware的安装 1. VMware最新版下载 Vmware官网 官网界面如下 点击产品,找到 Workstation Pro 之后会跳转到如下界面,点击下载试用版 根据自己的操作系统是Linux还是Windows选择对应的版…

虚拟机 VMware 16安装教程

虚拟机 VMware 16下载 见评论区 软件简介 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行&#xff0c…

虚拟化技术之 VMware Workstation教程(一)

目录 第一章 虚拟化技术 1.1虚拟化技术简介 1.2主流的虚拟化厂商及产品 第二章 虚拟机的安装 2.1安装VMwareWorkstation 12 2.2物理机所需硬件 2.3在虚拟机中安装Windows 7操作系统 第三章 虚拟机的网络设置 3.1网络接入模式 3.2设置虚拟机上网 3.3设置两台虚拟机之…

VMware Workstation Pro详细安装教程

一,VMware Workstation Pro介绍 VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案…

VMware虚拟机下载与安装教程(详细的很,一看就懂)

CSDN话题挑战赛第2期 参赛话题:学习笔记 🔶 个人主页: 神仙阿姨的博客 🔴 分享网站: 《Python自学网》👉👉适合新手入门到精通 | python全栈体系课程 | WEB开发 | 爬虫 | 自动化运维 …

VMware安装虚拟机操作步骤[史上最详细]

一、下载并安装VMware虚拟化软件 百度搜索关键词 安装步骤:傻瓜式安装(鼠标点点点,这里不做截屏演示) 二、安装秘钥 1、百度搜索关键词VMware秘钥,秘钥不一定都有效,一个一个试总有一个可以的 ​​​​​…

虚拟机VMware的安装及使用

一 虚拟机VMware的安装 1.准备工作 1)需要软件VMware安装包 VMware下载地址: http://www.uzzf.com/soft/51188.html 2)需要一个系统镜像 windows系统: http://www.xitongcheng.com/win7/ ubuntu系统镜像下载: http://www.ubuntu.org.cn/do…

VMware虚拟机安装教程

虚拟机(Virtual Machine)是通过软件模拟的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像…

vmware虚拟机的基础使用

1.vmware VMWare虚拟机软件来测试软件、测试安装操作系统(如linux)、测试病毒木马等。 VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置…

虚拟机介绍与使用(VMware Workstation)

目录 一、虚拟机概述 1、什么是虚拟机? 2、软件运行的架构 ①传统运行模式 ②虚拟机运行的模式 3、虚拟机产品 ①VMware(威睿) ②Micro Soft(微软) ③Citrix(思杰) 二、虚拟机的安装与…

虚拟机使用教程

文章目录 前言1.什么是母机与子机?2.常用快捷键 一、如何开机?二、如何克隆及删除虚拟机?三、如何修改硬件信息(改机器码)?四、虚拟机内外如何传文件?五、调整虚拟机窗口大小及虚拟机全屏显示六、如何调整cpu、内存?七、虚拟机开…

VMware 虚拟机安装与使用

VMware 下载 进入官网的 VMware Workstation Pro 页面,浏览功能特性、应用场景、系统要求等。下滑页面点击 试用 Workstation 16 Pro 下方的下载链接,跳转至下载页面。 在下载页面中下滑,根据操作系统选择合适的产品,在这里以 Wi…

虚拟机-安装与使用(详细教程)

虚拟机-安装与使用 前言一、虚拟机1.VMware2.Virtualbox 二、VMware 的下载三、VMware 的安装四、验证是否安装成功五、运行 VMware六、VMware 上安装其它操作系统1. 安装 Windows 102. 安装 CentOS-Linux3. 安装 Kali-Linux 七、VMware 常用功能1. 同步时间2. 系统备份1. 克隆…

VMware安装及使用详细教程

安装虚拟机 第一次安装的时候会让你重启电脑安装个什么东西 重启电脑后再次安装就会出现安装界面 傻瓜式安装 下一步 - - - 同意许可,下一步 这里我前面装了Hyper-v看哪个好用来着,没有卸载,就会出现这个,我怕搞砸了把Hyper-v…

VMware虚拟机下载与使用

目录 一、什么是虚拟机 二、VMware的简介 1、大概介绍 2、详细介绍 三、VMware下载 1、官网下载地址 2、打开官网,选择合适的进行下载 四、VMware安装 五、使用VMware新建虚拟机 1、创建新的虚拟机 2、选择典型,也可以自定义 3、安装程序光盘…

vmware虚拟机的12个使用技巧

1、增加虚拟机可用的物理内存 关闭虚拟机,设置内存: 2、硬件设备添加 一直选择下一步,直到这个界面进行磁盘大小分配: 3、控制权的切换 由于VMware的工作特点是在一台计算机中同时运行多个操作系统,因此这就存在一个…