【深度学习】Hard Negative Mining的理解(带论文重点内容解读)

该思路源自于论文《Rich feature hierarchies for accurate object detection and semantic segmentation》,就是我们应该提到的两阶段目标检测的开山奠基之作。

由于一个图片中的ground_truth比较少,所以会到导致正样本会比较少,很有可能会出现正负样本不均衡的状态,所以运用了hard negative mining这个方法来帮助我们训练。

hard negative mining顾名思义:negative,即负样本,其次是hard,说明是困难样本,也就是说在对负样本分类时候,loss比较大(labelprediction相差较大)的那些样本,也可以说是容易将负样本看成正样本的那些样本。

hard negative mining就是多找一些hard negative加入负样本集,进行训练,这样会比easy negative组成的负样本集效果更好。

R-CNN论文关于hard negative mining的部分引用了两篇论文:

  • Object detection with discriminatively trained part based models
  • Example-based learning for viewbased humanface detection

我们分别看一下原文中关于这个方法的定义:

  • 首先是第一篇:

在这里插入图片描述

核心描写为:

Bootstrapping methods train a model with an initial subset of negative examples, and then collect negative examples that are incorrectly classified by this initial model to form a set of hard negatives. A new model is trained with the hard negative examples, and the process may be repeated a few times.

bootstrap方法用一个初始的负例子集训练一个模型,然后收集这个初始模型分类错误的负例,形成一组硬负例。用困难的否定例训练一个新的模型,这个过程可能会重复几次。

  • 解下来是第二篇:

在这里插入图片描述
在这里插入图片描述
核心语段为:

we use the following “bootstrap” strategy that incrementally selects only those “nonface” patterns with high utility value:

Start with a small set of “nonface” examples in the training database.
Train the MLP classifier with the current database of examples.
Run the face detector on a sequence of random images. Collect all the “nonface” patterns that the current system wrongly classifies as “faces” (see Fig. 5b).Add these “nonface” patterns to the training database as new negative examples.
Return to Step 2
.

而R-CNN中的Hard Negative Mining就是采用了这种自举法(bootstrap)的方法:

1.先用初始的正负样本训练分类器(此时为了平衡数据,使用的负样本也只是所有负样本的子集)

2.用(1)训练好的分类器对样本进行分类,把其中错误分类的那些样本(hard negative)放入负样本子集

3.再继续训练分类器

4.如此反复,直到达到停止条件(比如分类器性能不再提升)

也就是说,R-CNNHard Negative Mining相当于给模型定制一个错题集,在每轮训练中不断“记错题”,并把错题集加入到下一轮训练中,直到网络效果不能上升为止。

最终总结:

hard negative mining思路在目标检测中的训练过程,简单来说有以下三个步骤:

1、目标检测中如何根据有标签的数据划分正负训练集?

用带标签的图像随机生成图像块,iou大于某一个阈值的图像块做为正样本,否则为负样本。但一般负样本远远多于正样本,为避免训练出来的模型会偏向预测为负例,需要保持样本均衡,所以初始负样本训练集需要选择负样本集的子集,一般正:负=1:3。

2、有了正负训练集就可以训练神经网络了。经过训练后,就可以用这个训练出的模型预测其余的负样本了(就是没有加入训练集的那些负样本)。模型在预测一张图像块后会给出其属于正负的概率,在这里设置一个阈值,预测为正的概率大于这个阈值,就可以把这个图像块加入复样本训练集了。

3.正样本训练集不变,负样本训练集除了初始的那些,还有新加入的。拿着这个新的训练集,就可以开始新的一轮训练了。(这里运用了解决样本不平衡欠采样的方法之一)

跳到第二步(这个过程是重复的)

其实这个思路也会用在其它地方,主要是对分析结果后对数据的处理,比如说分类网络,将hard sample 补充到数据集里,将检测错误的重新标注一下,重新丢进网络当中,简单来说就是让网络没有学好,学错的地方再学一遍。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hard negative mining(困难负样本挖掘)是一种用于目标检测和分类任务的训练策略。在这种方法中,模型会专门关注那些被错误分类的负样本,以便更好地学习和纠正分类器的错误。 在传统的目标检测或分类任务中,通常使用大量的负样本和正样本进行模型训练。然而,由于负样本远远超过正样本,其中很多负样本可能是相对容易分类的,而对于模型来说,这些负样本并没有提供太多的学习信息。因此,Hard negative mining方法旨在筛选出那些被错误分类的难以区分的负样本,并将其加入训练集中,以便模型能够更好地学习和区分这些困难的负样本。 具体而言,Hard negative mining方法通常包括以下步骤: 1. 使用当前模型对训练集中的所有样本进行预测。 2. 根据预测结果和真实标签,确定哪些负样本被错误分类。 3. 选择被错误分类的负样本作为困难负样本,并将其加入训练集中。 4. 使用扩充后的训练集重新训练模型。 通过重复这个过程,模型能够更加关注那些难以区分的负样本,从而提高模型对负样本的分类能力。 Hard negative mining方法的优势在于提高了模型对难以区分负样本的分类能力,从而改善了模型的性能。然而,需要注意的是,这种方法也可能引入一些噪声,因为有些被错误分类的负样本实际上可能是噪声或特定场景下的异常情况。因此,在应用Hard negative mining方法时,需要平衡好正负样本的比例,并谨慎选择用于训练的困难负样本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值