Focaler-IoU:更聚焦的IoU损失

news2024/9/23 3:14:47

摘要

边界框回归在目标检测领域中起着至关重要的作用,而目标检测的定位精度在很大程度上取决于边界框回归的损失函数。现有的研究通过利用边界框之间的几何关系来提高回归性能,而忽略了难易样本分布对边界框回归的影响。本文分析了难易样本分布对回归结果的影响,并提出了Focaler-IoU方法,该方法通过关注不同的回归样本,可以在不同的检测任务中提高检测器的性能。最后,通过使用现有的先进检测器和回归方法进行比较实验,进一步提高了使用本文提出的方法的检测性能。代码可在https://github.com/malagoutou/ Focaler-IoU上获取。

关键词:目标检测、损失函数、边界框回归

一、介绍

目标检测是计算机视觉的基本任务之一,其目的是在图像中定位和识别目标。根据是否生成锚点,可以将它们分为基于锚点和无锚点的方法。基于锚点的算法包括Faster R-CNN [1]、YOLO(You Only Look Once)系列 [2]、SSD(Single Shot MultiBox Detector) [3]和RetinaNet [4]。无锚点检测算法包括CornerNet [5]、CenterNet [6]和FCOS(Fully Convolutional One Stage Object Detection) [7]。在这些检测器中,边界框回归损失函数作为定位分支的重要组成部分,发挥着不可替代的作用。

A. 边界框回归损失

随着计算机视觉的发展,目标检测任务得到了研究人员的更多关注。为了评估各种算法在检测任务上的性能,需要引入适当的度量标准。在IoU(Intersection over Union) [8]被提出之前, l_{n} 范数损失 [13]被用作早期边界框回归问题的评估度量,然而,由于 l_{n} 范数损失对异常值非常敏感,这导致异常值对损失的影响更大,使得模型中存在异常值时性能不稳定。为了更好地解决上述问题,提出了一个更合适的度量标准:IoU(Intersection over Union) [8]。在基于IoU的评价准则下,大多数目标检测任务的检测精度得到了进一步提高,但IoU损失本身也存在一些缺点,例如,当GT框与锚点之间没有重叠时,它们的梯度会消失,这无法准确描述两个边界框之间的位置关系。为了弥补这一缺陷,GIoU [9]提出使用包含GT框和锚点的最小封闭框来计算损失可以提高检测性能。在CIoU和DIoU [10]中,为了弥补GIoU收敛速度慢的缺点,CIoU通过进一步考虑GT框与锚之间的宽高比来加速收敛,而DIoU通过归一化两个边界框质心之间的距离来加速收敛。EIoU [12]在CIoU的基础上进一步考虑了形状损失,通过最小化GT框与锚的宽度和高度之间的差异来加速收敛。SIoU [13]进一步考虑了连接两个边界框中心线的角度,并根据角度重新定义了距离损失和形状损失,并将其添加到损失函数中作为一个新的损失项,这使得基于IoU的当前损失函数达到了最佳的检测效果。

B. Focal Loss

在边缘回归过程中,训练样本不平衡的问题仍然存在。训练样本可以根据是否包含目标类别分为正样本和负样本。针对训练样本不平衡的一些传统解决方案是在训练过程中对困难样本进行采样和重新加权,然而,这种方法的效果并不显著。在Focal Loss [14]中,它提出容易识别的负样本在总损失中占主导地位,并主导梯度。Focal Loss [14]通过调整正负样本的权重,提高了模型识别稀有目标类别的能力,使模型更加关注难以分类的正样本,并减少相对容易分类的负样本的权重。在Libra R-CNN [15]中,提出了一种简单有效的平衡学习框架,其中在目标层使用平衡L1损失将训练样本分为离群点和内点。离群点被视为困难样本,与内点相比可以产生更大的梯度,这对训练过程是有害的。因此,Libra R-CNN使用梯度回归来促进内点并裁剪由离群点产生的较大梯度,以获得更好的分类结果。在EIoU [12]中,训练样本被分为高质量样本(锚点)和低质量样本(离群点),并在L1损失的基础上提出了FocalL1损失,以增加高质量样本对训练过程的梯度贡献。同时,将EIoU损失作为变量添加到FocalL1损失中,使模型能够更加关注高质量样本,以进一步提高检测效果。

