AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

作者 | VincentLee

编辑 | Camel

本文来源于微信公众号: 晓飞的算法工程笔记

本文对发表于 AAAI 2020 的论文《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》进行解读。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

论文地址:https://arxiv.org/abs/1911.08287
代码地址:https://github.com/Zzh-tju/DIoU 论文提出了 IoU-based 的 DIoU loss 和 CIoU loss,以及建议使用 DIoU-NMS 替换经典的 NMS 方法,充分地利用 IoU 的特性进行优化。并且方法能够简单地迁移到现有的算法中带来性能的提升,实验在 YOLOv3 上提升了 5.91 mAP,值得学习。
一、简介

1、IoU

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

IoU 是目标检测里面很重要的一个指标,通过预测的框和 GT 间的交集与并集的比例进行计算,经常用于评价 bbox 的优劣 。但一般对 bbox 的精调都采用 L2 范数,而一些研究表明这不是最优化 IoU 的方法,因此出现了 IoU loss。

2、IoU loss

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

IoU loss 顾名思义就是直接通过 IoU 计算梯度进行回归,论文提到 IoU loss 的无法避免的缺点:当两个 box 无交集时,IoU=0,很近的无交集框和很远的无交集框的输出一样,这样就失去了梯度方向,无法优化。IoU loss 的实现形式有很多种,除公式 2 外,还有 UnitBox 的交叉熵形式和 IoUNet 的 Smooth-L1 形式。
这里论文主要讨论的类似 YOLO 的检测网络,按照 GT 是否在 cell 判断当前 bbox 是否需要回归,所以可能存在无交集的情况。而一般的 two stage 网络,在 bbox regress 的时候都会卡,不会对无交集的框进行回归。

3、GIoU loss

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

GIou loss 在 IoU loss 的基础上增加一个惩罚项,为包围预测框和的最小区域大小,当 bbox 的距离越大时,惩罚项将越大。
尽管 GIoU 解决了 IoU 的梯度问题,但他仍然存在几个限制:

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 1、边界框回归步骤 GIoU 损失 (第一行) 和 DIoU 损失 (第二行)。绿色和黑色分别表示 target 框和 anchor 框。蓝色和红色分别表示 GIoU 损失和 DIoU 损失的预测框。GIoU 损失一般会增加预测框的大小,使其与 target 框重叠,而 DIoU 损失则直接使中心点的归一化距离最小化。

如图 1 所示,在训练过程中,GIoU 倾向于先增大 bbox 的大小来增大与 GT 的交集,然后通过公式 3 的 IoU 项引导最大化 bbox 的重叠区域。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 2、在这种情况下,GIoU 的 loss 会退化为 IoU 的 loss,而 DIoU 的 loss 仍然可以区分。绿色和红色分别表示目标框和预测框。

如图 2 中的包含情况,GIoU 会退化成 IoU。
由于很大程度依赖 IoU 项,GIoU 需要更多的迭代次数来收敛,特别是水平和垂直的 bbox (后面会分析)。一般地,GIoU loss 不能很好地收敛 SOTA 算法,反而造成不好的结果。

4、DIoU

综合上面的分析,论文提出 Distance-IoU(DIoU) loss,简单地在 IoU loss 基础上添加一个惩罚项,该惩罚项用于最小化两个 bbox 的中心点距离。如图 1 所示,DIoU 收敛速度和效果都很好,而且 DIoU 能够用于 NMS 的计算中,不仅考虑了重叠区域,还考虑了中心点距离。另外,论文考虑 bbox 的三要素,重叠区域,中心点距离和长宽比,进一步提出了 Complete IoU(CIoU) loss,收敛更快,效果更好。

二、对 IoU Loss 和 GIoU Loss 的分析

为了全面地分析 IoU loss 和 GIoU 的性能,论文进行了模拟实验,模拟不同的距离、尺寸和长宽比的 bbox 的回归情况。

1、Simulation Experiment

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 3、Simulation Experiment

如图 3 所示,实验选择 7 个不同长宽比 (1:4, 1:3, 1:2, 1:1, 2:1, 3:1, 4:1) 的单元 box(area=1) 作为 GT,单元框的中心点固定在 (7, 7),而实验共包含 5000 x 7 x 7 个 bbox,且分布是均匀的:

*Distance:在中心点半径 3 的范围内均匀分布 5000 中心点,每个点带上 7 种 scales 和 7 种长宽比;
*Scale:每个中心点的尺寸分别为 0.5, 0.67, 0.75, 1, 1.33, 1.5, 2 ;
*Aspect ratio:每个中心点的长宽比为 1:4, 1:3, 1:2, 1:1, 2:1, 3:1, 4:1。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

给定一个 loss 函数,可以通过梯度下降来模拟 bbox 优化的过程。对于预测的 bbox,为阶段的结果,为对的梯度,使用来加速收敛。bbox 的优化评价使用-norm,共训练 200 轮,error 曲线如图 3b 所示

