目标检测 | OHEM

目标检测 | OHEM 这里主要说下该论文的hardmining过程: 先上图,如Figure2所示: 从图中可以看出,本文的亮点在于在每次迭代中,较少训练样本下,如何hardnegativemining,来提升效果。 即针对Fast-RCNN框架,在每次minibatch(1张或者2张)训练时加入在线筛选hardregion的策略,达到新的SoA。需要注意的是,这个OHEM适合于b…

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

  这里主要说下该论文的hard mining过程:

  先上图,如Figure2所示:

目标检测 | OHEM

  从图中可以看出,本文的亮点在于在每次迭代中,较少训练样本下,如何hard negative mining,来提升效果。

  即针对Fast-RCNN框架,在每次minibatch(1张或者2张)训练时加入在线筛选hard region的策略,达到新的SoA。

需要注意的是,这个OHEM适合于batch size(images)较少,但每张image的examples很多的情况。

(thousands of candidate examples,这里的example可以理解为instance、region或者proposal)

  这是一次ML经典算法bootstrapping在DL中的完美“嵌入”。

 

  具体来说:

1 将Fast RCNN分成两个components:ConvNet和RoINet. ConvNet为共享的底层卷积层,RoINet为RoI Pooling后的层,包括全连接层;

2 对于每张输入图像,经前向传播,用ConvNet获得feature maps(这里为RoI Pooling层的输入);

3 将事先计算好的proposals,经RoI Pooling层投影到feature maps上,获取固定的特征输出作为全连接层的输入;

         需要注意的是,论文说,为了减少显存以及后向传播的时间,这里的RoINet是有两个的,它们共享权重,

         RoINet1是只读(只进行forward),RoINet2进行forward和backward:

a 将原图的所有props扔到RoINet1,计算它们的loss(这里有两个loss:cls和det);

b 根据loss从高到低排序,以及利用NMS,来选出前K个props(K由论文里的N和B参数决定)

   为什么要用NMS? 显然对于那些高度overlap的props经RoI的投影后,

     其在feature maps上的位置和大小是差不多一样的,容易导致loss double counting问题

c 将选出的K个props(可以理解成hard examples)扔到RoINet2,

         这时的RoINet2和Fast RCNN的RoINet一样,计算K个props的loss,并回传梯度/残差给ConvNet,来更新整个网络

 

  论文提及到可以用一种简单的方式来完成hard mining:

在原有的Fast-RCNN里的loss layer里面对所有的props计算其loss,根据loss对其进行排序,(这里可以选用NMS),选出K个hard examples(即props),

反向传播时,只对这K个props的梯度/残差回传,而其他的props的梯度/残差设为0即可。

  由于这样做,容易导致显存显著增加,迭代时间增加,这对显卡容量少的童鞋来说,简直是噩梦。

 

  为什么说是online?

论文的任务是region-based object detection,其examples是对props来说的,即使每次迭代的图像数为1,它的props还是会很多,即使hard mining后

 

  为什么要hard mining:

1 减少fg和bg的ratio,而且不需要人为设计这个ratio;

2 加速收敛,减少显存需要这些硬件的条件依赖;

3 hard mining已经证实了是一种booststrapping的方式, 尤其当数据集较大而且较难的时候;

4 eliminates several heuristics and hyperparameters in common use by automatically selecting hard examples, thus simplifying training。

放宽了定义negative example的bg_lo threshold,即从[0.1, 0.5)变化到[0, 0.5)。

取消了正负样本在mini-batch里的ratio(原Fast-RCNN的ratio为1:3)

 

===

  除了OHEM外,在训练过程中,论文用到了multi-scale的train&test、iterative bounding box regression这两种策略。具体参考fast-rcnn和sppnet这两篇论文。

===

 

  还是看效果说话,效果屌屌的。

目标检测 | OHEM

 

  目标检测 | OHEM

 

参考:

https://blog.csdn.net/u012905422/article/details/52760669

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

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

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


相关推荐

  • pycharm2021.11.2激活码(注册激活)

    (pycharm2021.11.2激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0E14HXZ4QL-eyJsaWN…

    2022年3月29日
    39
  • 【小白视角】大数据基础实践(五) MapReduce编程基础操作

    【小白视角】大数据基础实践(五) MapReduce编程基础操作目录1.MapReduce简介1.1起源1.2模型简介1.3MRv1体系结构1.4YARN1.4.1YARN体系结构1.4.2YARN工作流程2.MapReduce工作流程3.JavaApi要点4.实验过程最后1.MapReduce简介1.1起源在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。在MapReduce

    2022年6月22日
    33
  • 大话数据结构–java版「建议收藏」

    大话数据结构–java版「建议收藏」第三章:线性表https://blog.csdn.net/liuquan0071/article/details/50382885

    2022年6月24日
    38
  • navigator对象属性_javascript构造函数

    navigator对象属性_javascript构造函数Navigator对象包含有关浏览器的信息。注意:没有应用于navigator对象的公开标准,不过所有浏览器都支持该对象。Navigator对象属性属性 说明 appCodeName 返回浏览器的代码名 appName 返回浏览器的名称 appVersion 返回浏览器的平台和版本信息 cookieEnabled 返回指明浏览器中是否启用cookie的布尔值 platform 返回运行浏览器的操作系统平台 userAgen.

    2025年10月27日
    1
  • 清明梦超能力者黄YY(idx数组)

    清明梦超能力者黄YY(idx数组)清明梦超能力者黄YYhttps://www.nowcoder.com/acm/contest/206/I题目描述黄YY是一个清明梦超能力者,同时也是一个记忆大师。他能够轻松控制自己在梦中的一切,

    2022年7月1日
    32
  • Vue(14)slot插槽的使用「建议收藏」

    Vue(14)slot插槽的使用「建议收藏」为什么使用slotslot(插槽)在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键

    2022年7月30日
    6

发表回复

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

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