对象检测边界框损失 – 从IOU到ProbIOU

1.概述

        目标检测损失函数的选择在目标检测问题建模中至关重要。通常,目标检测需要两个损失函数,一个用于对象分类,另一个用于边界框回归(BBR)。本文将重点介绍 IoU 损失函数(GIoU 损失、DIoU 损失和 CIoU 损失、ProbIoU)。首先来了解一下什么是最原始的IoU定义

2.什么是IOU(并交比)

        对象检测中的 mAP(平均精度)指标是根据 IoU(交集超过并集)进行评估的。因此,BBR使用基于 IoU 的损失函数来实现计算mAP,mAP的典型计算公式与表示如下:

        但是这种最原始的IoU并交比的损失计算方式是有缺陷的,如当预测框与真实框没有相交的时候,IoU损失就是0,这样就导致了没有梯度,导致训练的效果就会打折许多。

3.改进之GIoU

        于是有个聪明的人发现,这样可以稍微避免这种问题的发生,就是把预测框与真实框(A与B)合起来求最小的外接矩形,就变成了如下:

 

对应的GIoU的计算公式就改成了:

下图是分别基于L2与L1损失相同的情况下,IoU跟GIoU有明显的差异比较。

         加入惩罚项因子以后,对于没有重叠的预测也可以实现边界框回归了,从而改善了IoU的缺陷。论文给出的实验结果如下:

4.改进之DIoU与CIoU

作者把IoU损失看成是一个通用的公式如下:

        其中R是惩罚性因子,这样R=0的时候就是普通的IoU损失,从而把IoU损失改进看成是寻找好的惩罚性因子,然后作者通过一通神的思考以后给出了下面的惩罚性因子公式: 

这样 DIoU就出来

 

        这样是不是梯度会大一些,回归起来会更猛一点,效果会更好点。但是作者说好的BBR应该考虑三个指标分别是重叠、中心位置距离、横纵比,DIoU只考虑前面两个,还有最后一个还没有考虑到,所以还可以改进,改进之后才是完整的IoU损失(CIoU),然后就得到了另外一个惩罚性因子公式跟对应的CIoU损失: 

然后作者给出了实验结果:

说明CIoU开挂了,所以YOLOv8默认就是CIoU。

5.ProbIoU

        ProbIoU可以实现OBB旋转对象映射到GBB、然后实现预测框与真实框的回归IoU损失功能,然后基于协方差矩阵,计算巴氏距离以后,再基于BD实现损失计算

跟原始的IoU比较,有明显的改善: 

然后它自己说靠谱,所以YOLOv8的旋转对象检测就采用了ProbIoU来做BBR。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、Numpy使用

1、numpy的简单使用 import numpy as np #利用as给numpy起一个别名np# 使用array来承接这个数组 array np.array([[1,2,3],[2,3,4]])print(array) print("number of dim:", array.ndim) # ndim 数组维度 print("shape:", array.shape) # 数组的形…

Spring Boot从0到1 -day02

目录 学习目标Spring Boot 的基本配置启动类与核心注解SpringBootApplicationSpring Boot 的全局配置文件1. application.properties2. application.ymlSpring 中Spring Boot Application注解的作用 自动配置原理1. 自动配置类2. 自动配置的发现示例3. 自定义自动配置 条件注解…

Prompt最佳实践|指定输出的长度

在OpenAI的官方文档中已经提供了[Prompt Enginerring]的最佳实践,目的就是帮助用户更好的使用ChatGPT 编写优秀的提示词我一共总结了9个分类,本文讲解第6个分类:指定输出长度 提供更多的细节要求模型扮演角色使用分隔符指定任务步骤提供样例…

Swagger 概念和使用以及遇到的问题

前言 接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变 成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经常出现无法及时更新, 导致前端人员抱怨接口文档和实际情况不一致。 很多人员会抱怨别人写的接口文档不…

从黎巴嫩电子通信设备爆炸看如何防范网络电子袭击

引言: 在当今数字化时代,电子通信设备已成为我们日常生活中不可或缺的一部分。然而,近期黎巴嫩发生的电子设备爆炸事件提醒我们,这些设备也可能成为危险的武器。本文将深入探讨电子袭击的原理、防范措施,以及网络智能…

