目标检测常用的评价指标

news2024/9/21 22:48:45

目标检测常用的评价指标

  • 1 IoU(Intersection over Union)
  • 2 GIoU(Generalized IoU)
  • 3 DIoU(Distance-IoU)
  • 4 CIoU(Complete-IoU)
  • 5 EIoU(Efficient-IoU)
  • 6 SIoU
  • 7 Wise-IoU
  • 8 α-IoU

在目标检测任务中,常用到一个指标 I o U IoU IoU,即交并比,IoU可以很好的描述一个目标检测模型的好坏。在训练阶段 I o U IoU IoU 可以作为 a n c h o r − b a s e d anchor-based anchorbased 方法中,划分正负样本的依据;同时也可用作损失函数;在推理阶段, N M S NMS NMS 中会用到 I o U IoU IoU。同时 I o U IoU IoU有着比较严重的缺陷,于是出现了 G I o U GIoU GIoU D I o U DIoU DIoU C I o U CIoU CIoU E I o U EIoU EIoU,下面我们一起看一下这几种 I o U IoU IoU

1 IoU(Intersection over Union)

I o U IoU IoU 的计算是用预测框 A A A 和真实框 B B B 的交集除以二者的并集,其公式为:
I o U = A ∩ B A ∪ B IoU=\frac{A\cap B}{A\cup B} IoU=ABAB
I o U IoU IoU 的值越高也说明 A A A 框与 B B B 框重合程度越高,代表模型预测越准确。反之, I o U IoU IoU 越低模型性能越差。

损失函数

L I o u = 1 − I o U L_{Iou}=1-IoU LIou=1IoU

优点

  • I o U IoU IoU具有尺度不变性:简单来讲就是两个框按照任意比例同时缩放,求出的IOU值不变
  • 结果非负,且范围是 [ 0 , 1 ] [0, 1] [0,1]

缺点

  • 如果两个目标没有重叠, I o U IoU IoU 将会为 0 0 0,并且不会反应两个目标之间的距离,在这种无重叠目标的情况下,如果 I o U IoU IoU 用作于损失函数,梯度为 0 0 0,无法优化,且无法判断两个框之间靠的非常近还是非常远。另外,如果有多个预测框与真实框都没有交集,计算出来的 I o U IoU IoU 都为 0 0 0,损失都为 1 1 1,但是下图中明显可以看到预测框 1 1 1与真实框更加接近,损失更小才对。

在这里插入图片描述

  • I o U IoU IoU 无法精确的反映两者的重合度大小。如下图所示,三种情况 I o U IoU IoU 都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。

在这里插入图片描述

2 GIoU(Generalized IoU)

为了解决 I o U IoU IoU 作为损失函数时的两个缺点,提出了 G I o U GIoU GIoU ,在 I o U IoU IoU 后面增加了一项,计算两个框的 最小外接矩形 ,用于表征两个框的距离,从而解决了两个目标没有交集时梯度为零的问题,公式为:

G I o U = I o U − C − ( A ∪ B ) C GIoU=IoU-\frac{C-(A\cup B)}{C} GIoU=IoUCC(AB)
其中 C 是两个框的最小外接矩形的面积

I o U = 0 IoU=0 IoU=0 时:
G I o U = − 1 + A ∪ B C GIoU=-1+\frac{A\cup B}{C} GIoU=1+CAB
在这里插入图片描述
损失函数

L G I o u = 1 − G I o U L_{GIou}=1-GIoU LGIou=1GIoU

取两种极端情况: A A A B B B 重合以及 A A A B B B 不相交且 C C C 为无穷大, G I o U GIoU GIoU 的取值范围为 [ − 1 , 1 ] [-1,1] [1,1] L G I o u L_{GIou} LGIou的取值范围为 [ 0 , 2 ] [0,2] [0,2]

A A A B B B 两框不相交时, A ∪ B A\cup B AB 不变,最大化 G I o U GIoU GIoU 就是最小化 C C C,这样就会促使两个框不断靠近。

优点

  • I o U = 0 IoU=0 IoU=0 时,仍然可以很好的表示两个框的距离。
  • G I o U GIoU GIoU 不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。

