OHEM(Online Hard Example Mining )算法

OHEM(Online Hard Example Mining )算法OHEM算法提出于论文TrainingRegion-basedObjectDetectorswithOnlineHardExampleMining,链接:https://arxiv.org/abs/1604.03540。在hardexample(损失较大的样本)反向传播时,可以减少运算量。OHEM主要思想是,根据输入样本的损失进行筛选,筛选出hardexample,表示对…

大家好,又见面了,我是你们的朋友全栈君。

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

OHEM主要思想是,根据输入样本的损失进行筛选,筛选出hard example,表示对分类和检测影响较大的样本,然后将筛选得到的这些样本应用在随机梯度下降中训练。在实际操作中是将原来的一个ROI Network扩充为两个ROI Network,这两个ROI Network共享参数。其中前面一个ROI Network只有前向操作,主要用于计算损失;后面一个ROI Network包括前向和后向操作,以hard example作为输入,计算损失并回传梯度。这种算法的优点在于,对于数据的类别不平衡问题不需要采用设置正负样本比例的方式来解决,且随着数据集的增大,算法的提升更加明显。

在论文中作者主要是将OHEM算法用在Fast RCNN结构中。Fast RCNN的结构图如下,主要包含两个部分:

1、卷积网络。主要由多个卷积层和max pooling层组成;

2、ROI pooling网络。主要包括ROI pooling层,一些全连接层和两个损失层。

OHEM(Online Hard Example Mining )算法

hard example是根据每个ROI的损失来选择的,选择损失最大的一些ROI。但是这里有一个问题:重合率比较大的ROI之间的损失也比较相似。因此这里作者采用NMS(non-maximum suppresison)去除重合率较大的ROI,这里作者给的阈值是当IOU大于0.7就认为重合率较高,需去除。 
那么具体要怎么把OHEM放在Fast RCNN网络结构中呢?可能首先会想到的做法是修改损失层,将没选择的ROI的loss设置为0。但是这种做法并不高效,因为即便很多ROI的loss都是0,也就是不需要更新梯度,但是这样仍需要给每个ROI都分配存储空间,并且每个ROI都需要后向传播。
因此就有了作者将OHEM应用在Fast RCNN的网络结构,如下图。这里包含两个ROI network,上面一个ROI network是只读的,为所有的ROI在前向传递的时候分配空间。下面一个ROI network则同时为前向和后向分配空间。 
首先,ROI经过ROI plooling层生成feature map,然后进入只读的ROI network得到所有ROI的loss;然后是hard ROI sampler结构根据损失排序选出hard example,并把这些hard example作为下面那个ROI network的输入。
OHEM(Online Hard Example Mining )算法

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139329.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 快速排序中的分割算法的解析与应用

    快速排序中的分割算法的解析与应用

    2021年9月15日
    40
  • 查看首选DNS服务器地址

    查看首选DNS服务器地址查询DNS设置地址1、打开开始菜单里的‘运行’。2、在运行窗口里,输入cmd,打开命令行窗口。3、打开命令行窗口后,输入inconfig/all命令,按回车键。4、输入后,就可以看到自己电脑的IP地址和DNS服务器地址了。…

    2022年6月11日
    58
  • bzero函数C语言_zeros函数

    bzero函数C语言_zeros函数原型:externvoidbzero(void*s,intn);  用法:#include  功能:置字节字符串s的前n个字节为零且包括‘\0’。  说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。在POSIX.

    2022年10月12日
    0
  • VS2008 安装失败(“Web 创作组件”无法)

    VS2008 安装失败(“Web 创作组件”无法)今天安装VS2008时出现了问题,怎么都无法安装成功。于是在网上找答案,还真给找到了。贴出来大家学习一下。VisualStudio2008中文正式版可以从微软网站下载试用了,因为之前用英文版感觉比2005快一些,虽然.NETFramework3.5有点庞大,但还是可以选择开发2.0的项目,因此打算立马安装。试用期为三个月,足够长了,因此安装TeamSystem版本,体验

    2022年9月6日
    2
  • leetcode-53最大子序和(离线|分治)「建议收藏」

    leetcode-53最大子序和(离线|分治)「建议收藏」给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000 提示:1

    2022年8月8日
    3
  • zabbix监控网络设备

    zabbix监控网络设备终工作中遇到,办公网有防火墙和交换机,要监控一下他们的流量。可以通过zabbix来做。从整个操作过程来看,主要有两个难点。监控的原理是,zabbix模板里用自带的OID,去交换机上获得值,因此,我们要开启交换机上的snmp,另外要拿到相关监控项的OID值。再去zabbix上添加监控模板就可以了。开启交换机的snmp功能这里不做介绍,因为不是我开的,所以这部分以后补充。下面先介绍如何获得…

    2022年4月30日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号