边界框回归(BBR)的损失函数对于目标检测至关重要。它的良好定义将为模型带来显著的性能改进。大多数现有的工作假设训练数据中的样本是高质量的,并侧重于增强BBR损失的拟合能力。

一、L2-norm

最初的基于回归的BBR损失定义为L2-norm,L2-norm损失主要有两个缺点:
1、边界框的坐标(以xt、xb、xl、xr的形式)被优化为四个独立变量。这个假设违背了对象的边界高度相关的事实。简单的分开计算每个变量的回归loss无法反映这种相关性,它会导致预测框的一个或两个边界非常接近GT,但整个边界框是不满足条件的。
2、这种形式的损失函数并不能屏蔽边界框大小的干扰,使得模型对小目标的定位性能较差。

二、IoU loss

论文:《UnitBox: An Advanced Object Detection Network》

在目标检测任务中,使用IoU来测量anchor box与目标box之间的重叠程度。它以比例的形式有效地屏蔽了边界框大小的干扰,使该模型在使用1-IoU作为BBR损失时,能够很好地平衡对大物体和小物体的学习。

IoU loss的函数定义为:

当边界框没有重叠时Liou对Wi求导会等于0,即:

此时Liou的反向投影梯度消失,在训练期间无法更新重叠区域Wi的宽度。

IoU损失会有两个主要的缺点:

1、当预测框与真实框都没有交集时,计算出来的IoU都为0,损失都为1,但是缺失距离信息,预测框与GT相对位置较近时,损失函数应该较小。
2、当预测框和真实框的交并比相同,但是预测框所在位置不同,因为计算出来的损失一样,所以这样并不能判断哪种预测框更加准确。

现有的工作GIOU、DIOU、Focal EIOU、CIOU以及SIOU中考虑了许多与边界框相关的几何因子,并构造了惩罚项Ri来解决这个问题。现有的BBR损失遵循以下范例:

三、GIoU loss

论文:《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression》

为了解决IoU loss的第一个问题,即当预测框与真实框都没有交集的时候,计算出来的IoU都为0,损失都为1,引入了一个最小闭包区的概念,即能将预测框和真实框包裹住的最小矩形框

其中紫色框为GT,蓝色框为预测框,绿色的边框则为最小包围框。

GIoU的伪代码:

与IoU相似,GIoU也是一种距离度量,IoU取值[0,1],GIoU取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。

但是GIoU同时也存在一些问题:

1、当预测框包裹GT时,计算的iou相同,但是质量却不同,对于预测框的中心点靠近GT中心点的情况,loss应该相对小一些

GIoU loss的定义:

四、DIoU/CIoU loss

论文:《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》

DIoU为了解决GIoU中存在的问题,作者认为好的检测回归loss应该考虑三个几何度量,预测框和GT框的重叠度、中心点距离、长宽比的一致性。于是在IoU loss和GIoU loss基础上引入预测框和GT框中心点距离作DIoU loss,在DIoU loss基础上引入了预测框的长宽比和GT框的长宽比之间的差异作CIoU loss。此外,将DIoU加入nms替代IoU,提升了nms的鲁棒性。

DIoU定义:

DIoU也存在一个缺点,当真实框和预测框的中心点重合时,但是长宽比不同,交并比一样,CIoU在此基础上增加一个惩罚项。

CIoU定义:

其中:

v用于计算预测框和目标框的高宽比的一致性,这里是用tan角来衡量

α是一个平衡参数(这个系数不参与梯度计算),这里根据IoU值来赋予优先级,当预测框和目标框IoU越大时,系数越大 。

五、EIoU Loss/Focal EIoU Loss

论文:Focal and Efficient IOU Loss for Accurate Bounding Box Regression》

主要思想:

一是认为CIoU loss对于长宽比加入loss的设计不太合理,于是将CIoU loss中反应长宽比一致性的部分替换成了分别对于长和宽的一致性loss,形成了EIoU loss。

二是认为不太好的回归样本对回归loss产生了比较大的影响,回归质量相对较好的样本则难以进一步优化,所以论文提出Focal EIoU loss进行回归质量较好和质量较差的样本之间的平衡。

EIoU loss定义:

其中hc和wc为最小包围框的高和宽。

要平衡回归质量较好的样本的偏小loss和回归质量较差的样本的偏大loss,很自然的,选择和GT的IoU形成类似focal loss中的(1-p)的γ次方的权重来调节是一个很好的想法。

Focal EIoU loss定义:

最终形式:

指标对比:

六、SIoU loss

论文:《SIoU Loss: More Powerful Learning for Bounding Box Regression》

已有方法匹配真实框和预测框之间的IoU、中心点距离、宽高比等,它们均未考虑真实框和预测框之间不匹配的方向。这种不足导致收敛速度较慢且效率较低,因为预测框可能在训练过程中“徘徊”,最终生成更差的模型。

本文提出了一种新的损失函数SCYLLA-IoU(SIoU),考虑到期望回归之间向量的角度,重新定义角度惩罚度量,它可以使预测框快速漂移到最近的轴,随后则只需要回归一个坐标(X或Y),这有效地减少了自由度的总数。

