目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

news2024/11/15 4:47:28

目标检测 回归损失函数

  • 1、Smooth L1 Loss
  • 2、 IoU Loss
  • 3、 GIoU Loss (Generalized-IoU Loss)
  • 4、 DIoU Loss (Distance-IoU Loss)
  • 5、 CIoU Loss (Complete-IoU Loss)
  • 总结:

目标检测任务的损失函数由 Classificition Loss 和 Bounding Box Regeression Loss 两部分构成。

本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是:
Smooth L1 Loss → \rightarrow IoU Loss → \rightarrow IoU Loss → \rightarrow GIoU Loss → \rightarrow DIoU Loss → \rightarrow CIoU Loss

本文亦按照此路线进行讲解。


1、Smooth L1 Loss

本方法由微软rgb大神提出,Fast RCNN论文提出该方法

1)假设x为预测框和真实框之间的数值差异,常用的 L1 loss、L2 Loss 和 smooth L1 loss 定义分别为:

在这里插入图片描述

2)上述的3个损失函数对x的导数分别为:

在这里插入图片描述

从损失函数对x的导数可知:

  • L 1 L1 L1 损失函数对 x x x 的导数为常数,在训练后期, x x x很小时,如果 learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
  • L 2 L2 L2 损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。
  • s m o o t h L 1 smooth_{L1} smoothL1 完美的避开了 L 1 L1 L1 L 2 L2 L2损失的缺点。

3)实际目标检测框回归任务中的损失 loss 为: L l o c ( t u , v ) = ∑ i ∈ ( x , y , w , h ) s m o o t h L 1 ( t i u − v i ) L_{loc(t^u, v)} = \sum_{i \in (x, y, w, h)}smooth_{L1}(t_i^u - v_i) Lloc(tu,v)=i(x,y,w,h)smoothL1(tiuvi)

其中:

  • v = ( v x , v y , v w , v h ) v = (v_x, v_y,v_w, v_h) v=(vx,vy,vw,vh) :表示GT 的框坐标,
  • t u = ( t x u , t y u , t x w , t h u ) t^u = (t^u_x, t^u_y, t^w_x, t^u_h) tu=(txu,tyu,txw,thu):表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。

在这里插入图片描述

缺点:

  • 上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
  • 实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的
    Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。

2、 IoU Loss

  • 本文由旷视提出,发表于2016 ACM

1)通过4个坐标点独立回归Building boxes的缺点:

  • 检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点
    如下图所示,L1或者L2 Loss相同的框,其IoU 不是唯一的 (图a. L2 loss 相同; 图b. L1 loss 相同)
  • 通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
  • 基于L1和L2的距离的loss对于尺度不具有不变性

在这里插入图片描述
2)基于此提出IoU Loss,其将4个点构成的box看成一个整体进行回归:

在这里插入图片描述


3、 GIoU Loss (Generalized-IoU Loss)

由斯坦福学者提出,发表于CVPR2019

1) IoU Loss 有2个缺点:

  • 当预测框和目标框不相交时, I o U ( A , B ) = 0 IoU(A,B)=0 IoU(A,B)=0 时,不能反映 A, B 距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。 L o s s = − l n I o U , ∂ l o s s ∂ I o U = ( − l n I o U ) ′ = − 1 I o U Loss=-ln^{IoU}, \quad\quad \frac{\partial loss}{\partial IoU} = (-ln^{IoU})' = -\frac{1}{IoU} Loss=lnIoU,IoUloss=(lnIoU)=IoU1
  • IoU值不能反映两个框是如何相交的:即使两个框的 I o U IoU IoU 值是相同的,其相交方式也可能很不一样。

在这里插入图片描述

2) GIoU :Generalized-IoU Loss
在这里插入图片描述

最后,损失可以用下面的公式来计算: L G I o U = 1 − G I o U L_{GIoU} = 1 - GIoU LGIoU=1GIoU

\quad

3)C 的面积的求解
假设有两个任意的 bbox A和B,我们要找到一个最小的封闭形状C,让C可以将A和B包围在里面。

A = ( x m i n A , x m a x A , y m i n A , y m a x A ) A = (x_{min}^A, x_{max}^A, y_{min}^A, y_{max}^A) A=(xminA,xmaxA,yminA,ymaxA)

B = ( x m i n B , x m a x B , y m i n B , y m a x B ) B = (x_{min}^B, x_{max}^B, y_{min}^B, y_{max}^B) B=(xminB,xmaxB,yminB,ymaxB)

则, C 的坐标为:

x m i n C = m i n ( x m i n A , x m i n B ) , x m a x C = m a x ( x m a x A , x m a x B ) x_{min}^C = min(x_{min}^A, x_{min}^B), \quad x_{max}^C = max(x_{max}^A, x_{max}^B) xminC=min(xminA,xminB),xmaxC=max(xmaxA,xmaxB)

y m i n C = m i n ( y m i n A , y m i n B ) , y m a x C = m a x ( y m a x A , y m a x B ) y_{min}^C = min(y_{min}^A, y_{min}^B), \quad y_{max}^C = max(y_{max}^A, y_{max}^B) yminC=min(yminA,yminB),ymaxC=max(ymaxA,ymaxB)

C 的面积为:
A r e a C = ( x m a x C − x m i n C ) ∗ ( y m a x C − y m i n C ) Area^C = (x_{max}^C - x_{min}^C) * (y_{max}^C - y_{min}^C) AreaC=(xmaxCxminC)(ymaxCyminC)

\quad

4)GIoU 相比于 IoU 有如下性质:

  • 和原始的 loU 类似,GIoU具有尺度不变性 ( GloU 对物体的尺度大小不敏感,因为使用的是比值的原因)
  • 0 ≤ = I o U < = 1 , 0 < = C − ( A ∪ B ) C < 1 0≤= IoU <=1,0 <= \frac{C - (A \cup B)}{C} <1 0≤=IoU<=10<=CC(AB)<1 L G I o U = 1 − G I o U L_{GIoU} = 1 - GIoU LGIoU=1GIoU, 所以 − 1 < G I O U < = 1 -1 < GIOU <= 1 1<GIOU<=1
    • 当 A 和 B 完全重合时:IoU = GIoU = 1
    • 当 A,B 不重合时, I o U = 0 , G I o U IoU=0, GIoU IoU=0GIoU 趋近于 -1, 或者说 当A,B 不重合且 距离无限远时, G I o U = − 1 GIoU = -1 GIoU=1

GIoU Loss 仍然存在不足:当目标框 完全包裹 预测框的时候,IoU 和 GIoU 的值一样,此情况下 GIoU 退化为 IoU, 无法区分其相对位置关系。
在这里插入图片描述
基于IoU和GIoU存在的问题,有两个方向 值得思考:

  • 第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
  • 第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比

  • DIoU Loss:考虑了重叠面积和中心点距离,相对于GIoU Loss收敛速度更快,但没有考虑到长宽比;
  • CIoU Loss,以上三个因素都考虑到了, 其收敛的精度更高。

4、 DIoU Loss (Distance-IoU Loss)

本文发表在AAAI 2020

  • 通常基于 IoU-based 的 loss 可以定义为 L = 1 − I o U + R ( B , B g t ) L =1- IoU + R(B, B^{gt}) L=1IoU+R(B,Bgt),其中 R ( B , B g t ) R(B, B^{gt}) R(B,Bgt) 定义为预测框 B B B 和目标框 B g t B^{gt} Bgt 的惩罚项。
  • D I o U DIoU DIoU 中的惩罚项表示为 R D I o U = ρ 2 ( b , b g t ) c 2 R_{DIoU} = \frac{\rho ^2(b, b^{gt})}{c^2} RDIoU=c2ρ2(b,bgt),其中 b b b b g t b^{gt} bgt分别表示 B$ 和 B g t B^{gt} Bgt 的中心点, ρ \rho ρ 表示欧式距离,C表示 B B B B g t B^{gt} Bgt 的最小外界矩形的对角线距离,如下图所示。可以将DIoU替换 IoU 用于 NMS算法当中,也即论文提出的DIoU-NMS,实验结果表明有一定的提升。
    • DloU Loss function 定义为: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 L_{DIoU} = 1- IoU + \frac{\rho ^2(b, b^{gt})}{c^2} LDIoU=1IoU+c2ρ2(b,bgt)

在这里插入图片描述
DIoU的性质:

  • 尺度不变性
  • 当两个框完全重合时, L I o U = L G I o U = L D I o U = 0 L_{IoU} = L_{GIoU} = L_{DIoU} = 0 LIoU=LGIoU=LDIoU=0
    当两个框不相交时
  • DIoU Loss 可以直接优化 2个框直接的距离,比 GIoU Loss 收敛速度更快
  • 对于目标框包裹预测框的这种情况,DIoU Loss 可以收敛的很快,而 GIoU Loss此时退化为IoU Loss收敛速度较慢

5、 CIoU Loss (Complete-IoU Loss)

1)CIoU的惩罚项是在DIoU的惩罚项基础上加了一个影响因子 α v \alpha v αv, 这个因子把预测框长宽比拟合目标框的长宽比考虑进去。