缺点

  • 虽然 G I o U GIoU GIoU 可以缓解重叠情况下的梯度消失问题,但它仍有一些局限性,当两个框属于包含关系时, G I o U GIoU GIoU会退化成 I o U IoU IoU,无法区分其相对位置关系,无法衡量有包含关系时的框回归损失,如下图,三个回归框具有相同的 G I o U GIoU GIoU,但是显然第二个框的回归效果更好。
    在这里插入图片描述
  • 由于 G I o U GIoU GIoU 仍然严重依赖 I o U IoU IoU,因此在两个垂直方向(上、下),误差很大,很难收敛。两个框在相同距离的情况下,水平垂直方向时,此部分面积 C C C 最小,对 l o s s loss loss 的贡献也就越小,从而导致在垂直水平方向上回归效果较差。 如下图,三种情况下 G I o U GIoU GIoU 的值一样, G I o U GIoU GIoU 将很难区分这种情况。

在这里插入图片描述

3 DIoU(Distance-IoU)

针对上述 G I o U GIoU GIoU 的两个问题,将 G I o U GIoU GIoU 中最小外接框来最大化重叠面积的惩罚项修改成最小化两个 B B o x BBox BBox 中心点的标准化距离从而加速损失的收敛过程,这就诞生了 D I o U DIoU DIoU

D I o U DIoU DIoU 要比 G I o U GIoU GIoU 更加符合目标框回归的机制,将目标与预测之间的距离,重叠率以及尺度都考虑进去,使得目标框回归变得更加稳定,不会像 I o U IoU IoU G I o U GIoU GIoU 一样出现训练过程中发散等问题。

D I o U = I o U − ρ 2 ( b , b g t ) c 2 DIoU=IoU-\frac{\rho^{2}\left(b, b^{gt}\right)}{c^{2}} DIoU=IoUc2ρ2(b,bgt)
其中 b b b b g t b^{gt} bgt分别代表了预测框、真实框的中心点,且 ρ \rho ρ 代表的是计算两个中心点间的欧式距离, c c c 代表的事能够同时包含预测框和真实框的最小外接矩形的对角线长度。

在这里插入图片描述

损失函数

L D I o u = 1 − D I o U L_{DIou}=1-DIoU LDIou=1DIoU

优点

  • D I o U l o s s DIoU loss DIoUloss 可以直接最小化两个目标框的距离,因此比 G I o U l o s s GIoU loss GIoUloss 收敛(减小并趋于稳定)快得多。
  • 对于包含两个框在水平方向和垂直方向上这种情况, D I o U DIoU DIoU 损失可以使回归非常快。
  • D I o U DIoU DIoU 还可以替换普通的 I o U IoU IoU 评价策略,应用于 N M S NMS NMS 中,使得 N M S NMS NMS 得到的结果更加合理和有效。

缺点

  • 虽然 D I o U DIoU DIoU 能够直接最小化预测框和真实框的中心点距离加速收敛,但是 B o u n d i n g b o x Bounding box Boundingbox 的回归还有一个重要的因素 纵横比 暂未考虑。如下图,三个红框的面积相同,但是长宽比不一样,红框与绿框中心点重合,这时三种情况的 D I o U DIoU DIoU 相同,证明 D I o U DIoU DIoU 不能很好的区分这种情况。

在这里插入图片描述

4 CIoU(Complete-IoU)

C I o U CIoU CIoU D I o U DIoU DIoU 出自同一篇论文, C I o U CIoU CIoU 大多数用于训练。 D I o U DIoU DIoU 的作者考虑到,在两个框中心点重合时, c c c d d d 的值都不变。所以此时需要引入框的宽高比:

C I o U = I o U − ( ρ 2 ( b , b g t ) c 2 + α v ) CIoU=IoU-\left(\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}}+\alpha v\right) CIoU=IoU(c2ρ2(b,bgt)+αv)

其中 α \alpha α 是权重参数, v v v 用来度量宽高比的一致性:

α = v ( 1 − I o U ) + V \alpha =\frac{v}{(1-IoU)+V} α=(1IoU)+Vv

V = 4 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 V=\frac{4}{\pi^2 } (\arctan\frac{w_{gt}}{h_{gt}} -\arctan \frac{w}{h})^2 V=π24(arctanhgtwgtarctanhw)2

损失函数
L C I o u = 1 − C I o U L_{CIou}=1-CIoU LCIou=1CIoU

优点

  • 考虑了框的纵横比,可以解决 D I o U DIoU DIoU 的问题。

缺点

  • 通过 C I o U CIoU CIoU 公式中的 v v v 反映的纵横比的差异,而不是宽高分别与其置信度的真实差异,所以有时会阻碍模型有效的优化相似性。