Zhora证明了中心对准anchor box具有更快的收敛速度,并根据角度成本、距离成本和形状成本构造了SIoU。

Angle cost描述了中心点连接(图1)与x-y轴之间的最小角度,当中心点在x轴或y轴上对齐时,Λ = 0。当中心点连接到x轴45°时,Λ = 1。这一惩罚可以引导anchor box移动到目标框的最近的轴上,减少了BBR的总自由度数。

Distance cost描述了中心点之间的距离,其惩罚代价与角度代价呈正相关,当

IoU Loss综述(IOU,GIOU,CIOU,EIOU,SIOU,WIOU)相关推荐

  1. 【IoU loss】IoU损失函数理解

    文章目录 1 引言 2 问题分析 3 IoU Loss 4 代码演示IoU 5 感谢链接 1 引言 目标检测任务的损失函数由Classificition Loss和Bounding Box Reger ...

  2. yolov5 优化方法(四)修改bbox损失函数(补充EIOU,SIOU)

    [参考文档]江大白的yolo解析 后面会给出我的完整代码,先来分段看看! 转化格式 if x1y1x2y2: # x1, y1, x2, y2 = box1b1_x1, b1_y1, b1_x2, b ...

  3. 《一文搞懂IoU发展历程》GIoU、DIoU、CIoU、EIoU、αIoU、SIoU

    <一文搞懂IoU发展历程>GIoU.DIoU.CIoU.EIoU.αIoU.SIoU 文章目录 <一文搞懂IoU发展历程>GIoU.DIoU.CIoU.EIoU.αIoU.SI ...

  4. 基于IOU的损失函数合集, IoU, GIoU, DIoU,CIoU, EIoU

      目标检测任务的损失函数一般由 Classificition Loss(分类损失函数)和Bounding Box Regeression Loss(回归损失函数)两部分构成.   Bounding ...

  5. 目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss

    >>>深度学习Tricks,第一时间送达<<< 论文题目:<Focal and Efficient IOU Loss for Accurate Boundin ...

  6. IoU系列(IoU, GIoU, DIoU, CIoU)

    ​​​​​ 写在前面 一.IoU (Intersection over Union) 1.1 IoU的优点 1.2 作为损失函数会出现的问题(缺点) 二.GIoU (Generalized) 三. D ...

  7. NeurIPS 2021 助力YOLOv5涨点 Alpha-IoU:IoU Loss大一统

    经过测试,代码与Yolov5基本一致, 模型也是14m,精度没有大幅明显提升. Alpha-IoU:A Family of Power Intersection over Union Losses f ...

  8. α-IoU | 再助YOLOv5登上巅峰,造就IoU Loss大一统

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨 ChaucerG 编辑丨集智书童 在本文中,作者将现有的基于IoU Loss推广到一个新的P ...

  9. IoU loss 系列

    目录 IoU 之前 IoU loss GIoU loss DIoU & DIoU NMS CIoU IoU 之前 IoU loss提出前,大家主要通过4个坐标点独立回归Bounding box ...

最新文章

  1. 《Linux内核设计与实现》内存管理札记
  2. 客户端与服务端的TCP通信实现(Qt)
  3. leetcode116. 填充每个节点的下一个右侧节点指针
  4. tomcat优化-有改protocol 和 缓存 集群方案
  5. Standard C Episode 1
  6. Linux 命令(131)—— usermod 命令
  7. python小白从哪来开始-老男孩python课程亮点在哪里?python小白
  8. 通过xib创建控制器
  9. lanproxy搭建内网穿透
  10. mysql sql语句遇到错误继续_MySQL从数据库sql语句执行错误解决方法
  11. windows bat脚本 启动和停止程序
  12. 21天Python进阶学习挑战赛打卡------第2天(基础内容)
  13. csgo跑图文件_一键跑图!极为方便的CSGO跑图工具(附2020年5月28日更新)
  14. 外贸找客户软件:Email Extractor Pro 7.2.X
  15. 解决iOS 证书不受信任的问题
  16. IM是做什么?可以用来实现哪些功能?
  17. 工欲善其事必先利其器,提高编程效率
  18. u盘锁定计算机,u盘锁电脑的方法介绍【图解】
  19. IAAS云计算产品畅想-云主机的产品定位
  20. RT-Thread源码下载介绍

热门文章

  1. DEF盘全部不见怎么恢复
  2. 1、企业级项目测试报告模板
  3. 火力全开服务器不稳定怎么办,斗龙战士火力全开无法打开怎么办 斗龙战士火力全开登录不了解决方案...
  4. 二手车买卖APP功能比较
  5. 【vue】解决使用vue,导致jq插件失效的问题
  6. 微信小程序中使用EMQ
  7. 影像去除黑边或白边的三种方法
  8. 抖音快手最新版抓包模块免费送
  9. PDF文件如何修改文字和图片
  10. oracle 数据库执行 alter table rename to 后表及索引的统计信息变化