2、Limitations of IoU and GIoU Losses

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 4

论文将 5000 个中心点上的 bbox 在最后阶段的 total error 进行了可视化。IoU loss 只对与 target box 有交集的 bbox 有效,因为无交集的 bbox 的为 0。而 GIoU 由于增加了惩罚函数,盆地区域明显增大,但是垂直和水平的区域依然保持着高错误率,这是由于 GIoU 的惩罚项经常很小甚至为 0,导致训练需要更多的迭代来收敛。

三、方法

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

一般而言,IoU-based loss 可以定义为公式 5,是预测 box 和的惩罚项。

1、Distance-IoU Loss

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

论文提出了能减少两个 box 中心点间的距离的惩罚项,和分别表示和的中心点。是欧氏距离,是最小包围两个 bbox 的框的对角线长度。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

DIoU loss 的完全定义如公式 7。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 5

DIoU loss 的惩罚项能够直接最小化中心点间的距离,而 GIoU loss 意在减少外界包围框的面积 DIoU loss 保留了 IoU loss 和 GIoU loss 的一些属性:

*DIoU loss 依然是尺寸无关的,不会大尺寸产生大的 loss,小尺寸产生小的 loss 那样;
*类似于 GIoU loss,DIoU loss 能够为无交集的 bbox 提供梯度方向;
*当 bbox 完全重合时,,当 bbox 很远时,

在模拟实验中,发现 DIoU loss 也有一些独有的属性:

*如图 1 和图 3 所示,DIoU loss 能够直接最小化 bbox 的中心点距离。因此,他的收敛很快;
*在包含的情况下,或垂直和水平的情况下,DIoU loss 的收敛非常快,而 GIoU loss 则几乎退化成了 IoU loss。

2、Complete IoU loss

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

论文考虑到 bbox 回归三要素中的长宽比还没被考虑到计算中,因此,进一步在 DIoU 的基础上提出了 CIoU。其惩罚项如公式 8,其中是权重函数,而用来度量长宽比的相似性。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

完整的损失函数定义如公式 10。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

α 的定义如公式 11,重叠区域能够控制权重的大小。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

最后,CIoU loss 的梯度类似于 DIoU loss,但还要考虑的梯度。在长宽在的情况下,的值通常很小,会导致梯度爆炸,因此在实现时将替换成 1。

3、Non-Maximum Suppression using DIoU

在原始的 NMS 中,IoU 指标用于抑制多余的检测框,但由于仅考虑了重叠区域,经常会造成错误的抑制,特别是在 bbox 包含的情况下。因此,可以使用 DIoU 作为 NMS 的标准,不仅考虑重叠区域,还考虑了中心点距离。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

其中是分类置信度,为 NMS 阈值,为最高置信度的框。DIoU-NMS 倾向于中心点距离较远的 box 存在不同的对象,而且仅需改几行代码,DIoU-NMS 就能够很简单地集成到目标检测算法中。

四、实验结果

1、YOLO v3 on PASCAL VOC

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

在 YOLOv3 上进行实验对比,DIoU loss 和 CIoU 的效果都很显著,mAP 分别提升 3.29% 和 5.67%,而 AP75 则分别提升 6.40% 和 8.43%,而使用 DIoU-NMS 则能进一步提升,幅度达到 5.91% 和 9.88%。

2、SSD on PASCAL VOC

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

在 SSD-FPN 上进行实验对比,因为本身模型已经精度很好了,DIoU loss 和 CIoU 的效果不是很显著,但仍有提升。mAP 分别提升 0.59% 和 0.84%,而 AP75 则分别提升 1.77% 和 2.59%,而使用 DIoU-NMS 则能进一步提升效果。

3、Faster R-CNN on MS COCO

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

在 Faster R-CNN ResNet-50-FPN 上,由于 Faster R-CNN 本身提供的 bbox 质量都比较高(即在图 4 的盆地),因此,GIoU 的优化都很小,但此时 DIoU 和 CIoU 则表现了不错的优化效果。注意到,CIoU 在小物体上的性能都有所下降,可能由于长宽比对小物体的检测贡献不大,因为此时中心点比长宽比重要。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 6

图 6 对 GIoU 和 CIoU 的结果进行了可视化,可以看到,在中大型物体检测上,CIoU 的结果比 GIoU 要准确。

4、Discussion on DIoU-NMS

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 7

如图 7 所示,DIoU-NMS 能够更好地引导 bbox 的消除。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

图 8

为了进一步验证 DIoU-NMS 的效果,进行了对比实验。如图 8 所示,DIoU-NMS 的整体性能都比原生的 NMS 效果要好。
五、总结
论文提出了两种新的 IoU-based 损失函数,DIoU loss 和 CIoU loss:DIoU loss 最小化 bbox 间的中心点距离,从而使得函数快速收敛;CIoU loss 则在 DIoU loss 的基础上加入长宽比的考量,能够进一步地快速收敛和提升性能。另外论文提出 DIoU-NMS 来代替原生的 NMS,充分地利用 IoU 的特性进行优化,从实验结果来看,效果也是很好的。


