YOLOv9:一个关注信息丢失问题的目标检测

本文来自公众号“AI大道理”

当前的深度学习方法关注的是如何设计最合适的目标函数,使模型的预测结果最接近地面的真实情况。同时,必须设计一个适当的体系结构,以方便获取足够的预测信息。

现有方法忽略了一个事实,即输入数据在逐层进行特征提取和空间变换时,会丢失大量的信息。

YOLOv9给出了解决方案。

YOLOv9前身是YOLOv7,这是同一个团队。

1、YOLOv9的改进

在反向传播中深层特征层由于更加靠近标签,所以参数更容易更新,而浅层(离输入图片近的对方)由于山高皇帝远比较难以更新。

怎么办?YOLOv9左右开弓,建立辅助头。

右边是熟悉的类似yolov8一样的结构,是标准的neck+head结构。

左边则新建一个backbone,乱七八糟一堆neck,加上head作为辅助头。

有什么用?

backbone一般来说需要从右边的检测头经过neck再慢慢回传,现在YOLOv9有了左边的分支,左边的backbone离检测头要近很多,从这里回传又快损失又少。这个backbone和主路的backbone一模一样,共享参数。

当然这么做只是在训练的时候更好的训练,一旦到了推理和测试阶段,辅助头果断抛弃,只留下标准的右边的结构即可。

这个思想之前在检测头部分已经有了,只不过那时候是为了更好的训练检测头,现在是为了更好的训练浅层部分。

(这个思想怎么这么熟悉,和resnet有异曲同工之妙)

核心改进两点:

  • PGI(可编程梯度信息)

  • GLEAN(广义高效层聚合网络)

2、PGI(可编程梯度信息)

在深度网络的训练过程中,由于层与层之间的复杂映射,有用的信息可能会逐渐丢失,这会导致梯度信号变弱,最终影响网络的学习效率和预测准确性。

PGI是一种旨在解决深度网络中的信息瓶颈问题的策略,它可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。

YOLOv9的PGI技术包括辅助可逆分支和多级辅助信息,这些设计有助于在网络的深层中保留更多的信息,生成更可靠的梯度,从而在训练过程中确保了更准确的目标与输入之间的关联。

(可编程梯度信息的解释:一个高大上的名字,无非就是想说你可以随意回传到哪一层,你可以自己决定,即可编程,主要还是在于这个思想)

PAN (Path Aggregation Network): 这种结构通过聚合不同路径的信息来缓解信息瓶颈问题,但仍然存在信息丢失的问题。

RevCol (Reversible Columns): 这种结构旨在保持信息流的完整性,通过可逆列来避免信息的损失,但代价是计算成本较高。

深度监督 (Deep Supervision): 这个方法通过在网络的不同深度层添加预测头来实现辅助监督,这可以帮助网络学习到多层次的辅助信息,但可能导致信息损坏。

可编程梯度信息 (PGI): 这是论文提出的新方法,它通过辅助可逆分支产生可靠的梯度,以供主分支使用,从而控制主分支在多个语义层次上的学习,这有助于更好地保留语义信息并优化梯度流。

图中的蓝色块代表神经网络中的层,灰色块代表预测头或辅助分支,虚线框高亮了每种方法的关键特征。

3、GLEAN(广义高效层聚合网络)

广义高效层聚合网络(GELAN)是一种新颖的架构,它结合了 CSPNet 和 ELAN 原理来进行梯度路径规划。它优先考虑轻量级设计、快速推理和准确性。GELAN 通过允许任何计算块来扩展 ELAN 的层聚合,从而确保灵活性。

该架构旨在实现高效的特征聚合,同时在速度和准确性方面保持有竞争力的性能。GELAN的整体设计融合了CSPNet的跨级部分连接和ELAN的高效层聚合,以实现有效的梯度传播和特征聚合。

GELAN是将CSPNet和ELAN的特点结合在一起,并扩展以支持任何计算块的新型网络架构。