本文的主要贡献如下:

  • 我们分析了困难样本和易样本分布对边界框回归的影响。基于现有的边界框回归方法,我们提出了Focaler-IoU,通过线性区间映射来关注不同的回归样本。
  • 我们使用先进的一阶段检测器进行了实验,验证了我们的方法可以有效提高检测性能,并弥补现有方法的不足之处。

II. 相关研究
近年来,随着检测器的发展,边缘回归损失得到了迅速发展。起初,IoU [8]被提出用于评估边界回归状态,然后基于IoU等,陆续提出了新的约束条件,如GIoU [9],DIoU [10],CIoU [10],EIoU [12]和SIoU [11]等。

A. IoU度量

IoU(交集与并集之比)是最受欢迎的目标检测评估标准,其定义如下:
I o U = ∣ B ∩ B g t ∣ ∣ B ∪ B g t ∣ I o U=\frac{\left|B \cap B^{g t}\right|}{\left|B \cup B^{g t}\right|} IoU=BBgtBBgt
其中 B 和 B^{g t} 分别表示预测框和GT框。

B. GIoU度量

为了解决IoU损失在边界框回归中由于GT框和Anchor框之间无重叠而导致的梯度消失问题,提出了GIoU(通用交集与并集之比) [9]。其定义如下:
G I o U = I o U − ∣ C − B ∩ B g t ∣ ∣ C ∣ G I o U=I o U-\frac{\left|C-B \cap B^{g t}\right|}{|C|} GIoU=IoUCCBBgt
其中 C 表示 GT 框和 Anchor 框之间的最小外接框。

C. DIoU度量

与GIoU相比,DIoU [10]考虑了边界框之间的距离约束,并在IoU的基础上添加了质心归一化距离损失项,从而使其回归结果更加准确。其定义如下:
D I o U = I o U − ρ 2 ( b , b g t ) c 2 D I o U=I o U-\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}} DIoU=IoUc2ρ2(b,bgt)

其中 b 和 b^{g t} 分别是锚框和GT框的中心点,\rho(\cdot) 表示欧几里得距离,其中 c 是 b 和 b^{g t} 之间的最小外接框的对角线距离。

CIoU [10]进一步通过在DIoU中添加新的形状损失项来考虑GT框和锚框之间的形状相似性,以减少锚框和GT框之间的纵横比差异。其定义如下:
C I o U = I o U − ρ 2 ( b , b g t ) c 2 − α v α = v ( 1 − I o U ) + v v = 4 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 \begin{array}{c} C I o U=I o U-\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}}-\alpha v \\ \alpha=\frac{v}{(1-I o U)+v} \\ v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2} \end{array} CIoU=IoUc2ρ2(b,bgt)αvα=(1IoU)+vvv=π24(arctanhgtwgtarctanhw)2
其中 w^{g t} 和 h^{g t} 分别表示GT框的宽度和高度,w 和 h 分别表示锚框的宽度和高度。

D. EIoU度量

EIoU [12]重新定义了基于CIoU的形状损失,并通过直接减少GT框和锚框之间的纵横比差异,进一步提高了检测精度。其定义如下:

E I o U=I o U-\frac{\rho^{2}\left(b, b^{g t}\right)}{c{2}}-\frac{\rho{2}\left(w, w^{g t}\right)}{\left(w{c}\right){2}}-\frac{\rho^{2}\left(h, h^{g t}\right)}{\left(h{c}\right){2}}

其中 w^{c} 和 h^{c} 分别表示覆盖GT框和锚框的最小外接框的宽度和高度。

E. SIoU度量

