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


相关推荐

  • Repeater使用方法—基础数据绑定+多级嵌套「建议收藏」

    Repeater使用方法—基础数据绑定+多级嵌套「建议收藏」一、基础数据绑定Repeater控件在编译后不会生成任何多余的代码,而GridView等编译后会生成table标签,这样对于页面的负担和UI样式影响方面,使用Repeater就会显得很有优势了。下面

    2022年7月2日
    23
  • 分类信息网站大全

    分类信息网站大全

    2021年9月11日
    115
  • linux局域网不同网段ip互通,linux环境中,两个不同网段的机器互通「建议收藏」

    linux局域网不同网段ip互通,linux环境中,两个不同网段的机器互通「建议收藏」环境如下:host1单网卡eth0172.24.100.15/16host2双网卡eth0172.24.100.14/16eth1192.168.122.214/24host3单网卡eth0192.168.122.215/24整个环境如下图:要求:让host1和host3互通,也就是host1能ping通host3,host3也能ping通host1解决:第一,在hos…

    2022年9月12日
    2
  • 序列号生成-模拟windows office序列号[通俗易懂]

    序列号生成-模拟windows office序列号[通俗易懂]最近看到office2013在提示过期问题(升级win10后遗症),就想到模拟下office的激活码。~~起初想到应该简单,最后越试越复杂。所以就记录下,毕竟花费了时间。packagetest;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclas

    2025年8月21日
    4
  • 原码/反码/补码在线计算器[通俗易懂]

    原码/反码/补码在线计算器[通俗易懂]原码/反码/补码计算器,在线计算给定整数的原码/反码/补码。工具链接:http://www.atoolbox.net/Tool.php?Id=952原码,反码和补码的概念对于一个数,计算机要使用一定的编码方式进行存储.原码,反码,补码是机器存储一个具体数字的编码方式.原码:原码就是早期用来表示数字的一种方式:一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。举例:int类型的3的原码是11B(B表示二进制位)

    2022年4月19日
    1.4K
  • 数据格式汇总及type, astype, dtype区别「建议收藏」

    数据格式汇总及type, astype, dtype区别「建议收藏」标签(空格分隔):pythonuint8在此输入正文8位的无符号整形数据取值范围从0到255一singed与unsigned的区别二float改变类型643264to32shape翻倍改变类型321632to16shape翻倍改变类型32float32tofloatshape还原float默认是float64改变类型float64intfloat64

    2022年6月11日
    39

发表回复

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

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