CSPNet: 这种架构包括一个分裂-合并的过程,它通过在网络的不同层之间分裂和合并特征来提高性能和效率。

ELAN: 这是一种更进一步的架构,它在CSPNet的基础上增加了多个卷积层(conv)的堆叠,每个卷积层都会进行特征转换,之后再进行合并。

GELAN: 提出的GELAN架构不仅模仿了CSPNet的分裂-合并机制,还扩展了ELAN的设计,使其可以使用任何类型的计算块,而不仅限于卷积层。

这种设计增加了网络的灵活性,使其能够根据不同的应用需求选择最合适的计算块。

4、其他

backbone:主要就是多了一条backhone,backbone中使用了RepNCSPELAN4 模块。

neck/head:主要是增加了辅助头。

loss function:loss为DFL Loss + CIoU Loss

正负样本匹配策略:为TaskAlign样本匹配

5、总结

YOLOv9结合了PGI(可编程梯度信息)和GELAN(广义高效层聚合网络)技术来克服信息瓶颈和深度监督在轻量级网络中的不适用性问题。

YOLOv9的PGI技术包括辅助可逆分支和多级辅助信息,这些设计有助于在网络的深层中保留更多的信息,生成更可靠的梯度,从而在训练过程中确保了更准确的目标与输入之间的关联。

(左边的辅助头可以千变万化,又是一个魔改的方向,目测要yolov1000000......)

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

  

—————————————————————

投稿吧   | 留言吧

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker安装以及简单使用

如何安装安装 yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 列出可用的版本 yum list docker-ce.x86_64 --showduplicates | sort -r yum install -y docker-ce-23.0.6-1.el8 #开机自动启动 …

Yolov10训练,转化onnx,推理

yolov10对于大目标的效果好,小目标不好 一、如果你训练过yolov5,yolov8,的话那么你可以直接用之前的环境就行 目录 一、如果你训练过yolov5,yolov8,的话那么你可以直接用之前的环境就行 二、配置好后就可以配置文件…

DBA 数据库管理

数据库:存储数据的仓库 数据库服务软件: 关系型数据库: 存在硬盘 ,制作表格的 数据库的参数 [rootmysql50 ~]# cat /etc/my.cnf.d/mysql-server.cnf 主配置文件 [mysqld] datadir/var/lib/mysql 存放数据库目录…

黑马点评商户缓存查询作业——Redis中查询商户类型

记录下自己在gpt帮助下完成的第一个需求~~~ 1. ShopTypeController 2. IShopTypeService 3. ShopTypeServiceImpl(模仿ShopServiceImpl来写的) 一共分为“1.redis中查询缓存”→“2.判断缓存是否存在,存在直接返回”→“3.缓存不存在则去查数…

sql盲注

文章目录 布尔盲注时间盲注 布尔盲注 介绍:在网页只给你两种回显的时候是用,类似于布尔类型的数据,1表示正确,0表示错误。 特点:思路简单,步骤繁琐且麻烦。 核心函数: length()函数substr()函…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构

模型地址:https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要参考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下载到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…

第二证券:资金抱团“高股息”,超三成A股年内创历史新低!

A股商场行情冰火两重天。 “预制菜榜首股”跌破发行价 7月8日,味知香盘中最低跌至19.26元/股,股价跌破发行价,并创前史新低。揭露资料显现,公司是集研发、生产、销售为一体的半成品菜企业,现在具有8大产品系列&#…

九科bit-Worker RPA 内容学习

简介: 什么是RPA? RPA(Robotic Process Automation,机器人流程自动化)本质上是一种“AI数字员工”,针对企业中存在的大批量、重复性、机械化人工操作,通过模拟人的工作流程使之实现自动化。 b…

