OHEM介绍

article/2025/11/11 7:12:28

目标检测之OHEM介绍

论文地址:https://arxiv.org/pdf/1604.03540.pdf

在two-stage检测算法中,RPN阶段会生成大量的检测框,由于很多时候一张图片可能只会有少量几个目标,也就是说绝大部分框是没有目标的,为了减少计算就需要进行sample,一般来说fasterrcnn的sample机制是算框和label的IOU,大于0.7认为是正样本,小于0.3是负样本。但是单纯的random_sample选出来的框不一定是最容易错的框。那么ohem就是这样的一种正负样本策略,通过根据框的loss得到最容易错的框。可以理解为错题集,我们只会把最容易错的题放到错题集。

首先是 negative,即负样本,其次是 hard,说明是困难样本,也可以说是容易将负样本看成正样本的那些样本,例如 RPN框里没有物体,全是背景,这时候分类器很容易正确分类成背景,这个就叫 easy negative;如果 框里有二分之一个物体,标签仍是负样本,这时候分类器就容易把他看成正样本,这时候就是 had negative。hard negative mining 就是多找一些 hard negative 加入负样本集,进行训练。
接下来我们来看看mmdection的ohem实现:

class OHEMSampler(BaseSampler):r"""Online Hard Example Mining Sampler described in `Training Region-basedObject Detectors with Online Hard Example Mining<https://arxiv.org/abs/1604.03540>`_."""def __init__(self,num,pos_fraction,context,neg_pos_ub=-1,add_gt_as_proposals=True,**kwargs):super(OHEMSampler, self).__init__(num, pos_fraction, neg_pos_ub,add_gt_as_proposals)self.context = contextif not hasattr(self.context, 'num_stages'):self.bbox_head = self.context.bbox_headelse:self.bbox_head = self.context.bbox_head[self.context.current_stage]def hard_mining(self, inds, num_expected, bboxes, labels, feats):with torch.no_grad():rois = bbox2roi([bboxes])if not hasattr(self.context, 'num_stages'):bbox_results = self.context._bbox_forward(feats, rois)else:bbox_results = self.context._bbox_forward(self.context.current_stage, feats, rois)cls_score = bbox_results['cls_score']loss = self.bbox_head.loss(cls_score=cls_score,bbox_pred=None,rois=rois,labels=labels,label_weights=cls_score.new_ones(cls_score.size(0)),bbox_targets=None,bbox_weights=None,reduction_override='none')['loss_cls']_, topk_loss_inds = loss.topk(num_expected)return inds[topk_loss_inds]def _sample_pos(self,assign_result,num_expected,bboxes=None,feats=None,**kwargs):"""Sample positive boxes.Args:assign_result (:obj:`AssignResult`): Assigned resultsnum_expected (int): Number of expected positive samplesbboxes (torch.Tensor, optional): Boxes. Defaults to None.feats (list[torch.Tensor], optional): Multi-level features.Defaults to None.Returns:torch.Tensor: Indices  of positive samples"""# Sample some hard positive samplespos_inds = torch.nonzero(assign_result.gt_inds > 0, as_tuple=False)if pos_inds.numel() != 0:pos_inds = pos_inds.squeeze(1)if pos_inds.numel() <= num_expected:return pos_indselse:return self.hard_mining(pos_inds, num_expected, bboxes[pos_inds],assign_result.labels[pos_inds], feats)def _sample_neg(self,assign_result,num_expected,bboxes=None,feats=None,**kwargs):"""Sample negative boxes.Args:assign_result (:obj:`AssignResult`): Assigned resultsnum_expected (int): Number of expected negative samplesbboxes (torch.Tensor, optional): Boxes. Defaults to None.feats (list[torch.Tensor], optional): Multi-level features.Defaults to None.Returns:torch.Tensor: Indices  of negative samples"""# Sample some hard negative samplesneg_inds = torch.nonzero(assign_result.gt_inds == 0, as_tuple=False)if neg_inds.numel() != 0:neg_inds = neg_inds.squeeze(1)if len(neg_inds) <= num_expected:return neg_indselse:neg_labels = assign_result.labels.new_empty(neg_inds.size(0)).fill_(self.bbox_head.num_classes)return self.hard_mining(neg_inds, num_expected, bboxes[neg_inds],neg_labels, feats)

上面代码就是整个ohem的sample过程,整个ohem分为三个函数分别是hard_mining,_sample_pos,_sample_neg,_sample_pos和_sample_neg是获得对应的困难正样本/困难负样本,由hard_mining完成整个sample过程:根据输入的box_list得到对应的bbox_loss的list取最大的256/512个,由于这一批box的loss最大,就可以认为是最难区分的box,这一批bbox就是所谓的
困难正样本/困难负样本。

至此ohem阶段完成,后面就是对候选框的分类和回归,因为ohem阶段得到了容易分错的样本框,所以在后续训练阶段模型会对这些容易分错的框重点关注,有利于困难样本的检测,提升了模型的效果。

实际上提升还是很明显的:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/0nbeUTUM.shtml

相关文章

OHEM

Training Region-based Object Detectors with Online Hard Example Mining 00 Astract 摘要主要讲了四点&#xff1a; (1) 训练过程需要进行参数的空间搜索 (2) 简单样本与难分辨样本之间的类别不平衡是亟需解决的问题 (3) 自动地选择难分辨样本来进行训练不仅效率高而且性能好…

样本均衡之OHEM

论文地址&#xff1a;Training Region-based Object Detectors with Online Hard Example Mining OHEM 主要解决神经网络中困难负样本的问题。 困难负样本是神经网络难以区分的负样本。我们希望模型在训练的时候&#xff0c;负样本的confidence接近0&#xff0c;但是如果不加…

OHEM 详解

OHEM 详解 一、Hard Negative Mining Method&#xff08;一&#xff09;Hard Negative Mining Method 思想&#xff08;二&#xff09;Hard Negative Mining Method 使用&#xff08;三&#xff09;Hard Negative Mining Method 缺点 二、OHEM&#xff08;一&#xff09;训练方…

OHEM(Online Hard Example Mining )算法

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

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

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

虚拟机VMware Workstation安装使用教程

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

VMware安装虚拟机详细教程

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

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

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

虚拟机 VMware 16安装教程

虚拟机 VMware 16下载 见评论区 软件简介 VMware&#xff08;虚拟机&#xff09;是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统&#xff0c;它能在Windows系统上虚拟出多个计算机&#xff0c;每个虚拟计算机可以独立运行&#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详细安装教程

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

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

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

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

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

虚拟机VMware的安装及使用

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

VMware虚拟机安装教程

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

vmware虚拟机的基础使用

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

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

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

虚拟机使用教程

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

VMware 虚拟机安装与使用

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

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

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