Hard Negative Mining

R-CNN中使用Hard Negative Mining(负样本挖掘)方法进行分类器的训练

HNM实现

  1. 设置初始训练集,正负样本数比值为1:1(或者1:3具体比例根据实际训练效果决定
  2. 每轮训练完成后,使用分类器对剩余负样本进行检测,如果检测为正,则加入到训练集中
  3. 重新训练分类器,重复第二步,直到检测精度开始收敛

为什么要使用HNM

该方法应用在正负样本的数目相差很大的情况。通过HNM,选出对训练分类器有帮助的负样本,能够提高分类器性能

注意:由于初始训练集的数目会很小,所以降低学习率有利于训练结果

R-CNN中的HNM实现

参考zjZSTU/R-CNN中的linear_svm.py实现

在训练特征提取时,训练参数如下:

  1. 学习率:1e-3
  2. 动量:0.9
  3. 随步长衰减:每隔7轮衰减一次,参数因子\(\alpha=0.1\)
  4. 迭代次数:25

在训练分类器时,使用HNM,训练参数如下:

  1. 学习率:1e-4
  2. 动量:0.9
  3. 随步长衰减:每隔4轮衰减一次,参数因子\(\alpha=0.1\)
  4. 迭代次数:10

相关阅读