YOLOv9这么快就来了,赶紧学起来~

简介: YOLOv9这么快就来了,赶紧学起来~

在论文中,提出使用PGI(可编程梯度信息)来解决信息瓶颈问题以及深度监督机制不适用于轻量级神经网络的问题。我们设计了GELAN(通用高效层聚合网络),一种高效且轻量的神经网络。在目标检测方面,GELAN在不同的计算模块和深度设置下都有稳定的强大性能。它确实可以广泛扩展为适用于各种推理设备的模型。针对上述两个问题,PGI的引入使得轻量模型和深度模型都能在准确性上实现显著提升。结合PGI和GELAN设计的YOLOv9展现了强劲的竞争力。其卓越的设计使得深度模型相比于YOLOv8,参数数量减少了49%,计算量减少了43%,但在MS COCO数据集上仍有0.6%的AP(平均精度)提升。

简介

论文地址:https://arxiv.org/abs/2402.13616
代码地址:https://github.com/WongKinYiu/yolov9

摘要:当今的深度学习方法侧重于如何设计最适合的目标函数,以使模型的预测结果尽可能接近真实情况。同时,还需要设计能够促进获取足够预测信息的适当架构。现有方法忽视了一个事实:当输入数据经过逐层的特征提取和空间转换时,大量信息会丢失。本文将深入探讨数据在深度网络中传输时数据丢失的重要问题,即信息瓶颈和可逆函数问题。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络要实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息以计算目标函数,从而获得可靠的梯度信息来更新网络权重。另外,我们还设计了一种新的轻量级网络架构——通用高效层聚合网络(GELAN),基于梯度路径规划。GELAN的架构证实了PGI在轻量级模型上取得了优越的结果。我们在基于MS COCO数据集的目标检测上验证了所提出的GELAN和PGI。结果表明,GELAN只使用传统的卷积运算符就比基于深度卷积开发的最先进方法实现了更好的参数利用率。PGI可以用于从轻量型到大型的各种模型。它可以用来获取完整的信息,使得从零开始训练的模型可以取得比使用大型数据集预训练的最先进模型更好的结果。

核心网络结构

YOLOv9网络结构配置文件:

# YOLOv9
# parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
#activation: nn.LeakyReLU(0.1)
#activation: nn.ReLU()
# anchors
anchors: 3
# YOLOv9 backbone
backbone:
  [
   [-1, 1, Silence, []],  
   
   # conv down
   [-1, 1, Conv, [64, 3, 2]],  # 1-P1/2
   # conv down
   [-1, 1, Conv, [128, 3, 2]],  # 2-P2/4
   # elan-1 block
   [-1, 1, RepNCSPELAN4, [256, 128, 64, 1]],  # 3
   # conv down
   [-1, 1, Conv, [256, 3, 2]],  # 4-P3/8
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 256, 128, 1]],  # 5
   # conv down
   [-1, 1, Conv, [512, 3, 2]],  # 6-P4/16
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 7
   # conv down
   [-1, 1, Conv, [512, 3, 2]],  # 8-P5/32
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 9
  ]
# YOLOv9 head
head:
  [
   # elan-spp block
   [-1, 1, SPPELAN, [512, 256]],  # 10
   # up-concat merge
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 7], 1, Concat, [1]],  # cat backbone P4
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 13
   # up-concat merge
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 5], 1, Concat, [1]],  # cat backbone P3
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [256, 256, 128, 1]],  # 16 (P3/8-small)
   # conv-down merge
   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 13], 1, Concat, [1]],  # cat head P4
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 19 (P4/16-medium)
   # conv-down merge
   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 22 (P5/32-large)
   
   # routing
   [5, 1, CBLinear, [[256]]], # 23
   [7, 1, CBLinear, [[256, 512]]], # 24
   [9, 1, CBLinear, [[256, 512, 512]]], # 25
   
   # conv down
   [0, 1, Conv, [64, 3, 2]],  # 26-P1/2
   # conv down
   [-1, 1, Conv, [128, 3, 2]],  # 27-P2/4
   # elan-1 block
   [-1, 1, RepNCSPELAN4, [256, 128, 64, 1]],  # 28
   # conv down fuse
   [-1, 1, Conv, [256, 3, 2]],  # 29-P3/8
   [[23, 24, 25, -1], 1, CBFuse, [[0, 0, 0]]], # 30  
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 256, 128, 1]],  # 31
   # conv down fuse
   [-1, 1, Conv, [512, 3, 2]],  # 32-P4/16
   [[24, 25, -1], 1, CBFuse, [[1, 1]]], # 33 
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 34
   # conv down fuse
   [-1, 1, Conv, [512, 3, 2]],  # 35-P5/32
   [[25, -1], 1, CBFuse, [[2]]], # 36
   # elan-2 block
   [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 37
   # detect
   [[31, 34, 37, 16, 19, 22], 1, DualDDetect, [nc]],  # DualDDetect(A3, A4, A5, P3, P4, P5)
  ]

