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

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

2020-01-15 | |  94 |   0

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

来源:AI 研习社          链接:https://www.yanxishe.com/columnDetail/17039


前面介绍了 CVPR 2019 的 GIoU Loss,推文地址如下:点这里,同时 GIoU Loss 里面也引入了 IoU Loss,这个首先需要明确一下。然后 AAAI 2020 来了一个新的 Loss,即是本文要介绍的 DIoU Loss。论文原文地址见附录。

背景

我们先来回归一下 IoU Loss 和 GIoU Loss。IoU Loss 可以表示为:,从 IoU 的角度来解决回归损失,但它的缺点是当两个框不想交时,IOU-Loss 始终为 1,无法给出优化方向。因此 GIoU 来了,GIoU 可以用下面的公式表示:
,可以看到 GIoU 在 IoU 的基础上添加了一项,其中表示包含两个框的最小矩形,这样就可以优化两个框不相交的情况。但 GIoU 仍然存在一个问题是,当两个框相交时,GIoU 损失退化为了 IoU 损失。导致在预测框 bbox 和 ground truth bbox 包含的时候优化变得非常困难,特别是在水平和垂直方向收敛难。这里一个猜想是在水平和垂直方向,值的增长没有在其他方向快,因此对这两个方向的惩罚力度不够,导致放慢了收敛速度。如论文的 Figure2 和 Fiigure4 所示:


image.png

image.png

同时为了更加形象的说明这一点,我们看一下论文的 Figure1:
image.png

其中 Figure1 中的上面 3 张图表示 GIoU 的回归过程,其中绿色框为目标框,黑色框为 Anchor,蓝色框为不同迭代次数后,Anchor 的偏移结果。第 2 行的 3 张图则表示了 DIoU 的回归过程。从图中可以看到,在 GIoU 的回归过程中,从损失函数的形式我们发现,当 IoU 为 0 时,GIoU 会先尽可能让 anchor 能够和目标框产生重叠,之后 GIoU 会渐渐退化成 IoU 回归策略,因此整个过程会非常缓慢而且存在发散的风险。而 DIoU 考虑到 anchor 和目标之间的中心点距离,可以更快更有效更稳定的进行回归。

问题提出

基于上诉分析,作者提出了如下两个问题:

  • 一,直接最小化 Anchor 和目标框之间的归一化距离以达到更快的收敛速度是否可行?

  • 二,如何使回归损失在与目标框有重叠甚至有包含关系时更准确,收敛更快?

DIoU Loss

论文为了解决第一个问题,提出了Distance-IoU Loss(DIoU Loss)。

在这里插入图片描述这个损失函数中,分别代表了 Anchor 框和目标框的中心点,代表计算两个中心点的欧式距离,代表的是可以同时覆盖 Anchor 框和目标框的最小矩形的对角线距离。因此 DIoU 中对 Anchor 框和目标框之间的归一化距离进行了建模。直观展示如 Figure 5 所示:

image.png

DIoU Loss 的优点如下:

  • 和 GIoU Loss 类似,DIoU Loss 在和目标框不重叠时,仍然可以为边界框提供移动方向。

  • DIoU Loss 可以直接最小化两个目标框的距离,因此比 GIoU Loss 收敛快得多。

  • 对于包含两个框在水平方向和垂直方向上这种情况,DIoU Loss 可以使回归 Loss 下降非常快,而 GIoU Loss 几乎退化为 IoU Loss。

CIoU Loss

为了回答第二个问题,作者提出了Complete-IoU Loss。一个好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。GIoU 为了归一化坐标尺度,利用 IOU 并初步解决了 IoU 为 0 无法优化的问题。然后 DIoU 损失在 GIoU Loss 的基础上考虑了边界框的重叠面积和中心点距离。所以还有最后一个点上面的 Loss 没有考虑到,即 Anchor 的长宽比和目标框之间的长宽比的一致性。基于这一点,论文提出了 CIoU Loss。
在这里插入图片描述从上面的损失可以看到,CIoU 比 DIoU 多了这两个参数。其中是用来平衡比例的系数,是用来衡量 Anchor 框和目标框之间的比例一致性。它们的公式如下:
在这里插入图片描述在这里插入图片描述然后在对求导的时候,公式如下:
在这里插入图片描述因为这一项在计算的时候会变得很小,因为,的取值范围是。而在回归问题中回归很大的值是很难的,因此一般都会对原始的分别处以原图像的长宽。所以论文直接将设为常数 1,这样不会导致梯度的方向改变,虽然值变了,但这可以加快收敛。

的定义式来看,损失函数会更加倾向于往重叠区域增多的方向优化,尤其是 IoU 为 0 的情况,这满足我们的要求。
同时,在进行 nms 阶段,一般的评判标准是 IOU,这个地方作者推荐替换为 DIOU,这样考虑了中心点距离这一个信息,效果又有一定的提升。
在这里插入图片描述

可视化实验

论文做了一个有趣的实验来探索 IoU 和 GIoU 存在的问题,我觉得还是有必要介绍一下,实验如 Figure3 所示:

image.png

其中,绿色的框代表回归任务需要回归的 7 个不同尺度的目标框,7 个目标框的中心坐标都是[10,10]。蓝色的点代表了所有 Anchor 的中心点,各个方向都有,各个距离也都有。一共有个蓝色点,有个 Anchor 框,并且每个框都需要回归到个目标框去,因此一共有个回归等式。从 Figure3(b)中我们可以看到在训练同样的代数后(次),三个 loss 最终每个 Anchor 的误差分布。从 IoU 误差的曲线我们可以发现,Anchor 越靠近边缘,误差越大,那些与目标框没有重叠的 Anchor 基本无法回归。从 GIoU 误差的曲线我们可以发现,对于一些没有重叠的 Anchor,GIoU 的表现要比 IoU 更好。但是由于 GIoU 仍然严重的依赖 IoU,因此在两个垂直方向,误差很大,基本很难收敛,这就是 GIoU 不稳定的原因。从 DIoU 误差的曲线我们可以发现,对于不同距离,方向,面积和比例的 Anchor,DIoU 都能做到较好的回归。CIoU 类似。

实验结论

Table1 给出了分别在 YOLOv3 上使用 IoU Loss,GIoU Loss,DIoU Loss, CIoU Loss 获得的 AP 值。可以看到 CIoU Loss 涨了快 3 个点,证明了这种 Loss 的有效性。遗憾的是论文没有给出其他的对比数据了,究竟有没有用欢迎大家去试,个人认为这种带有工程性 Trick 的论文是最值得去尝试的。
image.png

附录

论文原文:https://arxiv.org/pdf/1911.08287.pdf
参考博客:https://blog.csdn.net/qiu931110/article/details/103330107
源码实现:https://github.com/Zzh-tju/DIoU-darknet

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:对抗人脸识别的一个新方法:隐藏身份、随机换脸

下一篇:全新视角探究目标检测与实例分割的互惠关系 | AAAI 2020

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...