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大道理”,选择“关注”公众号

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

  

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

投稿吧   | 留言吧

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

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

相关文章

部署windows-exporter

一、安装 windows-exporter源码 下载对应版本 在windows中使用二进制方式部署 安装好之后,打开 http://127.0.0.1:9182/metrics 二、接入prometheus 1、通过静态文件配置加入 scrape_configs:# The job name is added as a label `job=<job_name>` to any timeser…

Nginx 是一个非常流行的 Web 服务器和反向代理服务器

Nginx 是一个非常流行的 Web 服务器和反向代理服务器&#xff0c;以其高性能、稳定性、丰富的功能集和低资源消耗而闻名。下面是一个简化的 Nginx 使用教程&#xff0c;包括基本的安装、配置和一些常见用途。 安装 Nginx 在 Ubuntu/Debian 上安装&#xff1a; sudo apt upda…

Ubuntu的奇葩bug汇总

键盘的Win键失效、被锁的解决办法 ——我还以为我电脑坏了&#xff0c;重装呜呜呜

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 #开机自动启动 …

day02_员工管理

文章目录 新增员工需求分析和设计代码开发功能测试代码完善录入的用户名已存在&#xff0c;抛出异常后没有处理新增员工的时候&#xff0c;创建人id和修改人id设置为了固定值ThreadLocal&#xff08;面试题&#xff09; 分页查询问题解决 启用禁用员工账号需求和分析代码设计 编…

Vue3项目打包优化

前言 本文介绍在实际项目中进行打包优化过程 目前评分 good npm install web-vitals在App.vue加入如下代码测试网页性能指标 import { onLCP, onINP, onCLS, onFCP, onTTFP } from web-vitals/attributiononCLS(console.log) onINP(console.log) onLCP(console.log) onFCP(…

cfDNA甲基化疾病早筛研究思路分享

游离DNA&#xff08;Circulating free DNA&#xff0c;cfDNA&#xff09;是人体组织释放到血液等循环体系中降解的DNA片段&#xff0c;是一种新型的肿瘤分子标志物。ctDNA甲基化是重要的表观学修饰之一&#xff0c;可以在不改变基因序列的情况下&#xff0c;改变遗传表现&#…

Java中的数据备份与恢复策略

Java中的数据备份与恢复策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 数据备份与恢复是任何系统中至关重要的一部分。在软件开发和运维过程中&#xff…

身边的故事(十五):阿文的故事:再消失

物镜人非&#xff0c;沧海桑田。像我们这些普通的凡人&#xff0c;哪有什么试错的机会&#xff0c;每走一步都是如履薄冰&#xff0c;小心谨慎&#xff0c;错一步可能就会万劫不复。唉&#xff0c;如果...唉...哪有什么如果... 阿文的房子很快装修完成&#xff0c;入新房那天就…

go语言hassuffix的简单使用

在 Go 语言中&#xff0c;strings 包提供了 HasSuffix 函数&#xff0c;它用于检查一个字符串是否以指定的后缀结尾。这个函数返回一个布尔值&#xff0c;如果字符串以指定的后缀结尾&#xff0c;则返回 true&#xff0c;否则返回 false。 以下是 HasSuffix 函数的基本使用示例…

ubantu安装k8s集群服务

进行主机优化配置 参考&#xff1a; 修改主机名称 hostnamectl set-hostname k8s-node03 关闭swap分区 swapoff -a #临时关闭 sed -i /\/swap/s/^/# /etc/fstab #永久关闭 增加主机解析 cat >> /etc/hosts << EOF 10.1.60.119 k8s-master01 10.1.60.12…

zdppy+onlyoffice+vue3解决文档加载和文档强制保存时弹出警告的问题

解决过程 第一次排查 最开始排查的是官方文档说的 https://api.onlyoffice.com/editors/troubleshooting#key 解决方案。参考的是官方的 https://github.com/ONLYOFFICE/document-server-integration/releases/latest/download/Python.Example.zip 基于Django的Python代码。 …

短视频美化:成都柏煜文化传媒有限公司

短视频美化&#xff1a;创意与技术的艺术交融 在数字时代的浪潮中&#xff0c;短视频以其独特的魅力迅速崛起&#xff0c;成为人们生活中不可或缺的一部分。从记录生活点滴到分享创意灵感&#xff0c;短视频以其短小精悍、形式多样的特点&#xff0c;让每个人都能成为自己故事…

LLM生成的CUDA C++ Programming Guide LLM摘要

CUDA C编程指南介绍了CUDA模型和接口&#xff0c;强调了在版本12.4中的更新。关键知识点包括&#xff1a; GPU的优势&#xff1a;与CPU相比&#xff0c;GPU在相同价格和功耗范围内提供更高的指令吞吐量和内存带宽。这使得许多应用在GPU上运行速度更快&#xff0c;特别是在高度并…

Linux安装elasticsearch单机版

一、检查内核 uname -a uname -m 二、下载版本 下载版本选择自己服务器相同的内核版本 我这边是aaech64 ES下载地址 Kibana 下载地址 二、上传服务器解压 tar -xvf elasticsearch-8.14.1-linux-aarch64.tar.gz 三、安装ES 因为ES不能用root用户启动先创建用户 #新增 es …

算法训练营day71

题目&#xff1a;53. 寻宝&#xff08;第七期模拟笔试&#xff09; (kamacoder.com) 最小生成树-prim算法 #include<bits/stdc.h>using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> grid(n 1, vector<int>(n…

网络编程:拆分数据包---libpcap库

使用libpcap对抓到的数据报进行拆分 安装:sudo apt-get install libpcap-dev 1、打开网络设备 获取可用的网络设备名指针 char *pcap_lookupdev(char *errbuf)打开一个用于捕获数据的网络接口 pcap_t *pcap_open_live(const char *device,int snaplen,int promise,int to_ms,…

vue-cli 脚手架详细介绍

4 vue-cli 脚手架 1 脚手架介绍 vue-cli也叫vue脚手架,vue-cli是vue官方提供的一个全局命令工具&#xff0c;这个命令可以帮助我们快速的创建一个vue项目的基础架子。 脚手架&#xff1a;搭建好的一个架子&#xff0c;我们在架子上进行开发 开箱即用零配置基于webpack、webpac…

GEE代码实例教程详解:洪水灾害监测

简介 在本篇博客中&#xff0c;我们将使用Google Earth Engine (GEE) 进行洪水灾害监测。通过分析Sentinel-1雷达数据&#xff0c;我们可以识别特定时间段内的洪水变化情况。 背景知识 Sentinel-1数据集 Sentinel-1是欧洲空间局提供的雷达卫星数据集&#xff0c;它能够提供…

3209. 子数组按位与值为 K 的数目

Powered by:NEFU AB-IN Link 文章目录 3209. 子数组按位与值为 K 的数目题意思路代码 3209. 子数组按位与值为 K 的数目 题意 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回 nums 中有多少个 子数组 满足&#xff1a;子数组中所有元素按位 AND 的结果为 k 。 思…