YOLOv9改进策略:IoU优化 | Powerful-IoU更好、更快的收敛IoU,效果秒杀CIoU、GIoU等 | 2024年最新IoU

news2024/11/22 14:40:37

 💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数

💡💡💡MS COCO和PASCAL VOC数据集实现涨点



YOLOv9魔术师专栏

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

✨✨✨ 新开专栏暂定免费限时开放,后续每月调价一次✨✨✨

🚀🚀🚀 本项目持续更新 | 更新完结保底≥80+ ,冲刺100+ 🚀🚀🚀

🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉

⭐⭐⭐现更新的所有改进点抢先使用私信我,目前售价68,改进点20+个⭐⭐⭐

⭐⭐⭐专栏涨价趋势 99 ->199->259->299,越早订阅越划算⭐⭐⭐

YOLOv9魔改:注意力机制、检测头、blcok魔改、自研原创等

 YOLOv9魔术师

💡💡💡全网独家首发创新(原创),适合paper !!!

💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!

💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!

 1.YOLOv9原理介绍

论文: 2402.13616.pdf (arxiv.org)

代码:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information摘要: 如今的深度学习方法重点关注如何设计最合适的目标函数,从而使得模型的预测结果能够最接近真实情况。同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。然而,现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。因此,YOLOv9 深入研究了数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。作者提出了可编程梯度信息(programmable gradient information,PGI)的概念,来应对深度网络实现多个目标所需要的各种变化。PGI 可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,研究者基于梯度路径规划设计了一种新的轻量级网络架构,即通用高效层聚合网络(Generalized Efficient Layer Aggregation Network,GELAN)。该架构证实了 PGI 可以在轻量级模型上取得优异的结果。研究者在基于 MS COCO 数据集的目标检测任务上验证所提出的 GELAN 和 PGI。结果表明,与其他 SOTA 方法相比,GELAN 仅使用传统卷积算子即可实现更好的参数利用率。对于 PGI 而言,它的适用性很强,可用于从轻型到大型的各种模型。我们可以用它来获取完整的信息,从而使从头开始训练的模型能够比使用大型数据集预训练的 SOTA 模型获得更好的结果。对比结果如图1所示。

 YOLOv9框架图

1.1 YOLOv9框架介绍

YOLOv9各个模型介绍

2.Powerful-IoU介绍

链接:https://www.sciencedirect.com/science/article/abs/pii/S0893608023006640 

摘要:边界框回归(Bounding box regression, BBR)是目标检测中的核心任务之一,而BBR的损失函数对其性能影响很大。然而,我们观察到现有的基于iou的损失函数受到不合理的惩罚因素的影响,导致锚框在回归过程中膨胀,显著减缓了收敛速度。为了解决这个问题,我们深入分析了锚框增大的原因。为此,我们提出了一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的强效iou (PIoU)损失函数。PIoU损耗引导锚框沿着有效路径回归,从而比现有的基于iou的损耗更快地收敛。此外,我们还研究了聚焦机制,并引入了一个非单调注意层,将其与PIoU结合,得到了一个新的损失函数PIoU v2。PIoU v2损耗增强了对中等质量锚框的聚焦能力。通过将PIoU v2整合到流行的目标检测器(如YOLOv8和DINO)中,我们在MS COCO和PASCAL VOC数据集上实现了平均精度(AP)的提高和性能的改进,从而验证了我们提出的改进策略的有效性。

图1所示。基于不同iou的损失函数指导下的锚框回归过程。彩色框是在回归过程中由不同损失函数引导的锚框。很明显,以PIoU损失为导向的锚盒是最快回归到接近目标盒的。此外,除PIoU损失外,所有损失函数引导的锚盒都存在面积扩大问题,而PIoU损失引导的锚盒则不存在面积扩大问题。