Java | Leetcode Java题解之第219题存在重复元素II

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Set<Integer> set new HashSet<Integer>();int length nums.length;for (int i 0; i < length; i) {if (i > k) {set.remove(nums[i - …

【小鸡案例】表单focus和blur事件用法

input中有2个属性&#xff0c;一个是focus获取焦点&#xff0c;一个是blur失去焦点。获取焦点就是我们点击输入框时输入框被选中&#xff1b;失去焦点即点击输入框以外的区域&#xff0c;今天就用这两种属性做一个点击输入框的动画效果。 先写个输入框&#xff0c;代码如下&am…

【leetcode周赛记录——405】

405周赛记录 #1.leetcode100339_找出加密后的字符串2.leetcode100328_生成不含相邻零的二进制字符串3.leetcode100359_统计X和Y频数相等的子矩阵数量4.leetcode100350_最小代价构造字符串 刷了一段时间算法了&#xff0c;打打周赛看看什么水平了 #1.leetcode100339_找出加密后的…

源码层面学习动态代理

前言 在Java中&#xff0c;动态代理主要分为CGLIB动态代理和JDK动态代理&#xff0c;我们从Hutool的源码也可一窥这两者的使用方式和区别&#xff1b; CGLIB动态代理 JDK动态代理 使用场景 CglibInterceptor和JdkInterceptor都是Hutool提供的代理工具&#xff0c;用于在运行时…

Redis存储原理与数据模型

Redis存储结构 存储转换 redis-value编码 string int&#xff1a;字符串长度小于等于20切能转成整数raw&#xff1a;字符串长度大于44embstr&#xff1a;字符串长度小于等于44 list quicklist&#xff08;双向链表&#xff09;ziplist&#xff08;压缩链表&#xff09; hash …

【智能算法改进】多策略改进的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法&#xff08;DBO&#xff09;原理及实现 2.改进点 混沌反向学习初始化 采用 Pwlcm 分段混沌映射&#xff0c;由于 Pwlcm 在其定义区间上具有均匀的密度函数&#xff0c;在特定的…

1.从入门到环境搭建及程序基础

目录 1.1 C督学营开营 1 老师介绍 2 学习常见问题 3 如何学习课程 1.2 程序员职业发展方向 1 前端 2 后端 3 网络安全 1.3 Windows 的 CLion 开发环境安装 1 C 语言的由来 2 安装 MinGW 编译器 3 安装 CLion 开发环境 4 运行&试用 CLion 5 新建项目​ ​6 激…

基于LangChain的RAG开发教程(二)

v1.0官方文档&#xff1a;https://python.langchain.com/v0.1/docs/get_started/introduction/ 最新文档&#xff1a;https://python.langchain.com/v0.2/docs/introduction/ LangChain是一个能够利用大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能…

家里猫咪浮毛太多怎么办?值得买的猫毛空气净化器推荐

作为一位拥有5年铲屎经验的铲屎官&#xff0c;我知道许多新手铲屎官可能听说过宠物空气净化器&#xff0c;但了解得不多。事实上&#xff0c;宠物空气净化器确实是养猫家庭必备的小家电之一。它的大面积进风口可以有效吸附空气中的微小浮毛和皮屑&#xff0c;专门的除臭技术能有…

15个最佳WooCommerce商城网站及其主要功能

正在寻找的WooCommerce商城网站来激发灵感&#xff1f; 在动态的在线购物世界中&#xff0c;WooCommerce 就像企业的超级英雄。它帮助他们轻松创建强大而可靠的在线商店&#xff0c;并与WordPress顺畅协作。 从创新的产品展示到简化的结账流程&#xff0c;每个特色网站都拥有…

Linux--线程(概念篇)

目录 1.背景知识 再谈地址空间&#xff1a; 关于页表&#xff08;32bit机器上&#xff09; 2.线程的概念和Linux中线程的实现 概念部分&#xff1a; 代码部分&#xff1a; 问题&#xff1a; 3.关于线程的有点与缺点 4.进程VS线程 1.背景知识 再谈地址空间&#xff1a…