5 EIoU(Efficient-IoU)

为了解决 C I o U CIoU CIoU 的问题,有学者在 C I o U CIoU CIoU 的基础上将纵横比拆开,提出了 E I O U L o s s EIOU Loss EIOULoss,并且加入 F o c a l Focal Focal 聚焦优质的预测框,与 C I o U CIoU CIoU 相似的, E I o U EIoU EIoU 是损失函数的解决方案,只用于训练。

E I O U EIOU EIOU 的惩罚项是在 C I O U CIOU CIOU 的惩罚项基础上将纵横比的影响因子拆开分别计算目标框和预测框的长和宽,该损失函数包含三个部分:重叠损失,中心距离损失,宽高损失,前两部分延续 C I o U CIoU CIoU 中的方法,但是宽高损失直接使目标框与预测框的宽度和高度之差最小,使得收敛速度更快。

惩罚项公式如下:

L E I o U = L I o U + L d i c + L a s p = 1 − I o U + ρ 2 ( b , b g t ) c w 2 + c h 2 + ρ 2 ( w , w g t ) c w 2 + ρ 2 ( h , h g t ) c h 2 \begin{align} L_{EIoU} & = L_{IoU}+L_{dic}+L_{asp} \\ & = 1-IoU+\frac{\rho ^2(b,b^{gt})}{c_w^2+c_h^2} +\frac{\rho ^2(w,w^{gt})}{c_w^2}+\frac{\rho ^2(h,h^{gt})}{c_h^2} \end{align} LEIoU=LIoU+Ldic+Lasp=1IoU+cw2+ch2ρ2(b,bgt)+cw2ρ2(w,wgt)+ch2ρ2(h,hgt)

其中 c w c_w cw c h c_h ch 是覆盖两个 B o x Box Box 的最小外接框的宽度和高度

通过整合 E I o U EIoU EIoU l o s s loss loss F o c a l Focal Focal L 1 L1 L1 l o s s loss loss ,最终得到了最终的 F o c a l − E I o U l o s s Focal-EIoU loss FocalEIoUloss,其中 γ \gamma γ 是一个用于控制曲线弧度的超参

L F o c a l − E I o U = I o U γ L E I o U L_{Focal-EIoU}=IoU^\gamma L_{EIoU} LFocalEIoU=IoUγLEIoU

优点

  • 将纵横比的损失项拆分成预测的宽高分别与最小外接框宽高的差值,加速了收敛提高了回归精度。
  • 引入了 F o c a l L o s s Focal Loss FocalLoss 优化了边界框回归任务中的样本不平衡问题,即减少与目标框重叠较少的大量锚框对 B B o x BBox BBox 回归的优化贡献,使回归过程专注于高质量锚框。

总结 \mathbf{ {\color{Red} 总结}} 总结

在这里插入图片描述

6 SIoU

7 Wise-IoU

8 α-IoU

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

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

相关文章

爬虫入门07——requests中携带cookie信息

爬虫入门07——requests中携带cookie信息 对于需要登陆的网站如果不携带cookie是无法获取我们所需内容的就以查看我在CSDN中的订单为例,在登陆后可以查看到订单信息 而当我们使用Python代码发出请求时,是不携带cookie,因此无法拿到订单相关信…

Flink的状态是否支持任务间共享

背景: 在日常编写代码的过程中,我们经常会在方法内部new很多的其他类对象来进行编码工作,那么对于这种情况怎么让new出来的对象是一个我们特意创建出来的一个mock实例,从而让我们能完全控制new出来的对象的所有行为呢&#xff1f…

【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

数模混合项目:模拟跨数字走线注意事项

数模混合项目中,模拟在数字上走线是常有的事,这里需要注意几个点: 1.模拟电源在数字上走线影响不大,但尽量走top metal和AP层。 2.模拟高频线,尤其是时钟,尽量不要在数字上走线,非要走,最好下…

数据总线学习

为啥要数据总线 使用服务化方式发布,业务端和中间件完全解耦合。一处生产,处处消费设计理念。提供用户可定制的托管化通用消费方案(如同步mysql到缓存,同步mysql到es,消费mysql到大数据等托管服务) 特性 …

python configparser模块常用方法以及常见报错处理

configparser 是 Python 中一个用于处理配置文件的标准库,可以帮助你生成、读取和修改配置文件的内容 1. 生成配置文件 import configparser# 创建一个配置文件对象 config configparser.ConfigParser()# 添加配置项和值 config[Section1] {key1: value1, key2: …