图2所示。基于IoU的损失。(a)和(b)中的损失函数都使用诸如锚框和目标框的最小外部边界框(灰色虚线框)的对角线长度或面积等维度信息作为损失因子的分母。相反,(c)中的PIoU损耗仅使用目标盒的边缘长度作为损耗因子的分母。

图3所示。一个扩展锚框的例子。在左图中,锚框的中心位置为(4,4),宽度为4,高度为2。在右图中,锚框的中心位置也是(4,4),但宽度为6,高度为3。可以观察到,尽管锚盒尺寸增大,但𝑅𝐺𝐼𝑜𝑈、𝑅𝐷和𝛥减小。然而,𝑅P𝐼𝑜𝑈并没有表现出这样的行为。 

2.1 PIoU v2损失

在本节中,我们将探讨聚焦机制在我们提出的损失函数中的应用。为了解决第2.2节中提到的Focal EIoU (Zhang, Ren et al., 2022)和WIoU (Tong et al., 2023)的局限性,我们设计了一个由单个超参数控制的非单调注意函数与PIoU相结合。PIoU v2损耗在PIoU损耗上增加注意层后得到,增强了对中高质量锚盒的聚焦能力,提升了目标检测器的性能。注意函数和PIoU v2损失定义为: 

2.2 实验结果

2.Powerful-IoU加入到YOLOv9

2.1Powerful-IoU实现路径为utils/metrics.py

本部分后续开源

2.2 utils/loss_tal_dual.py

训练方法为 train_dual,因此本博客以此展开

1)首先进行注册

from utils.metrics import piou

1)修改class BboxLoss(nn.Module):


iou = bbox_iou(pred_bboxes_pos, target_bboxes_pos, xywh=False, CIoU=True)

修改为

iou = piou(pred_bboxes_pos, target_bboxes_pos, xywh=False, PIoU2=True)

⭐⭐⭐现更新的所有改进点抢先使用私信我,目前售价68,改进点20+个⭐⭐⭐

⭐⭐⭐专栏涨价趋势 99 ->199->259->299,越早订阅越划算⭐⭐⭐

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

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

相关文章

R语言基础入门

