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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JQuery Div scrollTop ScrollHeight

    JQuery Div scrollTop ScrollHeightjQuery里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中scrollHeight属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。我们现在只探讨和垂直滚动有关的scrollTop、scrollHeight属性。一、滚动条有关属性的正确理解:假设有以下Html代码:

    2022年7月23日
    4
  • 自动化测试框架[Cypress结合Allure生成测试报告]

    自动化测试框架[Cypress结合Allure生成测试报告]Allure的报告样式仍旧是目前比较华丽且全面的报告,Cypress可生成Junit形式的xml结果,那自然也可以转换成Allure的样式

    2022年7月26日
    17
  • pig中使用的一些实例语法

    pig中使用的一些实例语法

    2021年12月15日
    47
  • SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)

    SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)第一步 下载 SQLIte 下载地址 https www sqlite org download html 下载两个内容 sqlite dll win64 x64 3360000 zipsqlite tools win32 x86 3360000 zip 下载完后直接解压 放到到一个文件夹下 这个文件夹可以随便在哪里 如下图 第二步 使用 SQLite 网上好多教程都是到这一步就配置环境变量 不知道他们脑子咋想的 轻量级数据库 SQLIte 本来就应该随着项目到处走 直接在解压且合并后

    2025年7月21日
    1
  • Python numpy函数:dtype数组元素类型

    Python numpy函数:dtype数组元素类型数组元素的类型通过dtype属性获得。而且,每一种数据类型都有几种字符串表达形式,我们可以使用typeDict字典来查询某种字符串所代表的数据类型,比如“d”和“double”都是float64数据类型:

    2022年6月8日
    33
  • 死磕cglib系列之一 cglib简介与callback解析「建议收藏」

    死磕cglib系列之一 cglib简介与callback解析「建议收藏」简介cglib是一套java动态代理实现框架,cglib被应用到springapp,hibernate等高级业务框架,spring事务在业务实现类未实现接口的情况下也会使用该技术。实际上,cglib基于继承实现,这也就意味着final,private相关的method无法被代理。基于asm框架对class字节码编辑改动,从而达到动态代理的目的,总之,被代理类没有实现接口的情况下cglib为首…

    2022年5月7日
    47

发表回复

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

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