java 科学计算库 Smile

官网 https://haifengl.github.io/ github https://haifengl.github.io/ 简介 统计机器智能和学习引擎,或者简称 Smile,是一个有前途的现代机器学习系统,在某些方面类似于 Python 的 scikit-learn。它是用 Java 开发的,也提供…

私域账号防范手册

微信为什么要养号吗?为什么会被封?是什么原理,怎么解封,这些你的了解吗? 来看看这篇文章,这些都能给你解答。

向日葵远程命令执行漏洞(CNVD-2022-10270) 漏洞复现

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 影响范围03 利用方式05 实战案例06 修复方案 01 漏洞描述 向日葵远程控制是一款面向企业和专业人员的远程pc管理和控制的服务软件。可以在任何有网络的情况下,轻松访问并控制…

Linux命令之nc命令

一、命令简介 nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncat,nc是软连接到ncat。nc命令的主要作用如下: 实现任意TCP/UDP端口的侦听,nc可以作为server以T…

vue3中的包装响应式数据ref、reactive、toRef、toRefs

一、ref Vue 3中拥有一个新的特性叫做ref,它是一个函数,用于包装响应式数据。与Vue 2的data选项不同,ref可以在普通JavaScript中使用,而不仅仅是在Vue组件中。ref可以将普通的JavaScript数据变成响应式的,这意味着当被…

Python接口自动化测试post请求和get请求,获取请求返回值

引言 我们在做python接口自动化测试时,接口的请求方法有get,post等;get和post请求传参,和获取接口响应数据的方法; 请求接口为Post时,传参方法 我们在使用python中requests库做接口测试时,在做post接口测试…

Go语言-数组和切片有什么异同?

slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。 数组是定长的,长度定义好之后,不能再更改。在 Go 中,数组是不常见的,因为其长度是类型的一部分…

2023年第一届证券基金行业先进计算峰会在沪成功召开

2023年7月7日,在中国计算机学会集成电路设计专委会、中国通信学会金融科技发展促进中心、中国电子工业标准化技术协会新一代计算标准工作委员会和证券基金信息技术创新联盟WG1工作组的指导下,由中科驭数主办的2023年第一届证券基金行业先进计算峰会在上海…

以太网电子产品高低温循环测试

参考标准:《GB/T 2423.22-2012 环境试验 第2部分:试验方法 试验N:温度变化》:试验用来确定元器件、设备或其他产品耐受环境温度快速变化的能力。 1、测试影响因素 温度变化试验用来确定一次或连续多次的温度变化对试验样品的影响…

linux报错 /bin/bash^M:解释器错误:没有那个文件或目录

在Linux中运行脚本时,会出现linux报错 /bin/bash^M:解释器错误:没有那个文件或目录。这是因为我们将在Windows下编写的脚本拷贝到Linux环境中运行时会出现运行不了的情况。主要还是Windows的换行符为\r\n,而Linux环境中的换行符号为\n。 解决方法有:  …

Java安全——基于密码的加密

Java安全 基于密码的加密 基于密码加密和SSL加密的区别 密码加密可以数据和密码分离传输SSL只限于在套接字空间传输的数据进行加密 SSL和密码加密 密码加密是指通过算法将原始信息转换成密文,只有知道相应密钥的人才能解密。Java中常用的密码加密算法包括MD5、SHA、…

Buffer Overflow缓冲区溢出和保护措施

缓冲区溢出是指当数据写入某个缓冲区(buffer)时,超出了为该缓冲区分配的内存空间,从而导致覆盖了相邻内存区域的情况。这种现象可能导致程序崩溃、数据损坏,甚至引发安全漏洞,允许攻击者利用这一漏洞执行恶…

Python程序开发——第十一章 图形用户页面编程

目录 一、图形用户界面与tkinter二、tkinter的根窗口(一)根窗口的创建(二)根窗口的基本方法 三、几何布局管理器(一)pack布局(二)grid布局(三)place布局 四、…

【Android】将手机屏幕投屏到电脑上控制的解决方案

有没有听说scrcpy呢,是投屏工具,通过它就可以实现把手机屏幕投屏到电脑上了,有此帮助,离实现目标更近了一步。 首先,去开源站点GitHub那里下载获取scrcpy 压缩包,根据自己的电脑系统选择下载即可&#xff…