论文阅读:Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection

Softer-NMS
文章

  和之前同样出自Megvii的一篇论文IoU-Net一样,这篇论文的出发点也是,two-stage detector进行NMS时用到的score仅仅是classification score,不能反映bounding box的定位精准度,因此引入了一个反映其定位精准度的因变量。本文的这个因变量就是bounding box的4个坐标的方差

论文阅读:Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection_第1张图片

可以看到,除了预测box的location外,网络还预测了一个Box std,相当于预测了一个location的高斯分布
在这里插入图片描述
  而这个方差std就是用来度量对位置估计的不确定性的量。AbsVal就是取绝对值,不使用relu的原因很简单,避免很多std直接变为0,不能反映位置的不确定性。用分布的形式表示bounding box,ground truth也可以这样表示,不过方差为0就是了:

在这里插入图片描述
上式是一个Dirac函数。 因此为了准确定位bounding box,优化的目标之一就是使得两个分布接近,即最小化上面两个分布的KL散度。
在这里插入图片描述
因此使用KL散度作为bounding box regression的损失函数,计算可以得到
在这里插入图片描述
  当方差为1的时候,该损失函数变成了标准的平方误差函数。该损失函数是可以对x_e和方差求导的,因此可以用梯度下降。但是由于方差在分母(求导会产生平方),训练开始的时候容易产生梯度爆炸。因此网络用另一个变量代替方差:
在这里插入图片描述
损失函数也就变成了:
在这里插入图片描述
  此外,为了充分发挥paper提出的loss的能力,paper采用角点的形式而不是中心点+长宽对bounding box进行定位。
论文阅读:Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection_第2张图片
  既然加入了方差,那么显然就要用这个来进行NMS,只需要在原本的NMS过程中加入两行代码,当然也可以和soft-NMS一起使用,因为soft-NMS只是对score的改变而已。原始NMS会将某个与某个大score的box的IoU较大而又score比它小的box全部suppress掉,但是softer-NMS中不会将这些boxsuppress掉,而是与大score的box按方差的倒数加权求和得到新的box。但我不明白的是,为什么求和完了不将这些box剔除掉。伪代码如下:
论文阅读:Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection_第3张图片

  其中M包含了一个box对应的坐标b,分数s和方差c。
  训练时,作者发现加入了KLloss之后从scratch开始训练网络不稳定。作者猜测这可能是因为损失函数中的二次项引起的。作者于是先不加方差,用普通的faster R-CNN训练350k轮,然后加入方差训练490k轮。
  我认为这篇paper一个有趣的地方是object location这块儿的损失函数的设计,我们一般设计神经网络时想的都是会把输出训练到某个值,去拟合一个什么函数,但是这篇paper直接从需求(想让两个分布相同)出发,以KL散度作为损失函数,以minimize这个损失函数为目标。如果按照我naïve的想法,为了得到想要的高斯分布,直接就以ground truth的期望和方差为label,然后用个差的平方作为损失函数。
  按照这个思路的话,这个损失函数也可以用在one-stage detector里,取代对IoU的学习。

你可能感兴趣的:(论文阅读:Softer-NMS: Rethinking Bounding Box Regression for Accurate Object Detection)