性能对比

从对比曲线可以发现,无论是从参数到校和计算来那个上看,对比已有的SOTA模型,YOLOv9都还是有不小的优势的。

论文主要亮点:

  1. 从可逆函数的角度对现有的深度神经网络架构进行了理论分析,并通过这一过程成功解释了过去难以解释的许多现象。我们还基于这一分析设计了PGI和辅助可逆分支,并取得了出色的结果。
  2. 设计的PGI解决了深度监督只能用于极深神经网络架构的问题,因此允许新的轻量架构真正应用于日常生活中。
  3. 设计的GELAN仅使用传统卷积就比基于最先进技术的深度卷积设计实现了更高的参数利用率,同时展现了轻、快、准的巨大优势。
  4. 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面大大超越了现有的实时目标检测器。
相关文章
|
机器学习/深度学习 自然语言处理 搜索推荐
神经网络算法 —— Embedding(嵌入)!!
神经网络算法 —— Embedding(嵌入)!!
5529 1
|
Ubuntu 关系型数据库 MySQL
百度搜索:蓝易云【ubuntu下Mysql安装与root密码重置教程】
请注意,以上步骤是针对Ubuntu系统的。如果你使用的是其他Linux发行版,请相应地调整命令。
528 1
|
SQL 关系型数据库 MySQL
docker上定期备份mysql数据库
本文是博主学习docker的记录,希望对大家有所帮助。
1952 0
|
3月前
|
机器学习/深度学习 人工智能 安全
发现交通事故的车辆受损情况数据集(1000+张图片已划分、已标注)| AI训练适用于目标检测任务
本数据集专注于交通事故车辆受损情况的识别与分级,面向目标检测与图像分类任务,构建了覆盖多种道路环境与事故类型的高质量图像数据集,可为事故严重程度评估、车辆损伤等级判定及相关智能系统提供可靠的数据支撑。
|
8月前
|
存储 JSON 监控
淘宝/天猫:通过商品详情API实现多店铺商品信息批量同步,确保价格、库存实时更新
在电商运营中,管理多个淘宝或天猫店铺的商品信息(如价格、库存)耗时易错。本文介绍如何通过淘宝/天猫开放平台的商品详情API,实现自动化批量同步,确保信息实时更新。内容涵盖API调用、多店铺数据处理、实时更新策略及注意事项,助您高效管理多店铺商品信息。
522 0
|
9月前
|
XML JSON API
巧用电商 API,实现多平台订单管理一键搞定
在电商运营中,多平台订单管理常面临登录繁琐、数据孤岛、效率低下等问题。通过电商 API,商家可打通各平台的订单、库存与物流系统,实现数据自动同步与统一管理。本文详解 API 集成方案,涵盖订单同步、库存联动、物流追踪等核心功能,并提供自研与无代码两种实施路径,助力商家构建高效智能的订单管理体系,显著提升运营效率。
564 0
|
机器学习/深度学习 数据可视化 算法
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
1072 5
YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
1677 2
|
XML 数据格式 Python
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
该文章提供了一个Python脚本,用于将VOC格式的XML标签文件转换为YOLO训练所需的TXT格式,包括修改数据集类别、输入图像与标注文件夹地址、转换过程和结果展示。
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
|
人工智能 算法 物联网
企业级RAG全链路优化关键技术
本文深入解析了企业级RAG全链路的关键技术、效果优化、性能优化及应用实践。
1604 7

热门文章

最新文章