OHEM 笔记

OHEM 笔记说明1.本文是博主的学习记录,主要为了方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正2.本文重点是了解OHEM算法以及它与hardnegativemining的异同点,尽量用较少篇幅表达清楚论文整体思路,其他一些不影响理解论文算法的东西有需要的请查看其他博客3.论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考,看本文的过程中如对一些名词有疑惑可以直接点击参考…

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

前言
1.本文重点是了解OHEM算法以及它与hard negative mining的异同点,尽量用较少篇幅表达清楚论文算法,其他一些不影响理解算法的东西不做赘述
2.博客主要是学习记录,为了更好理解和方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正(论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考)

论文链接
代码链接

Hard Negatie Mining与OHEM(Online Hard Example Mining)
1.相同点:
二者都是难例挖掘,解决样本不平衡问题(简单样本多,在目标检测中也可以说是负样本多,因为基本大部分容易分类的样本都是负样本)
2.不同点:
1)从名字就可以看出前者只注重挖掘难负例,也就是标签是负样本但网络认为它是正样本(与gt的iou大,但是没到阈值那种难以区分的负样本);而后者是挖掘所有难分类样本,并且是online(R-CNN采用了错题集的办法进行挖掘,Fast R-CNN使用的是IoU阈值+随机采样的方法进行Hard Negative Mining,也就是都必须先结束一轮训练(参考);而OHEM是先根据loss大小选择留下的roi,然后再根据这些roi反向传播更新参数完成一轮训练)
2)前者可以说是一种指导方向,因为在不同的检测算法中(比如R-CNNFast R-CNN以及带anchor的one-stage算法SSD等)Hard Negatie Mining具体操作是不同的;而后是一个算法

OHEM
作者将OHEM用于Fast R-CNN进行试验
在这里插入图片描述
如图,框架只是比Fast R-CNN多出下面一块(b),(a)和(b)是参数相同的网络,(a)只进行前向传播,(b)可以进行反向传播,具体过程为:
1.每个roi通过(a)进行前向传播计算损失,然后根据损失大小进行排序,再通过nms筛选留下损失大的一些roi
2.再将留下的损失大的roi经过(b)进行反向传播以更新参数
3.同步(a)和(b)的参数
注:
1)分为(a)和(b)两个网络就是空间换时间,(b)不需要对所有的roi都进行反向传播,只对留下的损失大的反向传播,实验表明内存差不多而速度快很多
2)这里的nms是根据loss进行的(之前见过的都是根据置信度),阈值设为0.7,因为loss相近表明roi位置相近,没必要留下位置差不多的,所以进行nms

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

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

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


相关推荐

  • linux下开启、关闭、重启mysql服务命令

    linux下开启、关闭、重启mysql服务命令一、启动1、使用service启动:servicemysqlstart2、使用mysqld脚本启动:/etc/inint.d/mysqlstart3、使用safe_mysqld启动:safe_mysql&二、停止1、使用service启动:servicemysqlstop2、使用mysqld脚本启动:/etc/inint.d/mysqlstop3、mysqladminshutdown三、重启1、使用service启动:service.

    2025年6月28日
    3
  • Scala 中 fastjson Object转JsonObject

    Scala 中 fastjson Object转JsonObjectScala中,fastjson的Object转JsonObject相比于Java有些差别,不支持像Java一样强转。//java中Object转JsonObjectJSONObjectjsonObject=(JSONObject)JSON.toJSON(eventBean);导包<!–阿里巴巴开源json解析框架–><dep…

    2022年5月3日
    428
  • nginx日志格式分析

    nginx日志格式分析先截取一个nginx标准日志:’$remote_addr-$remote_user[$time_local]””$request”$status$body_bytes_sent””$http_referer””$h…

    2022年5月5日
    59
  • Java/JDK下载安装与环境配置(Windows 10 超详细的图文版教程 )「建议收藏」

    前言:对于很多初学者来说,我想可能很多人都会遇到的一个问题就是Java环境变量的配置问题。自己明明就是按照度娘上的教程去一步步配置的,但还是会有很多的人出现配置不成功的问题。所以今天在这里分享一下windows10系统下安装Java的教程,希望对Java初学者能有所帮助。一.Java的下载与安装作为初学者,要想学习Java语言,第一个条件就是要让电脑上具备有Java环境,那么怎么让电…

    2022年4月14日
    57
  • box-sizing:border-box的理解和作用

    box-sizing:border-box的理解和作用要想清楚这个属性的作用,首先要理解盒子模型盒子模型是指:外边距(margin)+border(边框)+内边距(padding)+content(内容)可以把每一个容器,比如div,都看做是一个盒子模型比如你给一个div设置宽高为500px,但实际你设置的只是content,之后你又设置了padding:10px;border:1pxsolidred;这时div的宽高就会变为544px(content500px+padding40px+border4px)相当于一个元素的实际宽高是由

    2025年7月17日
    6
  • python怎么换行输出的数字对齐_python中如何使输出换行「建议收藏」

    Python的print()函数输出时,通常输出结果是整行显示出来的,这时候我们需要考虑一下,我们输出的结果需不需要换行?不需要换行的方法也是嗯容易的的,这里就不多赘述了,来说说如何做到输出换行:常用的转义符方式:\n#-*-coding:utf-8-*-A=”来看看能不能\n换行。”print(A)输出结果来看看能不能换行。使用三引号进行换行:”””value1;value2;value3…

    2022年4月9日
    117

发表回复

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

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