技术分享图片

目标检测算法之ICCV2019 Gaussian YOLOv3

等 

前言

关于YOLOv3可以看一下我前面的推文讲解:YOLOV3点这里 。前面提到过,YOLOv3在实时性和精确性都是做的比较好的,并在工业界被广泛应用。当前的目标检测算法,大都在网络结构,Anchor,IOU上做了大量的文章,而在检测框的可靠性上做文章的却非常少。所以,Gaussian YOLOv3它来了。论文地址为:点这里 。并且作者也开放了源码,地址为:点这里。所以本文就带大家来学习一下这个算法。

算法原理

YOLOv3回顾

 

技术分享图片

对于左图,就是YOLOv3的网络结构。可以看到YOLO V3整体使用了特征金字塔的结构,使得网络在3个尺度上执行目标检测任务,可以适应各种不同大小的目标。并且使用了跳跃连接skip shortcut防止因为网络过深而发生梯度消失,无法收敛。YOLOV3还使用了上采样操作,并将大特征图和小特征图上采样的特征图进行concat,使得网络既可以包含高层特征的高级语义信息又可以保留低层特征的物体位置信息,对目标检测任务起到促进作用。 而右图也就是YOLOv3中的输出层,可以看到YOLOv3会在三个特征层分别输出,输出信息为目标的坐标位置,目标是前景的置信度,目标属于某个特定类别的置信度。对于对于每个尺度分支而言,在每个grid cell中会预测出三个结果(每个尺度下会有三个anchor)。将三个尺度的结果合并,进行非极大值抑制(NMS)后,输出最终的检测结果。

YOLOv3可能存在的问题?

从上面的回顾中可以看到,YOLOV3的目标类别是一个概率值来评价的,而目标的框只有位置信息技术分享图片却没有概率值,也就是说我们无法知道当前目标框的可靠性。这就是YOLOv3存在的问题,我们无法评价目标框的可靠性。所以这篇论文以这位切入点提出了Gaussian YOLOv3.即利用Guassian模型对网络输出进行建模,在基本不改变YOLOv3结构和计算量的情况下,能够输出每个预测框的可靠性,并且在算法总体性能上提升了3个点的MAP。

Gaussian YOLOv3

将原始的YOLOv3的目标框输出加入高斯模型后,网络的输出变成了下图这样。

技术分享图片

原始的YOLOv3对于三个不同尺度的feature map,每个点输出技术分享图片个信息,其中技术分享图片包含了类别的可靠性信息,技术分享图片包含了是否是目标的可靠性信息,而关于边界框,我们只有关于坐标的相关信息技术分享图片,但这些坐标信息并不能表示该bbox的可靠性。基于此,论文提出了将高斯模型用到bbox的坐标预测上,通过高斯模型的标准差来估计坐标信息的可靠性。加入了高斯模型后,bbox的输出变成了:

技术分享图片

其中技术分享图片代表均值,技术分享图片表示标准差(方差),考虑到YOLOv3的一贯做法,我们需要将上面的参数做以下变换:

技术分享图片

通过这一系列等式(2),(3),(4)得到的技术分享图片可以直接当做计算bbox回归的坐标来用(因为技术分享图片就是技术分享图片的最大似然估计)。

注意,这里对技术分享图片做了sigmoid操作将值限定在(0,1)范围是YOLOv3的直接坐标预测做法,即是说每个grid检测的物体中心必须落在当前grid内。这一点可以看我之前的推文解释:点这里。而技术分享图片技术分享图片没有做sigmoid操作的原因是因为长宽的尺度变化可能操作1,这个做法和YOLOv3一致。标准差技术分享图片,技术分享图片,技术分享图片,技术分享图片也通过sigmoid将值限定在(0,1)范围内,这是因为标准差表明了点坐标的可靠性,0表示非常可靠,1表示不可靠(因为对于高斯分布,方差越大,则一定程度上说明这个分布的变化比较大,即是技术分享图片这个bbox的估计结果越不可靠)。

做了上面的铺垫后就可以引出论文的损失函数了。现在对于网络输出的每个bbox坐标都满足均值为技术分享图片,方差为技术分享图片的高斯,因此论文中使用了NLL_LOSS,即是negative log likelihood loss。

技术分享图片

其中:

技术分享图片

这个式子表示了对于bbox的ground truth框的每一个值在均值为技术分享图片和房差为技术分享图片的高斯分布下的值技术分享图片,其中高斯分布的密度函数是: 技术分享图片。其中每个技术分享图片对应的输出值技术分享图片是在该点的概率密度值,这个值可以近似表示概率,但是它实际上不是概率(其实概率密度函数是概率分布函数的导数)。所以我们的目标是希望ground truth 的概率密度函数值在网络的所有输出值的均值技术分享图片和方差技术分享图片构成的高斯分布中是最大的,即表明网络输出的高斯分布和真实标签是最相符的。那么当技术分享图片技术分享图片构成的分布和真实的lable分布越接近时,技术分享图片就会越大,技术分享图片也会越大,那么前面取负号,整个损失就会越小。 损失函数还有一个权重惩罚系数技术分享图片,计算公式如下:

技术分享图片

其中技术分享图片使用ground truth的长宽来计算的。然后技术分享图片表示当ground truth和当前的Anchor的IOU大于一定阈值时取1,如果没有合适的Anchor和Ground Truth就取0。

注意上面只是针对了bbox的x坐标进行了讲解,其他的一样类推即可。还有在目标检测预测阶段,bbox的每一类特定的置信度就要用下面的公式来计算了:

技术分享图片

相比原来的YOLO系列,预测部分增加了一个技术分享图片坐标可靠性系数,这个系数是bbox的四个标准差技术分享图片的平均值,这也是前面为什么对标准差做了sigmoid操作的原因。

实验结果

在KITTI和BDD上验证结果:

技术分享图片

可以看到Gaussian YOLOv3比YOLOv3的效果提升了很多,并且加入了Gaussian之后的YOLO效果在同等速度下达到了最优。并且文中提到Gaussian YOLOv3有效的减少约%40的False Positive,提高了约5%的True Positive。

代码推荐

建议跑AlexAB版本的darknet里面的GaussianYOLOv3,非常简单和准确。地址如下:点这里

后记

今天介绍了Gaussian YOLOv3,个人觉得这篇论文的思想是值得点赞的。从bbox的可靠性做文章有可能会是目标检测算法优化的又一重要方向。


欢迎关注我的微信公众号GiantPandaCV,期待和你一起交流机器学习,深度学习,图像算法,优化技术,比赛及日常生活等。

技术分享图片

 

发布于 2019-12-08
目标检测
计算机视觉
深度学习(Deep Learning)

文章被以下专栏收录

技术分享图片
GiantPandaCV
GiantPandaCV知乎专栏
技术分享图片
GiantPandaCV
GiantPandaCV知乎专栏

推荐阅读

目标检测算法之CVPR2019 GIoU Loss

目标检测算法之AAAI 2020 DIoU Loss 已开源(YOLOV3涨近3个点)

Gaussian YOLOv3 : 对bbox预测值进行高斯建模输出不确定性 | ICCV 2019

目标检测——CenterNet

目标检测——从简单的开始!进击的YOLO!目标检测——Backbone与Detection head目标检测——搭建更好更快的YOLO!目标检测——制作GroundTruth!开始训练!目标检测——YOLOv2!目标检测—…

17 条评论

    • 技术分享图片
      178597327162019-12-16

      您好 想跟您请教一个问题:论文中提到yolov3 the confindence of the detected bbox is unknown,难道不是yolov3 中的object score值吗(其表示:pro(object)*IOU),本人觉得是可知的,。。。。。。。难道作者说的未知是针对bbox四个值的不确定度的描述

    • 技术分享图片
      BBuf (作者) 回复178597327162019-12-16

      不是,pro(object)是预测框里面目标的置信度,代表这个框里面是某个类别的概率。而它不能决定这个框是不是框是不是可靠,而Gaussian分布可以表示可靠性,因为概率分布越接近越可靠。

    • 技术分享图片
      17859732716回复BBuf (作者)2019-12-16

      pro(object)表示某个grid方格中是否含有检测目标,pro(cls/object)才表示这个框里面是某个类别的概率,即在目标存在的情况下,该目标属于类别的概率值。。。如果用pro(object)*IOU(其中Iou表示预测框和真实框的交并比),那这样的话应该能决定这个预测框是不是可靠的吧

  • 此文的建模和19 CVPR softer-NMS应该是一样的吧?只是后者把不确定性用在了后处理上
  • 或者说与softer-NMS如出一辙,后者用于NMS后再加权平均微调,而此文是用于惩罚box得分。就像IoU-Net与Mask scoring RCNN一样,都有类似的操作,前者预测定位置信度(IoU)用于NMS,而后者惩罚mask得分。检测分割领域果然要到一个平台期了
  • 技术分享图片
    chaser05-21

    wh怎么可能是gt的宽高,应该是比例

  • 技术分享图片
    柳林志07-31

    你好,请教一下高斯分布怎么得到的,一个点处原来预测三个框,也就是三个点怎么得到一个高斯分布

  • 技术分享图片
    张大仙09-12

    您好 作者 对文中这句话“通过这一系列等式(2),(3),(4)得到的xywh的u值,可以直接当做计算bbox回归的坐标来用(因为[公式]就是[公式]的最大似然估计)”。 网络输出的是tx,是通过什么公式得到Ux呢