前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测(object detection)扩展系列(二) OHEM:在线难例挖掘

目标检测(object detection)扩展系列(二) OHEM:在线难例挖掘

作者头像
chaibubble
发布2019-09-18 10:51:25
3.6K0
发布2019-09-18 10:51:25
举报

目标检测系列:

目标检测(object detection)系列(一) R-CNN:CNN目标检测的开山之作

目标检测(object detection)系列(二) SPP-Net:让卷积计算可以共享

目标检测(object detection)系列(三) Fast R-CNN:end-to-end的愉快训练

目标检测(object detection)系列(四) Faster R-CNN:有RPN的Fast R-CNN

目标检测(object detection)系列(五) YOLO:目标检测的另一种打开方式

目标检测(object detection)系列(六) SSD:兼顾效率和准确性

目标检测(object detection)系列(七) R-FCN:位置敏感的Faster R-CNN

目标检测(object detection)系列(八) YOLOv2:更好,更快,更强

目标检测(object detection)系列(九) YOLOv3:取百家所长成一家之言

目标检测(object detection)系列(十) FPN:用特征金字塔引入多尺度

目标检测(object detection)系列(十一) RetinaNet:one-stage检测器巅峰之作

目标检测(object detection)系列(十二) CornerNet:anchor free的开端

目标检测扩展系列:

目标检测(object detection)扩展系列(一) Selective Search:选择性搜索算法

目标检测(object detection)扩展系列(二) OHEM:在线难例挖掘

简介

OHEM(Online Hard Example Mining)是一种在线的难例挖掘方法,它的论文是《Training Region-based Object Detectors with Online Hard Example Mining》,从时间上看它在Faster R-CNN的后面,但是文中没有在Faster R-CNN的基础上实验,而是选择了Fast R-CNN,将Fast R-CNN中的mini-batch sampling策略替换为OHEM,得到了不错的效果。

OHEM原理

设计理念

我们先回归一下Fast R-CNN的 mini-batch sampling:

Fast R-CNN要依赖SS算法生成的区域建议框,然后组合mini-batch。如果batch size是128的话,那么这128个RoI由2张图片,各生产64个区域。并且,128个ROI中,正负样本的比例是1:3,即25%的目标ROI和75%的背景ROI。正例的判定条件是,SS算法给出的区域建议与Ground Truth的IOU要大于等于0.5。负例的判定条件是IOU要在[0.1,0.5)之间。这个IOU最小到了0.1是为了一种类似启发式的难例挖掘策略。

OHEM通过实验得到,这个mini-batch sampling中的1:3的比例对于训练Fast R-CNN来说是个非常重要的超参数,如果不是这个值,都会使mAP降低三个点左右。

但是OHEM认为,mini-batch sampling并不具有高效和最优的状态,因为Fast R-CNN中的mini-batch sampling还只是一种启发式的难例挖掘策略,它是在SGD算法优化之前就先验的组合好了mini-batch。而OHEM可以在每一次迭代中在线的从大量区域建议框中挖掘难例,它更加适合SGD这种迭代式的训练方式。OHEM可以取得更低的training loss和更高 mAP。

OHEM结构

上图就是OHEM结构,可以发现OHEM中有两套ROI Network,其中(a)是绿的部分,它是一个只读(read-only)的ROI Network,每次只读取权重后进行forward,不参与反向传播和梯度更新,(b)是红色的部分,它是一个正常功能的ROI Network。

对于给定图像,经过ss算法生成ROIs,同样计算出卷积特征图,在(a)中会对所有的ROI区域全部计算forward,并计算出oss,loss的大小可以反映出对于当前的模型,这些样本的难易程度。随后会对loss进行排序,选择前batch size个样本送入(b)中,进行forward和backward。

需要注意的是,在排序前要进行NMS,否则导致挖掘出的难例overlap会过高,影响训练效果。

OHEM和Focal loss

Focal loss是在RetinaNet中提出的一种损失函数,和OHEM作用相似,却又有些区别。

OHEM和Focal loss都做了两件事,一是正负样本的平衡,二是难例挖掘:

  • OHEM本身用在了一个two-stage的模型上,那么正负样本就是可控的,OHEM做的事情是难例挖掘的过程;
  • Focal loss应用在one-stage模型上,无论如何正负样本都不能自由组合,所以只能靠最后计算损失的时候抑制负样本,抑制简单样本,挖掘难例。Focal loss有两个部分,一个是平衡交叉熵系数ata_{t}at​和Focal loss新增的系数(1−pt)γ(1-p_{t})^{\gamma }(1−pt​)γ。个人感觉,这两个系数对于上述的两件事都是有作用的,并且这两个系数本身会相互影响,RetinaNet通过实验得到at=0.25a_{t}=0.25at​=0.25和γ=2\gamma=2γ=2时效果最好。

OHEM性能评价

首先是一个消融实验:

  • 对比11和13行、9行和10行,证明batch size是由一张图还是两张图的ROI组合得到,对OHEM影响很小,但是对Fast R-CNN却不是这样
  • 对比2行和4行,在Fast R-CNN的启发式sampling中,如果把负样本的IOU范围调整到[0,0.5),结果还更好了些。
  • 对比2行13行,就能看出来,OHEM比Fast R-CNN的mAP涨了2.7个点。

下面是总的实验结合,分别在每一个已有方法上加上OHEM,效果都有提升。两个表分别是VOC 2007和 VOC 2012:

VOC 2007

VOC 2012

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年09月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • OHEM原理
    • 设计理念
      • OHEM结构
        • OHEM和Focal loss
        • OHEM性能评价
        相关产品与服务
        图像识别
        腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档