对于每一个网络,相当于一个桶,总有样本效果比较好,有的样本比较差,多用效果差的样本进行训练,那提高了整个网络的短板,总体的效果也会有提升。

一、
难例挖掘是指,针对模型训练过程中导致损失值很大的一些样本(使模型很大概率分类错误的样本),重新训练它们。
维护一个错误分类样本池, 把每个batch训练数据中的出错率很大的样本放入该样本池中,当积累到一个batch以后,将这些样本放回网络重新训练。

二、
有2种难例挖掘技术,一种是用于优化SVM的。通过一个working-set,训练一个收敛于该working-set的SVM,然后使用该SVM,将一些easy的sample剔除(这些sample通常是远离SVM分类边界的),增加hard example到working-set中(这些hard-example是超出模型边界的错误分类样本)。注意,working-set只是整个训练集的一个子集。

另一种是用于优化non-SVM的。如被应用于浅层神经网络,boosted decision tree等,这种方法首先开始训练模型,训练的数据集开始是由所有的positive example和随机的negative samples组成的,训练出来一个模型后,将该模型应用于一个更大的数据集,将model检测错误的样本(false positives)添加到训练集中再继续训练。不断迭代训练。但是论文中提到这个过程通常只迭代一次,且没有收敛的迹象。

总结:
CNN目标检测类的文章中,hard negative mining一般是,有正负样本,然后分类器分出来一些分错的负样本(容易将负样本看成正样本的那些样本),即假阳性(false positive),也就是说在对负样本分类时候,loss比较大(label与prediction相差较大)的那些样本,这些就是hard negative/困难样本。
hard negative mining就是多找一些hard negative加入负样本集,重新进行训练,这样会比easy negative(例如roi里没有物体,全是背景,这时候分类器很容易正确分类成背景,这个就叫easy negative;如果roi里有二分之一个物体,标签仍是负样本,这时候分类器就容易把他看成正样本,这时候就是hard negative)组成的负样本集效果更好。主要体现在虚警率更低一些(也就是false positive少)。
如何判断困难负样本呢?先用初始样本集(即第一帧随机选择的正负样本)去训练网络,再用训练好的网络去预测负样本集中剩余的负样本,选择其中得分最高,即最容易被判断为正样本的负样本为困难样本,加入负样本集中,重新训练网络,循环往复。

已有的方法大多是基于loss来确定是否是hard的,参考https://blog.csdn.net/u013608402/article/details/51275486文中的方法是,用两个网络,一个只用来前向传播,另一个则根据选择的ROI进行反向传播。
类似的实现在https://blog.csdn.net/jiyangsb/article/details/77802941这篇文章中有implementation details也是一样的。

同时解决正负样本不平衡以及区分简单与复杂样本的问题的focal loss参考https://blog.csdn.net/LeeWanzhi/article/details/80069592
伪代码参考:https://blog.csdn.net/lanchunhui/article/details/71194703

下一步进一步搞清楚focal loss和这个在线难例挖掘的联系和差别,然后开始实现。

学习了解online hard example mining在线难例挖掘相关推荐

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

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

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

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

  3. 在线难例挖掘(OHEM)

    OHEM(online hard example miniing) 详细解读一下OHEM的实现代码: def ohem_loss(batch_size, cls_pred, cls_target, l ...

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

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

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

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

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

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

  7. 深度学习 免费课程_深入学习深度学习,提供15项免费在线课程

    深度学习 免费课程 by David Venturi 大卫·文图里(David Venturi) 深入学习深度学习,提供15项免费在线课程 (Dive into Deep Learning with ...

  8. 【DTK学习】获取锤子科技SmartisanOS在线手机壁纸

    [DTK学习]获取锤子科技SmartisanOS在线手机壁纸 V0.2 1.预览壁纸 2.选择下载位置 3.点击下载(下载的是预览时的三张图片) 仅实现下载功能,问题不少,日后慢慢完善. 项目地址:h ...

  9. CANoe学习记录(三)软硬件在线采集

    CANoe学习记录(三)软硬件在线采集 汽车OBD2公头转4个DB9PIN母头接口Serial RS232OBD网关连接线工具

最新文章

  1. Java数字签名——RSA算法
  2. Matplotlib 可视化之多图层叠加
  3. 用母函数的思路解释母函数的代码
  4. QT_4_QpushButton的简单使用_对象树
  5. python前n项和存为一个数组_在Python中存储多个数组
  6. MVC - 建立模型/实体类,对应到数据库
  7. 明晚7点,中科院专家带你走进智能计算系统的世界
  8. 51CTO独家:2008下半年软考所有科目试题已到
  9. 私人订制,一份专属你的数据分析课程!
  10. mktime()的格式
  11. C语言新思路跟未来教育哪个好,计算机等级考试用什么书好 未来教育的书怎么样?貌似网上评价很高...
  12. github怎么删除代码库
  13. java中点击按钮读取和写入文件实现登录和注册
  14. win10 python安装以及编辑器pycharm安装
  15. python与财务报表分析_《财务报表分析》第八章 企业财务综合分析与业绩评价课后练习...
  16. heka 配置 一个go语言实现轻量级logstash 干掉ELK
  17. 一招教你不用任何软件就能知道谁动过你的电脑并做了哪些详细的操作,比查看Recent文件访问记录更厉害的方法开机自动运行PSR录制截取电脑操作
  18. iOS实现App之间的分享
  19. JavaScript 面向对象(二)——案列篇
  20. fetch用英语解释_fetch是什么意思中文翻译

热门文章

  1. Linux常用基本命令(rename,basename,dirname)
  2. 【题解】Grape luogu1156改 dp
  3. Xcode7 出现-fembed-bitcode错误的解决办法
  4. 杨元:CSS浮动(float,clear)通俗讲解
  5. LeetCode——最小栈
  6. Linux万兆网络配置
  7. 03-01 appium架构介绍与环境安装
  8. selenium使用send_keys()方法写中文报错的解决方法
  9. 计算机显微视觉相关概念,机器视觉的概念及常见应用
  10. java 接口 方法的 不同_Java – 使用相同的方法和不同的返回类型实现多个接口...