**
AAAI 2020 报道:**

新型冠状病毒疫情下,AAAI2020 还去开会吗?

美国拒绝入境,AAAI2020 现场参会告吹,论文如何分享?

AAAI 最佳论文公布

AAAI 2020 论文集:AAAI 2020 论文解读会 @ 望京(附 PPT 下载)
AAAI 2020 上的 NLP 有哪些研究风向?微软 6 篇精选 AAAI 2020 论文

AAAI 2020 论文解读系列:

01. [中科院自动化所] 通过识别和翻译交互打造更优的语音翻译模型02. [中科院自动化所] 全新视角,探究「目标检测」与「实例分割」的互惠关系03. [北理工] 新角度看双线性池化,冗余、突发性问题本质源于哪里?04. [复旦大学] 利用场景图针对图像序列进行故事生成05. [腾讯 AI Lab] 2100 场王者荣耀,1v1 胜率 99.8%,腾讯绝悟 AI 技术解读06. [复旦大学] 多任务学习,如何设计一个更好的参数共享机制?07. [清华大学] 话到嘴边却忘了?这个模型能帮你 | 多通道反向词典模型08. [北航等] DualVD:一种视觉对话新框架
09. [清华大学] 借助 BabelNet 构建多语言义原知识库10. [微软亚研] 沟壑易填:端到端语音翻译中预训练和微调的衔接方法11. [微软亚研] 时间可以是二维的吗?基于二维时间图的视频内容片段检测12. [清华大学] 用于少次关系学习的神经网络雪球机制

13. [中科院自动化所] 通过解纠缠模型探测语义和语法的大脑表征机制

14. [中科院自动化所] 多模态基准指导的生成式多模态自动文摘

15. [南京大学] 利用多头注意力机制生成多样性翻译

16. [UCSB 王威廉组] 零样本学习,来扩充知识图谱(视频解读)

17. [上海交大] 基于图像查询的视频检索,代码已开源!

18. [奥卢大学] 基于 NAS 的 GCN 网络设计(视频解读)19. [中科大] 智能教育系统中的神经认知诊断,从数据中学习交互函数20. [北京大学] 图卷积中的多阶段自监督学习算法21. [清华大学] 全新模型,对话生成更流畅、更具个性化(视频解读,附 PPT)22. [华南理工] 面向文本识别的去耦注意力网络23. [自动化所] 基于对抗视觉特征残差的零样本学习方法24. [计算所] 引入评估模块,提升机器翻译流畅度和忠实度(已开源)25. [北大 & 上交大] 姿态辅助下的多相机协作实现主动目标追踪26. [快手] 重新审视图像美学评估 & 寻找精彩片段聚焦点27. [计算所 & 微信 AI] 改进训练目标,提升非自回归模型翻译质量(已开源)28. [中科院 & 云从科技]:双视图分类,利用多个弱标签提高分类性能29. [中山大学] 基于树状结构策略的渐进强化学习30. [东北大学] 基于联合表示的神经机器翻译(视频解读)31. [计算所] 引入评估模块,提升机器翻译流畅度和忠实度(视频解读)32. [清华大学] 用于少次关系学习的神经网络雪球机制(视频解读)33. [计算所] 非自回归机器翻译,基于 n 元组的训练目标(视频解读)34. [清华大学] 司法考试数据集(视频解读,附下载链接)
35. [自动化所] 弱监督语义分割(视频解读)36. [自动化所] 稀疏二值神经网络,不需要任何技巧,取得 SOTA 精度(视频解读)37. [华科 & 阿里] 从边界到文本—一种任意形状文本的检测方法38. [上交大 & 云从科技] DCMN+ 模型:破解「阅读理解」难题,获全球领先成绩39. [自动化所 & 微信 AI] 双通道多步推理模型,更好解决视觉对话生成问题
40. [ETH Zurich] 反向 R?削弱显著特征为细粒度分类带来提升41. [中科大] RiskOracle: 一种时空细粒度交通事故预测方法42. [华为] 短小时序,如何预测?——基于特征重构的张量 ARIMA43. [清华大学] 棋盘游戏做辅助,进行跳跃式标注(视频解读)44. [商汤] 新视频语义分割和光流联合学习算法45. [商汤] 新弱监督目标检测框架

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

更多 AAAI 2020 信息,将在「AAAI 2020 交流群」中进行,加群方式:添加 AI 研习社顶会小助手(AIyanxishe2),备注「AAAI」,邀请入群。

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式

AAAI 2020 | DIoU 和 CIoU:IoU 在目标检测中的正确打开方式点击“阅读 原文” 前往 AAAI 2020 专题页