1.保存或加载工作空间 改变工作目录——进行文件读写,默认去指定文件进行操作。(使用R时,最好先设定工作目录(setwd(),getwd())) setwd(“工作文件路径”):建立工作目录 getwd(&…

【Mysql数据库基础07】DDL 数据定义语言

Data Definition Language 1 库的操作1.1 create 创建1.2 alter 修改1.3 drop 删除 2 表的操作2.1 表的创建2.2 表的修改2.2.1 修改表名2.2.2 修改列名2.2.3 修改列的类型和约束2.2.4 添加列2.2.5 删除列 2.3 表的删除2.4 表的复制 3 练习 1 库的操作 1.1 create 创建 create…

jvm(虚拟机)运行时数据区域介绍

Java虚拟机(JVM)运行时数据区域是Java程序在运行过程中使用的内存区域,它主要包括以下几个部分: 程序计数器(Program Counter Register): 程序计数器是一块较小的内存区域,是线程私有…

法律合规| AI产品法律风险应对措施全解析

在此前推文中我们全面分析了生成式人工智能算法模型可能遇到的法律风险,那么这些风险应该如何应对呢? 1、隐私泄漏风险:企业需要遵守数据安全法和个人信息保护法的规定,确保数据来源合法,使用时获得用户授权&…

citus的快速开始

准备 dockercitus最新版本(docker pull citusdata/citus) docker网络 docker network create --subnet172.72.9.0/24 citus-test docker network ls启动citus服务 启动协调节点 docker run -dit --name citus-cod -p 5433:5432 -e POSTGRES_PASSWOR…

【vue3学习之路(一)】

文章目录 前言一、vue3项目创建1.1环境准备1.1.1 基于 vue-cli 创建(脚手架创建)1.1.2 基于 vite 创建(推荐) 二、熟悉流程总结 前言 参考视频:https://www.bilibili.com/video/BV1Za4y1r7KE?p10&spm_id_frompag…

使用uniapp 的 plus.sqlite 操作本地数据库报错:::table xxx has no column named xxxx

背景: 1、使用uniapp 的 plus.sqlite 进行APP本地数据库操作 2、SQLite 模块用于操作本地数据库文件,可实现数据库文件的创建,执行SQL语句等功能。 遇到:在之前创建的表上进行新增字段的操作时候,出现问题&#xff1a…

MyEclipse打开文件跳转到notepad打开问题

问题描述 windows系统打开README.md文件,每次都需要右键选择notepad打开,感觉很麻烦,然后就把README.md文件打开方式默认选择了notepad,这样每次双击就能打开,感觉很方便。 然后某天使用MyEclipse时,双击RE…

java第一次作业(二)

先写思路,再写代码,思路清晰,才能写对代码 7-6 求12...n的和 思路: 运用expression的字符串输出 重点: expression输出 代码: import java.util.Scanner; public class Main {public static void main…

数据运营常用的8大模型

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

为什么静态成员函数不能是虚函数

在面向对象编程中,静态成员函数和虚函数都是常见的概念,但它们之间存在着本质上的差异。由于其特性上的差异,静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。 我在网上查到最多的说法是静态函数没有this指…

数字化转型能给企业创造哪些价值?

企业数字化转型能创造哪些价值? 深耕TOB行业 9 年,下面来分享下自己的一些经验和看法。 (看完要是觉得有用,记得点个赞哈~) 1、从宏观上理解,我们可以分成4个大的方面: (1&#x…

PTA L2-031 深入虎穴 dfs与bfs版

著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路…

机器学习-05-回归算法

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中回归算法,包括线性回归,岭回归,逻辑回归等部分。 参考 fit_transform,fit,transform区别和作用详解!!!!!&am…

结构体讲解

目录 一.结构体类型的声明 (1)结构体的声明 (2)结构体的创建和初始化 (3)匿名结构体 (4)结构体的自引用 二.结构体内存对齐 (1)对齐规则 (2)为什么存在内存对齐? (3)结构体传参 三.结构体实现位段 (1)什么是位段 (2)位段的内存分配 (3)位段的跨平…

GDAL中的地理坐标系、投影坐标系及其相互转换

目录 地理坐标系 国内常用地理坐标系 投影坐标系 国内常用投影坐标系(不推荐使用) 坐标转换 地理坐标转为投影坐标 投影坐标转为地理坐标 地理坐标系 原理参考这篇文章:地理坐标系与投影坐标系区别与联系 https://yunxingluoyun.blog.…

极智项目 | 基于YOLOv5+DeepSort实现的车流量统计算法

欢迎关注我的公众号「极智视界」,获取我的更多技术分享 大家好,我是极智视界,本文分享一下 基于YOLOv5DeepSort实现的车流量统计算法。 车流量统计的实现一般原理是跟踪画面上检测出来的车辆,并给每个框标上了序号,当…

轨迹预测后处理之非极大值抑制(NMS)

非极大值抑制是图像处理里面的一种算法(比如边缘检测会使用到) 轨迹预测这里借鉴了其思想,比如说对于某个场景中的某辆车,我们使用模型预测 64 条轨迹或者更多,以很好地捕获多模态性,同时每条轨迹对应一个…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难,反复练习加上自己的思考、总结,会形成肌肉记忆。整理一下,初学者每天30遍。 1、JavaScript 基础语法 break:中断循环或 switch 语句的执行。…

蔚来JAVA面试(收集)

先叠加,这个是自己找的答案不一定对,只是给我参考看看而已。 一、项目 这个没有,根据实际项目情况来。蔚来比较喜欢拷打项目,所以要对项目非常熟悉(慌) 二、JAVA基础 2.1 Java中的IO模型有用到过吗&#…