【论文阅读】Face2Diffusion for Fast and Editable Face Personalization

code:mapooon/Face2Diffusion: [CVPR 2024] Face2Diffusion for Fast and Editable Face Personalization https://arxiv.org/abs/2403.05094 (github.com) 论文 介绍 目标:向 T2I 模型不知道的图像中插入特定概念(例如某人的脸&#xff…

极狐GitLab 重要安全版本:17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

通过logstash同步elasticsearch数据

1 概述 logstash是一个对数据进行抽取、转换、输出的工具,能对接多种数据源和目标数据。本文介绍通过它来同步elasticsearch的数据。 2 环境 实验仅仅需要一台logstash机器和两台elasticsearch机器(elasticsearch v7.1.0)。本文用docker来模…

css 样式简单学习(一)

目录 1. css 介绍 1.1 css 样式 1.2 css代码风格 1.2.1 书写格式 1.2.2 样式大小写​编辑 1.2.3 空格规范 2. 基础选择器 2.1 选择器的作用​编辑 2.2 选择器的分类 2.3 基础选择器 2.3.1 标签选择器​编辑 2.3.2 类选择器​编辑 2.3.3 类选择器-多类名​编辑 2.…

简单题88. 合并两个有序数组 (Python)20240920

问题描述: python: class Solution(object):def merge(self, nums1, m, nums2, n):""":type nums1: List[int]:type m: int:type nums2: List[int]:type n: int:rtype: None Do not return anything, modify nums1 in-place instead.&qu…

选址模型 | 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab) 问题建模:首先,需要将电动汽车充电站选址与定容问题进行数学建模,确定目标函数和约束…

React18入门教程

React介绍 React由Meta公司开发,是一个用于 构建Web和原生交互界面的库 React的优势 相较于传统基于DOM开发的优势 组件化的开发方式 不错的性能 相较于其它前端框架的优势 丰富的生态 跨平台支持 React的市场情况 全球最流行,大厂必备 开发环境…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a,编写一个程序检测a信号的上升沿给出指示信号rise,当a信号出现下降沿时给出指示信号down。 注:rise,down应为单脉冲信号,在相应边沿出现时的下一个时钟为高,之后恢复到0&#xff0…

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式,yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集,旨在解决行人密集场景下的检测挑…

关于实时数仓的几点技术分享

一、实时数仓建设背景 业务需求的变化:随着互联网和移动互联网的快速发展,企业的业务需求变得越来越复杂和多样化,对数据处理的速度和质量要求也越来越高。传统的T1数据处理模式已经无法满足企业的需求,实时数据处理成为了一种必…

什么是 IP 地址信誉?5 种改进方法

IP 地址声誉是营销中广泛使用的概念。它衡量 IP 地址的质量,这意味着您的电子邮件进入垃圾邮件或被完全阻止发送的可能性。 由于每个人都使用专用电子邮件提供商而不是直接通过 IP 地址进行通信,因此,这些服务可以跟踪和衡量发件人的行为质量…

表情包创作、取图小程序端(带流量主)

小程序永久免费,无任何广告,无任何违规功能! 小程序具备以下功能有: 支持创作者加入 支持在线制作表情包 使用说明 表情包必备工具,一款专属于你的制作表情包工具,斗图必备神器

Linux下进程通信与FIFO操作详解

Linux下进程通信与FIFO操作详解 一、命名管道(FIFO)概述1.1 命名管道的特点1.2 创建命名管道二、命名管道的操作2.1 打开命名管道2.2 读写命名管道2.3 关闭命名管道三、命名管道的使用实例3.1 命名管道的创建和通信过程3.1.1 发送方(writer)3.1.2 接收方(reader)3.2 运行…

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式,速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式,速度快很多。 option Options() o…

Qt/C++事件过滤器与控件响应重写的使用、场景的不同

在Qt/C中,事件过滤器和控件响应重写是两种用于捕获和处理鼠标、键盘等事件的机制,它们的用途和使用场景不同,各有优劣。下面详细介绍它们的区别、各自适用的场景、以及混合使用的场景和注意事项。 1. 事件过滤器(Event Filter&…