R C I o U = ρ 2 ( b , b g t ) c 2 + α v R_{CIoU} = \frac{\rho ^2(b, b^{gt})}{c^2} +\alpha v RCIoU=c2ρ2(b,bgt)+αv, 其中:

  • α \alpha α 是用于做 trade-off 的参数, α = v ( 1 − I o U ) + v \alpha = \frac{v}{(1-IoU)+v} α=(1IoU)+vv

  • v v v是用来衡量长宽比一致性的参数, v = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 v = \frac{4}{\pi^2}(arctan \frac{w^{gt}}{h^{gt}} - arctan \frac{w}{h})^2 v=π24(arctanhgtwgtarctanhw)2

CIoU Loss function的定义为: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v L_{DIoU} = 1- IoU + \frac{\rho ^2(b, b^{gt})}{c^2} +\alpha v LDIoU=1IoU+c2ρ2(b,bgt)+αv

2)DIoU和CIoU的提升效果

在这里插入图片描述


总结:

(1)Smooth L1 Loss
在这里插入图片描述

(2)loU Loss : L o s s = − l n I o U Loss=-ln^{IoU} Loss=lnIoU

(3)GloU Loss : L G I o U = 1 − I o U + C − ( A ∩ B ) ∣ C ∣ L_{GIoU} = 1 - IoU + \frac{C - (A \cap B)}{|C|} LGIoU=1IoU+CC(AB)

(4)DloU Loss: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 L_{DIoU} = 1- IoU + \frac{\rho ^2(b, b^{gt})}{c^2} LDIoU=1IoU+c2ρ2(b,bgt)

(5)CIoU Loss : L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v L_{DIoU} = 1- IoU + \frac{\rho ^2(b, b^{gt})}{c^2} +\alpha v LDIoU=1IoU+c2ρ2(b,bgt)+αv


参考文章:
1、目标检测回归损失函数简介
2、目标检测算法之CVPR2019 GIoU Loss

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】数据链路层(下)

文章目录媒体接入控制媒体接入控制-静态划分信道随机接入 CSMACD协议随机接入 CSMACA协议MAC地址MAC地址作用MAC地址格式MAC地址种类MAC地址的发送顺序单播MAC地址广播MAC地址多播MAC地址随机MAC地址IP地址区分网络编号IP地址与MAC地址的封装位置转发过程中IP地址与MAC地址的变…

1.1 硬件与micropython固件烧录及自编译固件

1.ESP32硬件和固件 淘宝搜ESP32模块,20-50元都有,自带usb口,即插即用. 固件下载地址:MicroPython - Python for microcontrollers 2.烧录方法 为简化入门难度,建议此处先使用带GUI的开发工具THonny,记得不是给你理发的tony老师. 烧录的入口是: 后期通过脚本一次型生成和烧…

[软件工程导论(第六版)]第3章 需求分析(课后习题详解)

文章目录1. 为什么要进行需求分析&#xff1f;通常对软件系统有哪些需求&#xff1f;2. 怎样与用户有效地沟通以获取用户的真实需求&#xff1f;3. 银行计算机储蓄系统的工作过程大致如下&#xff1a;储户填写的存款单或取款单由业务员输入系统&#xff0c;如果是存款则系统记录…

C语言经典编程题100例(81~100)

目录81、习题7-7 字符串替换82、习题8-10 输出学生成绩83、习题8-2 在数组中查找指定元素84、习题8-3 数组循环右移85、题8-9 分类统计各类字符个数86、习题9-2 计算两个复数之积87、习题9-6 按等级统计学生成绩88、习题11-1 输出月份英文名89、习题11-2 查找星期90、练习10-1 …

分享113个HTML娱乐休闲模板,总有一款适合您

分享113个HTML娱乐休闲模板&#xff0c;总有一款适合您 113个HTML娱乐休闲模板下载链接&#xff1a;https://pan.baidu.com/s/1aWYO2j2pSTjyqlQPHa0-Jw?pwdbium 提取码&#xff1a;bium Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 海上的沤鸟HTML网页模板…

(三十六)Vue解决Ajax跨域问题

文章目录环境准备vue的跨域问题vue跨域问题解决方案方式一方式二上一篇&#xff1a;&#xff08;三十五&#xff09;Vue之过渡与动画 环境准备 首先我们要借助axios发送Ajax&#xff0c;axios安装命令&#xff1a;npm i axios 其次准备两台服务器&#xff0c;这里使用node.j…

Linux | 网络通信 | 序列化和反序列化的讲解与实现

文章目录为什么要序列化&#xff1f;协议的实现服务端与客户端代码实现为什么要序列化&#xff1f; 由于默认对齐数的不同&#xff0c;不同的平台对相同数据进行内存对齐后&#xff0c;可能得到不同的数据。如果直接将这些数据进行网络传输&#xff0c;对方很可能无法正确的获…

