前言
目前的大多数single-stage目标检测器虽然在检测精度上已经有所提升,但检测的实时性依然不是很好。此外,虽然通过检测得到了目标的bbox坐标,但得到的这个bbox的不确定性是未知的。因此,这些目标检测器并不能避免错误定位(FP),因为它们输出的bbox的结果并不包含不确定性信息,也就是说并不清楚这个bbox是不是正确的。一般来说,FP指对于该目标的GT来说是不准确的检测结果,TP则是准确的检测结果。预测bbox的不确定性,以及将不确定性与objectness score和class score结合起来以降低FP,是非常重要的。
为了解决以上问题,本文基于YOLOv3提出了一种新的目标检测方法,通过对YOLOv3的bbox坐标进行建模以提升检测精度,该方法仅输出确定值作为高斯参数(均值和方差),并重新设计bbox的损失函数。通过高斯建模,可以估计YOLOv3中bbox回归任务的定位不确定性。此外,通过在检测过程中利用bbox的定位不确定性,还可以进一步提升检测精度。最终,高斯YOLOv3显著提升了检测精度,并且能够处理错误定位问题,同时还能保持检测的实时性。
方法实现
1. 通过高斯建模得到不确定性
如上图(b)所示,在特征图的每个网格中有3个prediction box,每个prediction box包含objectness score(目标是否出现在bbox中),class score(目标的类别)和bbox坐标( t x , t y , t w t_x,t_y,t_w tx,ty,tw, t h t_h th),根据objecness score和class score的乘积来确定一个检测到的目标。不同于objectness score和class score是0到1之间的一个“分数”,也就是一个衡量的程度,bbox坐标则是确定的坐标值,因此bbox的置信度是未知的,也就不能得知bbox的不确定性。
bbox的不确定性可以通过高斯模型对 t x , t y , t w t_x,t_y,t_w tx,ty,tw和 t h t_h th进行建模得到,高斯模型为:
μ ( x ) \mu(x) μ(x)和 Σ ( x ) \Sigma(x) Σ(x)分别是均值和方差。
为了预测bbox的不确定性,bbox坐标的每个值都以均值 μ ( x ) \mu(x) μ(x)和方差 Σ ( x ) \Sigma(x) Σ(x)来建模。首先将bbox的输出表示为 μ t x ^ , Σ t x ^ μ t y ^ , Σ t y ^ μ t w ^ , Σ t w ^ μ t h ^ , Σ t h ^ \hat{\mu_{t_x}},\hat{\Sigma_{t_x}}\hat{\mu_{t_y}},\hat{\Sigma_{t_y}}\hat{\mu_{t_w}},\hat{\Sigma_{t_w}}\hat{\mu_{t_h}},\hat{\Sigma_{t_h}} μtx^,Σt