【目标检测】AAAI20 - 提升边界框回归《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》

本文主要是介绍【目标检测】AAAI20 - 提升边界框回归《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 初识
    • 相知
    • 回顾
    • 参考

初识

目标检测框有分割和定位两个任务,其中对于定位任务采用的损失通常为 l n l_n ln范式,但这种形式的损失并不是最佳选择(无法达到最优的IoU指标)。那是不是可以直接采用IoU作为损失呢?其损失函数形式如下所示:

在这里插入图片描述
看起来不错,直接针对关注的指标进行优化,但实际上IoU损失的应用范围有限,其只能在gt与预测框重叠的时候有效。因为如果两个框不重叠,无论它们距离多远,其值永远为0,无法为网络更新提供有效的梯度

因此在2019年的CVPR会议上提出了GIoU损失,其在IoU损失的基础上额外增加了一个损失项,如下所示:
在这里插入图片描述
其中 B ∪ B g t B∪B^{gt} BBgt分别表示预测框和GT的并,C表示两者最小外接矩形的面积(闭包区域)。在采用GIoU损失之后,如果两个框不重叠,它们之间也会计算出损失,并且距离越远损失值越大,这样为优化提供了方向。

那这样总行了吧?不论什么情况都可以进行优化了。但作者通过实验发现GIoU仍存在需要限制,在一些特殊情况下表现不好,并且收敛很慢。而本文提出的DIoU损失可以解决这些问题,其提出了一种新的损失项,直接最小化两个框中心之间的归一化距离
在这里插入图片描述
其中 ρ \rho ρ表示欧式距离, c c c为两框之间的对角线长度,如下图所示。
在这里插入图片描述
作者做了一个小实验,如下所示,其中绿色框表示GT,黑色框表示预测框(anchor),蓝色框表示用GIoU损失优化得到结果,红色框表示用本文提出的DIoU损失优化的结果。从图上可以看出来,GIoU损失会先想办法增加预测框的大小,使其与目标框重叠,然后再最大化边界框的重叠面积【退化到IoU损失】。而DIoU损失直接优化两个框之间的距离,能够更快的收敛(120个epoch)。

在这里插入图片描述
并且还可以进一步引入了长宽比信息,在DIoU的基础上提出了CIoU(Complete IoU)损失,进一步加速收敛和提升性能。并且DIoU还可以用于NMS中的评价指标【代替IoU计算重叠率】,使得对遮挡的情况更鲁棒。DIoUCIoU很容易嵌入到当前的SOTA检测方法中,作者实验证明在各种网络和数据集上均得到了提升。

相知

进一步分析IoU和GIoU损失

实验挺有趣的,大家可以去读一下原文这一段:简单点来说,就是预设了一些检测框和目标框,用不同损失去进行优化,统计他们损失信息进行分析。

在这里插入图片描述

作者通过实验进一步分析了IoUGIoU存在的不足,如下图所示(x,y表示每个候选框的位置,GT的坐标为(10,10),纵轴表示loss)。IoU损失只对那些与GT重叠的候选框优化比较好;GIoU对于那些落于水平方向和垂直方向上的检测框优化得不够好(容易退化到IoU Loss,虽然用足够的训练轮次和合适的学习率能够让其优化到目标框,但这会导致训练非常慢);而本文提出的DIoU对于各种情况的候选框都能优化得很好。
在这里插入图片描述
DIoU损失和GIoU损失

DIoU的具体形式在上文中已经表述的非常清楚了,在IoU损失的基础上增加了一个与GIoU不同的惩罚项,去优化两个框之间的归一化中心距离。
在这里插入图片描述
它即继承了IoU,GIoU的一些很好的特性【尺度不变性(无视检测框的尺寸),能够处理不重叠的情况,损失范围在[0,2)之间(0最优,2表示无限远)】,也解决了GIoU存在的一些问题【收敛慢,对于水平/垂直方向的候选框优化得不够好】。
在这里插入图片描述
作者分析,对于检测框回归任务来说,一个好的损失函数必须考虑三个方面:重叠率、中心点距离以及长宽比。DIoU已经考虑了前两个方面,作者进一步加入了长宽比的限制,提出了CIoU损失:
在这里插入图片描述
其中 v v v用于衡量目标框和预测框之间的长宽比一致性, α α α表示权衡参数,使得在优化过程中,重叠率的优先级更高。
在这里插入图片描述
在这里插入图片描述
还有一点需要注意的就是,在优化过程中, v v v中的 w , h w,h w,h的梯度计算需要指定,如下所示。为了解决梯度弥散的问题,将 1 w 2 + h 2 \frac{1}{w^2+h^2} w2+h21置为1。

在这里插入图片描述
将DIoU用于NMS

NMS是用于处理预测结果中的重叠框,通常使用IoU来进行判断(根据阈值从高到低选择,每次选择一个后,排除与其IoU在某个范围内的其他框)。但使用IoU只考虑重叠率,对于遮挡的情况处理得不够好,导致错误的抑制。因此可以将DIoU代替IoU,因为其不仅考虑重叠面积,还考虑了两框中心的归一化距离【两个中心点很远的检测框可能定位了不同的物体,不应将其移除】:
在这里插入图片描述
部分实验

下图展示了各种损失在YOLOv3和Faster RCNN上进行的实验,其中将损失替换成CIoU以及加上DIoU-NMS之后,整体的性能提升了非常多。
在这里插入图片描述
在这里插入图片描述

其中可以看到,加入长宽比约束之后对于小目标的检测性能有所下降,但是整体性能仍然是提升的。小目标下降也可以理解,这是因为对于小目标的检测来说,中心点之间的距离更重要,而引入长宽比会弱化中心距离的重要性。

下图展示了faster rcnn网络在COCO数据集上用不同损失训练得到的可视化效果
在这里插入图片描述
下图展示了普通NMS和DIoU-NMS之间的区别
在这里插入图片描述

回顾

这篇文章发表于AAAI2020,作者团队来自由天津大学和中国人民公安大学。整体方案的创新思路非常简单,改进很直观易懂,并且效果确实很好,让我觉得有意思的是,作者做了许多仿真实验,从不同的角度分析了当前方案存在的问题,以读者能够更直观感受到,喔!这确实是一个问题,然后提出的方法又正好解决了这个问题!如果一上来就直接介绍方法和实验结果,虽然让人感到很惊讶,但肯定没有这么让人印象深刻。

方法简单,又很容易嵌入到各种的检测模型当中,不管是对于比赛还是实际工业应用中都是一个可以尝试的trick。

参考

[1] https://zhuanlan.zhihu.com/p/94799295

这篇关于【目标检测】AAAI20 - 提升边界框回归《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/427973

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已