在先前研究的基础上,SIoU [11]进一步考虑了边界框之间的角度对边界框回归的影响,旨在通过减小锚框和GT框之间的角度(水平或垂直方向)来加速收敛过程。其定义如下:
S I o U = I o U − ( Δ + Ω ) 2 Λ = sin ⁡ ( 2 sin ⁡ − 1 min ⁡ ( ∣ x c g t − x c ∣ , ∣ y c g t − y c ∣ ) ( x c g t − x c ) 2 + ( y c g t − y c ) 2 + ϵ ) Δ = ∑ t = w , h ( 1 − e − γ ρ t ) , γ = 2 − Λ { ρ x = ( x c − x c g t w c ) 2 ρ y = ( y c − y c g t h c ) 2 Ω = ∑ t = w , h ( 1 − e − ω t ) θ , θ = 4 { ω w = ∣ w − w g t ∣ max ⁡ ( w , w g t ) ω h = ∣ h − h g t ∣ max ⁡ ( h , h g t ) \begin{array}{l} S I o U=I o U-\frac{(\Delta+\Omega)}{2} \\ \Lambda=\sin \left(2 \sin ^{-1} \frac{\min \left(\left|x_{c}^{g t}-x_{c}\right|,\left|y_{c}^{g t}-y_{c}\right|\right)}{\sqrt{\left(x_{c}^{g t}-x_{c}\right)^{2}+\left(y_{c}^{g t}-y_{c}\right)^{2}}+\epsilon}\right) \\ \Delta=\sum_{t=w, h}\left(1-e^{-\gamma \rho_{t}}\right), \gamma=2-\Lambda \\ \left\{\begin{array}{l} \rho_{x}=\left(\frac{x_{c}-x_{c}^{g t}}{w^{c}}\right)^{2} \\ \rho_{y}=\left(\frac{y_{c}-y_{c}^{g t}}{h^{c}}\right)^{2} \end{array}\right. \\ \Omega=\sum_{t=w, h}\left(1-e^{-\omega_{t}}\right)^{\theta}, \theta=4 \\ \left\{\begin{array}{l} \omega_{w}=\frac{\left|w-w_{g t}\right|}{\max \left(w, w_{g t}\right)} \\ \omega_{h}=\frac{\left|h-h_{g t}\right|}{\max \left(h, h_{g t}\right)} \end{array}\right. \\ \end{array} SIoU=IoU2(Δ+Ω)Λ=sin(2sin1(xcgtxc)2+(ycgtyc)2 +ϵmin(xcgtxc,ycgtyc))Δ=t=w,h(1eγρt),γ=2Λ ρx=(wcxcxcgt)2ρy=(hcycycgt)2Ω=t=w,h(1eωt)θ,θ=4{ωw=max(w,wgt)wwgtωh=max(h,hgt)hhgt

在这里插入图片描述

III. 方法
A. 分析

在各种目标检测任务中都存在样本不平衡的问题,根据目标检测的难度,可以将其分为困难样本和简单样本。从目标规模分析的角度来看,一般检测目标可以视为简单样本,而极小目标由于难以精确定位,可以视为困难样本。对于以简单样本为主的检测任务,在边界框回归过程中关注简单样本有助于提高检测性能。相反,对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。

B. Focaler-IoU

为了在不同的回归样本中关注不同的检测任务,我们使用线性间隔映射方法重构IoU损失,这有助于提高边缘回归。其公式如下:
I o U focaler  = { 0 , I o U < d I o U − d u − d , d ≪ I o U ≪ u 1 , I o U > u I o U^{\text {focaler }}=\left\{\begin{array}{ll} 0, & I o U<d \\ \frac{I o U-d}{u-d}, & d \ll I o U \ll u \\ 1, & I o U>u \end{array}\right. IoUfocaler = 0,udIoUd,1,IoU<ddIoUuIoU>u

其中 I o U^{\text {focaler }} 是重构的Focaler-IoU,IoU是原始的IoU值,而 [d, u] \in[0,1] 。通过调整 d 和 u 的值,我们可以使 I o U^{\text {focaler }} 关注不同的回归样本。其损失定义如下:
L Focaler-IoU  = 1 − I o U focaler  L_{\text {Focaler-IoU }}=1-I o U^{\text {focaler }} LFocaler-IoU =1IoUfocaler 
将Focaler-IoU损失应用于现有的基于IoU的边界框回归损失函数,L_{\text {Focaler-GIoU }},L_{\text {Focaler-DIoU }},L_{\text {Focaler-CIoU }},L_{\text {Focaler-EIoU }}和L_{\text {Focaler-SIoU }}如下所示:

L Focaler-GIoU  = L G I o U + I o U − I o U Focaler  L Focaler-DIoU  = L D I o U + I o U − I o U Focaler  L Focaler-CIoU  = L C I o U + I o U − I o U Focaler  L Focaler-EIoU  = L E I o U + I o U − I o U Focaler  L Focaler-SIoU  = L S I o U + I o U − I o U Focaler  \begin{array}{l} L_{\text {Focaler-GIoU }}=L_{G I o U}+I o U-I o U^{\text {Focaler }} \\ L_{\text {Focaler-DIoU }}=L_{D I o U}+I o U-I o U^{\text {Focaler }} \\ L_{\text {Focaler-CIoU }}=L_{C I o U}+I o U-I o U^{\text {Focaler }} \\ L_{\text {Focaler-EIoU }}=L_{E I o U}+I o U-I o U^{\text {Focaler }} \\ L_{\text {Focaler-SIoU }}=L_{S I o U}+I o U-I o U^{\text {Focaler }} \end{array} LFocaler-GIoU =LGIoU+IoUIoUFocaler LFocaler-DIoU =LDIoU+IoUIoUFocaler LFocaler-CIoU =LCIoU+IoUIoUFocaler LFocaler-EIoU =LEIoU+IoUIoUFocaler LFocaler-SIoU =LSIoU+IoUIoUFocaler 

IV. 实验
A. YOLO v8 在PASCAL VOC上的实验

PASCAL VOC数据集是目标检测领域最受欢迎的数据集之一,本文使用VOC2007和VOC2012的训练和验证集作为训练集,包括16551张图像,并将VOC2007的测试集作为测试集,包含4952张图像。在本实验中,我们选择最先进的一阶检测器YOLOv8s和YOLOv7-tiny在VOC数据集上进行比较实验,选择SIoU作为实验的比较方法。实验结果如表I所示:
在这里插入图片描述

B. YOLOv5在AI-TOD上的实验

AI-TOD是一个遥感图像数据集,与一般数据集不同的是,它包含大量的小目标,目标的平均大小只有12.8像素。在本实验中,选择YOLOv5s作为检测器,比较方法为SIoU。实验结果如表II所示:
TABLE II: The performance of SIoU and Focaler-SIoU on Yolov5.

V. 结论

本文分析了难易样本分布对目标检测的影响。当难样本占据主导时,需要重点关注难样本以提高检测性能;当简单样本占比相对较大时,情况相反。接着,我们提出了Focaler-IoU方法,通过线性区间映射重构原始IoU损失,实现了关注难易样本的目标。最后,对比实验证明,所提方法能有效提升检测性能。

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

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

相关文章

Kotlin基础——高阶函数和内联函数

高阶函数 高阶函数以另一个函数作为参数或者返回值&#xff0c;其可用Lambda或函数引用表示 函数类型 下面将Lambda存储在sum变量中&#xff0c;其是函数类型 val sum { x: Int, y: Int -> x y }完整的函数类型为(para1,prar2…) -> returnValue val a: Int 0 va…

【MBtiles数据索引和服务发布】GeoServer改造Springboot番外系列二

xyz地图服务访问示例&#xff1a;http://192.168.1.240:8081/gmserver/raster/xyz/firstWP:Imagery-raster/{z}/{x}/{y}.jpg 访问示例如下&#xff1a; mbtiles目录结构 根据z&#xff0c;x&#xff0c;y获取对应mbtiles文件路径的工具方法 说明&#xff1a;重点是使用getMb…

堆宝塔

L2-1 堆宝塔 分数 25 作者 陈越 单位 浙江大学 堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小&#xff0c;按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。聪明…

第六讲_JavaScript原型

JavaScript原型 1. 原型的概念2. 原型继承2.1 原型链 3. class类的原型对象 1. 原型的概念 原型是 JavaScript 对象相互继承特性的机制。 每个函数都有一个 prototype 属性&#xff0c;这个属性指向一个对象&#xff0c;这个对象称为原型对象。每个对象都有一个 [[Prototype]…

在线mockjson

在线mockjson体验地址 在调一个问题的时候&#xff0c;但是问题的数据可能并不能随着想到的场景就变化&#xff0c;譬如说又个数组长度的情况&#xff0c;可能默认的情况下是返回4个元素&#xff0c;但是想要返回为空的时候&#xff0c;如果联系服务给改一下&#xff0c;那么流…

Pyecharts炫酷热力图:参数详解与实战大揭秘

Pyecharts绘制多种炫酷热力图参数说明代码实战 引言 热力图在数据可视化中是一种强大的工具&#xff0c;可以直观地展示数据的分布情况和变化趋势。Pyecharts是一个基于Echarts的Python可视化库&#xff0c;提供了丰富的图表类型&#xff0c;包括热力图。在本文中&#xff0c…

防御保护---防火墙的NAT-easyip

文章目录 目录 文章目录 点击此处查看NAT技术详解 一.NAT分类 二.防火墙配置 一对多NAT配置 多对多NAT配置 练习 点击此处查看NAT技术详解 一.NAT分类 源IP-NAT(源IP与公网之间转换)&#xff1a;静态NAT&#xff0c;动态NAT&#xff0c;NAPT&#xff1b;使内网能够访问公网目…

Linux网络编程——网络初识

文章目录 1. 网络协议初识1.1 为什么要有网络协议1.2 协议分层 2. OSI七层模型3. TCP/IP五层&#xff08;或四层&#xff09;模型4. 网络传输基本流程5. 以太网通信 1. 网络协议初识 1.1 为什么要有网络协议 早期计算机是独立的&#xff0c;如果要进行数据交互&#xff0c;就…

安装好IntelliJ IDEA点击无反应,如何解决配置文件不一致导致的启动问题

在我们的开发生涯中&#xff0c;遇到IDE工具出现问题是在所难免的。最令人头疼的莫过于&#xff0c;你的IDEA(IntelliJ IDEA)无法启动&#xff0c;而且没有任何错误提示。这篇文章将详细讲解如何解决IntelliJ IDEA 2023.3.3版本启动失败的问题&#xff0c;这个问题可能也适用于…

【已解决】Centos安装不了podman问题(依赖无法安装)

今天安装podman一直安装不了&#xff0c;原因是containernetworking-plugins-1.1.1-1.el7.2.9.x86_64.rpm这个包因为网站的原因下载不了&#xff0c;不管是开启代理还是使用镜像源&#xff0c;都无法解决 最终是手动下载本地后上传至服务器解决&#xff0c;故把文件分享出来避…

【Web前端实操18】粘性定位——即固定顶层内容,可以继续滚动,但是顶层内容固定,不随着一起滚动

粘性定位 1、了解 可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。粘性定位是指网页或移动应用程序中的一种特性,即当用户滚动页面时,某个元素能够保持在屏幕上特定位置不动,直到用户滚动到达一定位置或进行特定操作。这个特性可…

【C++】C++入门—— 引用

引用 1 前情提要2 概念剖析3 引用特性4 常引用5 使用场景5.1做参数5.2 做返回值 6 传值 传引用的效率比较7 引用与指针的差异Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见 1 前情提要 在C语言中&#xff0c;我们往往会遇见复杂的指针&#xff08;如…

tcpdump在手机上的使用

首先手机得root才可以&#xff0c;主要分析手机与手机的通信协议 我使用的是一加9pro&#xff0c; root方法参考一加全能盒子、一加全能工具箱官方网站——大侠阿木 (daxiaamu.com)https://optool.daxiaamu.com/index.php tcpdump&#xff0c;要安装在/data/local/tmp下要arm6…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理&#xff0c;为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意&#xff1a;其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件&#xff0c;引入axios&#xff0c;并…

矩阵键盘的使用

在定义局部变量时&#xff0c;一定要给该变量赋初值。在这个程序中&#xff0c;给按键按下的返回值变量 KeyNum 赋值为 20 。 矩阵键盘线行扫描法的学习链接&#xff1a;https://www.bilibili.com/video/BV1dv411z7Gd/?spm_id_from333.999.0.0&vd_sourceb91967c499b23106…

推荐系统|概要_基本概念

文章目录 基本概念曝光点击相关指标点击率点赞率/收藏率/转发率阅读完成率总结北极星指标 实验流程 基本概念 曝光 笔记出现在首页&#xff0c;叫作曝光。 点击 用户从笔记表面进入到相关笔记的详情页&#xff0c;叫作一次点击。 除此之外&#xff0c;用户的喜爱&#xff0c…

Mybatis-Plus扩展

7 MybatisX插件[扩展] 7.1 MybatisX插件介绍 MybatisX 是一款基于 IDEA 的快速开发插件&#xff0c;为效率而生。 安装方法&#xff1a;打开 IDEA&#xff0c;进入 File -> Settings -> Plugins -> Browse Repositories&#xff0c;输入 mybatisx 搜索并安装。 功…

基于Springboot的视频网站系统的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的视频网站系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

Java入门高频考查基础知识8(腾讯18问1.5万字参考答案)

刷题专栏&#xff1a;http://t.csdnimg.cn/gvB6r Java 是一种广泛使用的面向对象编程语言&#xff0c;在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性&#xff0c;适用于多种应用场景&#xff0c;包括企业应用、移动应用、嵌入式系统等。 以下是几个面试技巧&…

Prometheus的pod部署

创建命名空间和账户以及集群账户 kubectl create ns monitor-sa kubectl create serviceaccount monitor -n monitor-sa kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrolecluster-admin --serviceaccountmonitor-sa:monitor 创建…