【CVPR2016】OHEM--online negative example mining

现在很少会关注2年以前的顶会论文了,但是像OHEM这样的经典论文还是值得一读。果然论文作者列表里有rbg大神的都是经典文章。国际惯例,先给出文章标题和链接:

标题:Training Region-based Object Detectors with Online Hard Example Mining

链接:https://arxiv.org/pdf/1604.03540.pdf

本文避免读大量公式,公式恐惧党可以放心阅读


前言

首先,这篇文章干了一件什么事儿?

提出了一种困难负样本挖掘的方法。困难负样本是指AI模型难以区分的负样本。在模型不断训练的过程中,模型通常会对正样本有着比较高的confidence,但少不了对某些负样本也留有余芥,给了一个不那么接近0的confidence。而困难负例挖掘就是找到这些负例,然后针对性地训练。OHEM提出是一种线上的困难负例挖掘解决方案。使用了这个trick以后,检测模型的准确性有一定提升。


OHEM

OHEM的基准算法是Fast R-CNN,目的就是对其进行一丢丢改进就大大提高其性能。其原理可以浓缩到一张图:

                                                                        图1 OHEM示意图 

仔细看图1中的(b)模块,这是比Fast R-CNN多出的一部分。挪去这一部分,就是一个初始的Fast R-CNN模型了。对于像Fast R-CNN这种2-stage的检测模型,都可以抽象成“推荐”和“分类回归”两个部分。而OHEM的作用恰好是两个部分的中间。

那我就对2-stage模型统一讲:在推荐网络(下文称“A部分”,Fast RCNN用的是selective search,Faster RCNN用的是RPN)之后,会有很多ROI传输到后面网络。这部分的输出便是推荐网络所推荐的“可能存在目标的位置“,以image patch的形式给到后面的分类和回归网络(下文称“B部分”)。

通常“A部分”会给数以千计的小片(你可以叫ROI,也可以叫推荐框,还可以叫image patch)传输到“B部分”,B部分会对这些小片进行分类、坐标和尺寸回归以及置信度打分(confidence, 置信度是指,模型对这个输出有多大把握)。如果在训练阶段,那可以通过这些参数与标注结果进行计算得出损失值

而OHEM,恰恰利用了这个损失值。

有了上面的基础,下面详细介绍OHEM的操作流程:

1. 正常进行一次Faster RCNN的前向传播,获得每个小片单独的损失值;

2. 对小片们进行非极大值抑制(NMS),不了解NMS点链接去了解,非常简单;

3. 对nms之后剩下的小片按损失值进行排序,然后选用损失值最大的前一部分小片当作输入再进一遍B部分,在原文描述如下:

Hard examples are selected by sorting the input RoIs by loss and taking the B/N examples for which the current network performs worst

 到第3步可以发现,通过这种方法,可以屏蔽掉loss值非常低的小片。loss值非常高的小片意味着,模型训练很多次还对这些小片有着很高的loss,那么就认为这是困难负例。所谓的线上挖掘,就是先计算loss->筛选->得到困难负例。

4. 把困难负例输入到图1中(b)模块,(b)模块是(a)模块的copy版,连参数都是一样的。只是(a)模块是不可训练的,用于寻找困难负例嘛。(b)模块是用来反向传播的部分,然后把更新的参数共享到(a)部分(a部分也跟着一起更新)。其实在程序的实现上,(a)模块可以复用,不需要额外来一个(b)模块。作者之所以这么设计的原因有俩:1,ab部分可以并行操作:a对下一张图像进行前向,b对上一张图像进行反向。2,这样看着更高级点,更像顶会能中的文章的样子。

发布了147 篇原创文章 · 获赞 1858 · 访问量 90万+

猜你喜欢

转载自blog.csdn.net/leviopku/article/details/99449293
今日推荐