MPDIoU: A Loss for Efficient and Accurate Bounding BoxRegression--论文学习笔记
超越GIoU/DIoU/CIoU/EIoU MPDIoU让YOLOv7和YOLACT双双涨点
目标检测上的指标对比:

论文地址: [2307.07662] MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (arxiv.org)
摘要
边界框回归(Bounding Box Regression,BBR)在目标检测和实例分割中被广泛应用,是定位目标的重要步骤。然而,大多数现有的边界框回归损失函数在预测框与实际标注框具有相同的宽高比但宽度和高度值完全不同的情况下无法进行优化。为了解决上述问题,作者充分探索了水平矩形的几何特征,提出了一种基于最小点距离的边界框相似度比较度量——MPDIoU,其中包含了现有损失函数中考虑的所有相关因素,例如重叠或非重叠面积、中心点距离以及宽度和高度的偏差,同时简化了计算过程。在此基础上,作者提出了一种基于MPDIoU的边界框回归损失函数,称为。实验结果表明,将MPDIoU损失函数应用于最先进的实例分割(如YOLACT)和目标检测(如YOLOv7)模型,在PASCAL VOC、MS COCO和IIIT5k数据集上优于现有的损失函数。
Introduction
目标检测和实例分割是计算机视觉中两个重要的问题,在过去几年中吸引了大量研究人员的兴趣。大多数最先进的目标检测器(例如YOLO系列,Mask R-CNN,Dynamic R-CNN和DETR)依赖于边界框回归(BBR)模块来确定目标的位置。基于这种模式,设计良好的损失函数对于BBR的成功非常重要。到目前为止,大多数现有的BBR损失函数可分为两类:1、基于数的损失函数;2、基于交并比(IoU)的损失函数。
然而,现有的大多数BBR损失函数在不同预测结果下具有相同的值,这降低了边界框回归的收敛速度和准确性。因此,考虑到现有BBR损失函数的优缺点,并受到水平矩形的几何特征启发,作者尝试设计一种基于最小点距离的新型损失函数,用MPDIoU作为新的度量标准,比较边界框回归过程中预测边界框与实际标注边界框之间的相似性。作者还提供了一个简单易实现的解决方案,用于计算两个轴对齐矩形之间的MPDIoU,使其可以作为评估指标纳入最先进的目标检测和实例分割算法中,并在一些主流的目标检测、场景文本识别和实例分割数据集(如PASCAL VOC,MS COCO,IIIT5k和MTHv2)上进行测试,以验证作者提出的MPDIoU的性能。
本文的贡献总结如下:
-
作者考虑了现有IoU-based损失和
-norm损失的优缺点,并提出了一种基于最小点距离的IoU损失,即
,来解决现有损失函数的问题,并获得更快的收敛速度和更准确的回归结果。
-
作者在目标检测、字符级场景文本识别和实例分割任务上进行了广泛的实验。出色的实验结果验证了提出的MPDIoU损失的优越性。详细的消融研究展示了不同损失函数和参数值设置的效果。
相关工作就是介绍了之前的几种IoU(GIoU/DIoU/CIoU/EIoU),这里就跳过了,感兴趣的话可以看这里:IoU Loss综述,对几种IoU做了总结
Intersection over Union with Minimum Points Distance
在分析了IoU系列损失函数的优势和劣势之后,开始思考如何提高边界框回归的准确性和效率。通常情况下,使用左上角和右下角点的坐标来定义一个唯一的矩形。受到边界框几何特性的启发,作者设计了一种新颖的基于交并比的度量标准,名为MPDIoU,直接最小化预测边界框与实际标注边界框之间的左上角和右下角点距离。

MPDIoU的计算过程总结在算法1中:

通过使用MPDIoU作为新的损失度量,作者期望能够改善边界框回归的训练效果,提高收敛速度和回归精度。
总结一下,提出的MPDIoU简化了两个边界框之间的相似性比较,适用于重叠或非重叠的边界框回归。因此,在2D/3D计算机视觉任务中,MPDIoU可以很好地替代交并比作为所有性能指标的度量。在本文中,作者仅关注2D目标检测和实例分割,可以将MPDIoU轻松应用为度量和损失函数。
MPDIoU as Loss for Bounding Box Regression
在训练阶段,通过最小化以下损失函数,使得模型预测的每个边界框Bprd = [xprd, yprd, wprd, hprd]T趋近于其对应的真实标注边界框Bgt = [xgt, ygt, wgt, hgt]T:

其中Bgt表示真实标注边界框的集合,表示用于回归的深度模型的参数。典型的损失函数L采用
范数,例如均方误差(MSE)损失和
损失,这些损失函数在目标检测、行人检测、场景文本识别、3D目标检测、姿态估计和实例分割等任务中得到广泛应用。然而,最近的研究表明,基于
范数的损失函数与评估指标——交并比(IoU)并不一致,因此提出了基于IoU的损失函数。基于前面一节中MPDIoU的定义,作者定义基于MPDIoU的损失函数如下:

因此,现有边界框回归损失函数的所有因素都可以通过4个点的坐标来确定。转换公式如下所示:

在上述公式中,表示覆盖Bgt和Bprd的最小外接矩形的面积,
和
分别表示真实标注边界框和预测边界框的中心点坐标。
和
表示真实标注边界框的宽度和高度,
和
表示预测边界框的宽度和高度。
从公式(10)-(12)中可以发现所有现有损失函数中考虑的因素都可以通过左上角点和右下角点的坐标来确定,例如非重叠面积、中心点距离、宽度和高度的偏差,这意味着作者提出的不仅考虑全面,还简化了计算过程。
根据定理3.1,如果预测边界框和真实标注边界框具有相同的宽高比,那么预测边界框位于真实标注边界框内的值低于预测边界框位于真实标注边界框外的情况。这一特性保证了边界框回归的准确性,倾向于提供具有较少冗余的预测边界框。

考虑到真实标注边界框Bgt是一个面积大于零的矩形,即Agt > 0。算法2中的条件(1)和算法2中的条件(6)确保了预测面积Aprd和交集面积I为非负值,即Aprd ≥ 0 和 I ≥ 0,对于∀Bprd ∈ R4。

因此,对于任何预测边界框Bprd = (x1prd, y1prd, x2prd, y2prd) ∈ R4,其并集面积U > 0。这确保了交并比的分母在任何预测输出值下都不会为零。此外,对于任何Bprd = (x1prd, y1prd, x2prd, y2prd) ∈ R4的值,其并集面积总是大于等于交集面积,即U ≥ I。因此,始终有界,即0 ≤
< 3,对于∀Bprd ∈ R4。
当IoU = 0时:对于MPDIoU损失,作者有。在Bgt和Bprd不重叠的情况下,即IoU=0,MPDIoU损失可以简化为
。在这种情况下,通过最小化
,作者实际上是在最小化
。这一项是一个介于0和1之间的归一化度量,即
。
实验
作者在各种数据集上进行了实验,在VOC 的测试集上的指标如最上的图,比其他的几个IoU都有提升,以及在COCO上的对比实例:

后面还对比了实例分割和OCR场景文本定位的实验结果,的结果都有提升
ocr:
实例分割:

相关文章:
MPDIoU: A Loss for Efficient and Accurate Bounding BoxRegression--论文学习笔记
超越GIoU/DIoU/CIoU/EIoU MPDIoU让YOLOv7和YOLACT双双涨点 目标检测上的指标对比: 论文地址: [2307.07662] MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (arxiv.org) 摘要 边界框回归(Bounding Box Regression&am…...
【Uniapp 的APP热更新】
Uniapp 的APP热更新功能依赖于其打包工具 HBuilder,具体步骤如下: 1. 在 HBuilder 中构建并打包出应用程序 具体步骤: 1.点击发行,点击制作wgt包 2.根据需求修改文件储存路径和其他配置,点击确定 3.等待打包完成&a…...
MySQL主从复制配置
Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。 (1)首先确保主从服务器上的Mysql版本相同 (2)在主服务器上,创建一个充许从数据库来访问的用户slave,密码为:123456 ,然后使用REPLICATION SLAV…...
Linux - 添加普通用户为信任用户
1.添加用户 在Linux系统中,可以使用以下步骤添加用户: 打开终端并以root用户身份登录 输入以下命令以创建新用户(请将username替换为您想要创建的用户名): adduser username 设置该用户的密码,使用以下命…...
flask----路由系统
# 1 flask路由系统是基于装饰器的:参数如下 # 2 转换器: # 3 路由系统本质 # 4 endpoint 不传会怎么样,不传会以视图函数的名字作为值,但是如果加了装饰器,所有视图函数名字都是inner,就会出错,使用wrapp…...
驶向专业:嵌入式开发在自动驾驶中的学习之道
导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分,嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…...
Go语言入门:从零开始的快速指南(一)
文章目录 引言Go语言的诞生背景Go 语言的特性安装Go语言环境集成开发环境安装第一个Go程序Go 源代码的特征解读 引言 Go语言(也称为Golang)是一种开源的、静态类型的编程语言,由Google开发。它的设计目标是简单、高效、安全、并且易于学习和…...
Windows7+内网, 安装高版本nodejs,使用vite+vue3+typescript开发项目
前言:vite只支持高版本的nodejs,而高版本的nodejs只支持windows8及以上,且vite还对浏览器版本有兼容问题。以下均为vite官网截图 1、安装好低版本的nodejs win7系统建议安装13.及以下,我的是12.12.0这个版本。nodejs低版本官网下载…...
【C语言day14】
#include<stdio.h>int fun(char* s) {char* t s;while (*t);return(t - s); }int main() {char s[] "abc";int n fun(s);printf("%d\n", n);//4return 0; }循环在*t为0时停止,同时t,t最后会停在字符串结束的’\0’之后的一…...
暑假刷题第19天--8/1
170. 加成序列 - AcWing题库(dfs迭代加深--重点理解) #include<iostream> using namespace std; int n; int a[11]; int dfs(int x,int h){if(x>h1)return 0;if(a[x-1]n)return 1;bool st[130]{};for(int i1;i<x-1;i){for(int j1;j<i;j)…...
Java开发中的------修改密码+忘记密码
目录 1.修改密码 客户端响应 前端vue 后端 controller层 ServiceImpl实现层 2.忘记密码 客户端响应 后端 controller层 serviceImpl实现层 本章需要准备:springcloud项目,依赖,数据库.... 数据库SQL SET FOREIGN_KEY_CHECKS0;-- -…...
ffmpeg安装
简介 FFmpeg是一个开源的音视频处理库,它提供了一系列的工具和API,可以用于处理音视频文件。你可以使用FFmpeg的命令行工具来执行各种音视频处理操作,比如转码、剪辑、合并等。FFmpeg的命令格式通常是:ffmpeg [全局选项] {[输入文…...
Mac电脑目录
System(系统)Applications(应用程序)应用程序目录,默认所有的GUI应用程序都安装在这里User(用户)存放用户的个人资料和配置。每个用户有自己的单独目录Library(资料库)系…...
一起学算法(栈篇)
1.栈的概念 1.栈的定义 栈是仅限在表尾进行插入和删除的线性表,栈又被称为先进后出的线性表,简称“LIFO” 我们这次用数组作为我们栈的底层数据结构,代码会放到结尾供大家参考使用 2.栈顶的定义 栈是一个线性表,我们允许插入…...
Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart
文章目录 为什么要将程序配置成服务?1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本:使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本:默认使用systemd作…...
大数据课程E4——Flume的Channel
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Channel的作用和配置; ⚪ 掌握Channel的使用方法; ⚪ 掌握Channel的File Channel; ⚪ 掌握Channel的JDBC Channel; ⚪ 掌握Channel的Spillable Memory Channel; 一、Memory Ch…...
es6中的Map和Set数据结构
Map Map对象可以用于保存键值对 1.创建 一个Map对象 const map new Map() 2.Map的一些方法 set(key,value):通过键值对向Map对象中添加元素get(key):通过建拿到对应的值size:返回Map对象中所包含的键值对的个数has(key):判断Map对象中是否有对应的key,返回一个…...
MyBatis 框架基本的增删改查
提示:写代码要严谨 文章目录 前言前期准备MyBatis CRUD操作流程增加功能删除功能修改功能查询功能#{} 占位符${} 占位符两种占位符的区别❗ 映射文件总结❗ mapper 代理方式实现CRUDmapper代理开发规范增加功能删除功能修改功能查询功能 前言 提示:myba…...
Javascript--JSON
什么是 JSON? JavaScript中的JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于存储和表示结构化的数据。JSON使用键值对的方式组织数据,并支持基本数据类型(字符串、数字、布尔值、数组和对象&…...
Rust: error: failed to run custom build command for `openssl-sys v0.9.71`
error: failed to run custom build command for openssl-sys v0.9.71 解决 windows : openssl 不要选Light版 设置环境变量 cmd: set OPENSSL_DIR“C:\Program Files\OpenSSL-Win64” OPENSSL_DIR:C:\Program Files\OpenSSL-Win64 linux:…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