【数据结构】单链表的接口实现(附图解和源码)

单链表的接口实现&#xff08;附图解和源码&#xff09; 文章目录单链表的接口实现&#xff08;附图解和源码&#xff09;前言一、定义结构体二、接口实现&#xff08;附图解源码&#xff09;1.开辟新空间2.头插数据3.头删数据4.打印整个单链表5.尾删数据6.查找单链表中的数据7…

Linux 磁盘挂载

目录 Linux硬盘分区 硬盘设备的文件名 /dev/sd[a-z] 硬盘分区 识别硬盘的文件名 Linux文件系统 文件系统类型 Linux如何保存文件 VFS虚拟文件系统 磁盘挂载命令 lsblk 查看系统的磁盘使用情况 fdisk 硬盘分区 mkfs 格式化文件系统 mount 挂载命令 df 显示磁盘空间…

Java中的链表实现介绍

Java中的链表实现介绍 学习数据结构的的链表和树时&#xff0c;会遇到节点&#xff08;node&#xff09;和链表&#xff08;linked list&#xff09;这两个术语&#xff0c;节点是处理数据结构的链表和树的基础。节点是一种数据元素&#xff0c;包括两个部分&#xff1a;一个是…

pytest总结

这里写目录标题一、pytest的命名规则二、界面化配置符合命名规则的方法前面会有运行标记三、pytest的用例结构三部分组成四、pytest的用例断言断言写法&#xff1a;五、pytest测试框架结构六、pytest参数化用例1、pytest参数化实现方式2、单参数&#xff1a;每一条测试数据都会…

第五十七章 树状数组(二)

第五十七章 树状数组&#xff08;二&#xff09;一、差分的缺陷二、树状数组与差分三、例题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示样例 1 解释&#xff1a;数据规模与约定代码一、差分的缺陷 差分的作用是能够在O(1)的时间内给一段区间加上相同的数字&am…

【计算机网络】数据链路层(上)

文章目录数据链路层概述封装成帧透明传输差错检测奇偶校验循环冗余校验CRC可靠传输可靠传输基本概念实现机制 — 停止-等待协议实现机制 — 回退N帧协议实现机制 — 选择重传协议点对点协议PPP数据链路层概述 首先我蛮来看看数据链路层在网络体系结构中的地位。如图所示主机h1…

key的作用原理与列表的遍历、追加、搜索、排序

目录 一、key的作用原理 二、实现列表遍历并对在列表最前方进行追加元素 三、实现列表过滤搜索 1、用computed计算属性来实现 2、用watch监听输入值的变化来实现 四、按年龄排序输出列表 一、key的作用原理 1. 虚拟DOM中key的作用&#xff1a; key是虚拟DOM对象的标识&a…

博彩公司 BetMGM 发生数据泄露,“赌徒”面临网络风险

Bleeping Computer 网站披露&#xff0c;著名体育博彩公司 BetMGM 发生一起数据泄露事件&#xff0c;一名威胁攻击者成功窃取其大量用户个人信息。 据悉&#xff0c;BetMGM 数据泄漏事件中&#xff0c;攻击者盗取了包括用户姓名、联系信息&#xff08;如邮政地址、电子邮件地址…

Unity如何实现3D物体拆解组装

一.前言 最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍…

AutoJs7、8版本快速接通vscode进行调试脚本

AutoJs7、8版本快速接通vscode进行调试脚本 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 # AutoJs7、8快速接通vscode进行调试脚本一、下载AutoJs并安装 https://download.csdn.net/download/huangbangqing12/87449177 下载完成后,…

【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波

【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波 文章目录【图神经网络】图拉普拉斯滤波器如何实现全通、低通、高通滤波1. 前言2. 符号说明3. 三种滤波3.1 全通滤波3.2 低通滤波3.2.1 平滑信号分析3.2.2 广义拉普拉斯平滑滤波器3.3 高通滤波4. 总结1. 前言 GCN&…

同步互斥与通信

我们可以把多任务系统当作一个团队&#xff0c;里面的每一个任务都相当于团队里的一个人。团队成员之间要协调工作进度&#xff08;同步&#xff09;、争用会议室&#xff08;互斥&#xff09;、沟通&#xff08;通信&#xff09;。多任务系统所涉及的概念&#xff0c;都可以在…

Spring之事务底层源码解析

Spring之事务底层源码解析 1、EnableTransactionManagement工作原理 开启 Spring 事务本质上就是增加了一个 Advisor&#xff0c;当我们使用 EnableTransactionManagement 注解来开启 Spring 事务时&#xff0c;该注解代理的功能就是向 Spring 容器中添加了两个 Bean&#xf…