OHEM(online hard example miniing)

详细解读一下OHEM的实现代码:

def ohem_loss(batch_size, cls_pred, cls_target, loc_pred, loc_target, smooth_l1_sigma=1.0
):"""Arguments:batch_size (int): number of sampled rois for bbox head trainingloc_pred (FloatTensor): [R, 4], location of positive roisloc_target (FloatTensor): [R, 4], location of positive roispos_mask (FloatTensor): [R], binary mask for sampled positive roiscls_pred (FloatTensor): [R, C]cls_target (LongTensor): [R]Returns:cls_loss, loc_loss (FloatTensor)"""ohem_cls_loss = F.cross_entropy(cls_pred, cls_target, reduction='none', ignore_index=-1)ohem_loc_loss = smooth_l1_loss(loc_pred, loc_target, sigma=smooth_l1_sigma, reduce=False)#这里先暂存下正常的分类loss和回归lossloss = ohem_cls_loss + ohem_loc_loss#然后对分类和回归loss求和sorted_ohem_loss, idx = torch.sort(loss, descending=True)#再对loss进行降序排列keep_num = min(sorted_ohem_loss.size()[0], batch_size)#得到需要保留的loss数量if keep_num < sorted_ohem_loss.size()[0]:#这句的作用是如果保留数目小于现有loss总数,则进行筛选保留,否则全部保留keep_idx_cuda = idx[:keep_num]#保留到需要keep的数目ohem_cls_loss = ohem_cls_loss[keep_idx_cuda]ohem_loc_loss = ohem_loc_loss[keep_idx_cuda]#分类和回归保留相同的数目cls_loss = ohem_cls_loss.sum() / keep_numloc_loss = ohem_loc_loss.sum() / keep_num#然后分别对分类和回归loss求均值return cls_loss, loc_loss

为什么要叫在线难例最小化呢?

因为在深度学习提出这个方法的人,想和传统方法区分开。难例挖掘,机器学习学习中尤其是在svm中早就已经使用,又称为bootstrapping。

传统的难例挖掘流程:首先是通过训练集训练网络,训练完成,然后固定网络,寻找新的样本,加入到训练集中。很显然这将耗费很长的时间。

因此作者提出的是在线难例挖掘。

具体怎么实现的呢?

通常是搬出这张图,说实话这张图有点啰嗦!

按我的理解,OHEM的操作就是舍弃了faster RCNN中的正负样本(ROI)比例为1:3,它通过每个ROI的loss值,对所有roi的loss排序,取B/N数量的roi组成mini batch。注意:对于指向同一个目标的rois,通过NMS,取loss最大的roi,其他都删除。

也就是通过loss提高难样本的比例,让网络花更多精力去学习难样本。

我觉得它和focal loss思路本质是一样的,focal loss把loss作用在类别上,二目标检测OHEM把loss 作用在ROI上。

在线难例挖掘(OHEM)相关推荐

  1. 目标检测之六:OHEM 在线难例挖掘

    https://zhuanlan.zhihu.com/p/102817180 6.OHEM 在线难例挖掘 OHEM(Online Hard negative Example Mining,在线难例挖掘 ...

  2. 学习了解online hard example mining在线难例挖掘

    对于每一个网络,相当于一个桶,总有样本效果比较好,有的样本比较差,多用效果差的样本进行训练,那提高了整个网络的短板,总体的效果也会有提升. 一. 难例挖掘是指,针对模型训练过程中导致损失值很大的一些样 ...

  3. OHEM(Online Hard Example Mining)在线难例挖掘(在线困难样例挖掘) HNM (目标检测)

    Hard Negatie Mining与Online Hard Example Mining(OHEM)都属于难例挖掘,它是解决目标检测老大难问题的常用办法,运用于R-CNN,fast R-CNN,f ...

  4. (HEM/OHEM)hard negative(example)mining难例挖掘 与focal loss、GHM损失函数

    目录 分类任务中的样本不均衡及hard negative mining的必要性 hard negative example HEM(hard example/negative mining) 与 OH ...

  5. 深度学习之 hard negative mining (难例挖掘)

    Hard Negative Mining Method 思想 hard是困难样本,negative是负样本,hard negative就是说在对负样本分类时候,loss比较大(label与predic ...

  6. 跨越『时空』的难样本挖掘!

    作者 | 王珣 整理 | NewBeeNLP 我们码隆科技在深度度量学习继续深耕,又做了一点点改进的工作,承蒙审稿人厚爱,被CVPR-2020接收为Oral,并进入best paper候选(共26篇文 ...

  7. 组织学图像弱监督腺体分割的在线简易示例挖掘

    文章目录 Online Easy Example Mining for Weakly-Supervised Gland Segmentation from Histology Images 摘要 本文 ...

  8. 如何提高3D点云目标检测的难例精度?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇将注意力机制应用在点云目标检测中的文章<TANet: Robust 3D O ...

  9. 基于公开数据的特殊人群在线活动特征挖掘

    基于公开数据的特殊人群在线活动特征挖掘 刘楚楚,吕欣 国防科技大学系统工程学院,湖南 长沙 410073 中南大学商学院,湖南 长沙 410083 卡罗林斯卡研究所公共卫生科学系,瑞典 斯德哥尔摩 1 ...

最新文章

  1. 利用cre2进行分组模式匹配的实例
  2. 把数据库中有关枚举项值的数字字符串转换成文字字符串
  3. php 通过exec 创建git分支失败
  4. HTML5 placeholder在低版本浏览器的解决方法
  5. JPA使用指南 javax.persistence的注解配置
  6. 外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动
  7. Intent实现页面跳转
  8. 量子计算机有哪些战略意义,世界性颠覆!量子计算机在中国诞生,对我国有五层重大战略意义!...
  9. 分享Silverlight/WPF/Windows Phone一周学习导读(11月6日-11月12日)
  10. yolov3前向传播(一)-- darknet53网络解析与实现
  11. 获取HG526超级密码
  12. 40家重污染行业上市公司进“黑名单”
  13. 一份无锡工程师的分享
  14. 从物联网到元宇宙-李正海在物联网大会上的发言
  15. python 开发微信小游戏_教你快速开发一个微信小游戏好友排行榜
  16. oracle试算平衡表查询,试算平衡表
  17. python更改文件名
  18. 骆昊python100天 github_GitHub - zsfz/Python-100-Days: Python - 100天从新手到大师
  19. 汉语拼音拼读的小技巧
  20. jekenis实现oracle导入导出,What would the author do with Ken Smit..._考试资料网

热门文章

  1. 详细SpringBoot教程之缓存开发
  2. 阅读CariFaceParsing(未完待续。。。。)
  3. 2009北京国际马拉松,不一样的马拉松
  4. manjaro 安装dracut
  5. “复制”马斯克:全世界都会为“自大狂”让路吗?
  6. c语言---字符输入
  7. uclibc、eglibc、glibc、Musl-libc之间的区别和联系
  8. 数据中心何时能摆脱夜夜割,蓝瘦香菇
  9. javascript中级阶段测试
  10. 实用英语:“上厕所”怎么说