YOLOv9(2):YOLOv9网络结构

1. 前言

本文仅以官方提供的yolov9.yaml来进行简要讲解。

讲解之前,还是要做一些简单的铺垫。

Slice层不做任何的操作,纯粹是做一个占位层。这样一来,在parse_model时,ch[n]可表示第n层的输出通道。

Detect和DDetect主要区别还是是否使用分组卷积。

RepConv(Re-Paramterization)老生常谈了,重参化,优化推理效率。

2. 重参化(re-parameter)

在讲YOLOv9的网络结构之前,有必要引入一下"重参化(re-parameter)"技术。重参化技术并不是YOLOv9提出的,相反,已经是一个用的相当广泛的技术。细心地朋友可以发现,其实YOLOv5中已经在fuse_conv中体现了。

重参化是一种从网络推理效率和性能方面出发,优化得到的网络结构。其基本思想是在训练时使用多分支(如多个Conv层),增加梯度反馈路径。在推理时进行融合,减小计算量,提高推理效率。

以Conv+BN为例,我们都了解,卷积层(Conv)实际上是一个y = ax+b的过程。

训练阶段,基本的操作包含两个部分。

Conv:

BN:

其中,bn.mean为均值(对应nn.BatchNorm2d中的running_mean),bn.var为方差(对应nn.BatchNorm2d中的running_var),分别对应nn.BatchNorm2d中的weight和bias,对应nn.BatchNorm2d中的eps。

推理阶段,可将Conv和BN进行相应的合并计算,同时需要将参数进行重新的映射。具体如下。

如上,其中组成了新的weight,组成了新的bias。

3. ELAN

ELAN(Efficient layer aggregation network)高效层聚合网络,具体的说是一种网络结构设计策略,最早在论文Designing Network Design Strategies Through Gradient Path Analysis(https://arxiv.org/abs/2211.04800)被提出。

简单讲,在论文中,作者认为神经网络结构设计主要分为两种,分别是依据数据路径设计和依据梯度路径设计。

ELAN则是依据梯度路径设计策略进行相关的设计和优化,更具体的讲,ELAN侧重于最大化梯度源,丰富梯度路径。

当然,大家不要将这一部分过分解读,其实在以往的ResNet,CSPNet中,已经在实践这一策略了。

具体大家可以多参考其他博主的资源,如下链接就已经解释的很详细了:https://zhuanlan.zhihu.com/p/598642990?utm_id=0

4. YOLOv9中的组件

(1) RepConvN

先从forward中观察总体的流程,也即训练过程中的操作。在训练过程中的流程如下。

推理时,执行fuse_convs,此时会将conv1、conv2和进行重参化(re-parameter),转换成一个conv操作。

(2) RepNBottleneck

(3) RepNCSP

(4) RepNCSPELAN4

从名字上可以看出,该模块式一个Rep + CSP + ELAN的组合网络。Rep优化计算,CSP丰富梯度,ELAN做高效的特征聚合。

CSP:丰富组合、减少冗余、降低计算量。

需要说明的一点是,以上几张图仅仅是做一个大体的展示,在实际使用过程中会存在各种通道或分辨率上的计算。

(5) CBLinear

(6) CBFuse

CBFuse的上一级输入是CBLinear。CUFuse的每一次调用都是输入Tensor的一部分,并不是整个Tensor的聚合。

5. YOLOv9的网络架构

经过以上组件的简单介绍,YOLOv9(yolov9.yaml)就已经比较简单明了了。

相关推荐
SEU-WYL1 小时前
基于深度学习的动画渲染
人工智能·深度学习·dnn
羞儿5 小时前
【读点论文】基于二维伽马函数的光照不均匀图像自适应校正算法
人工智能·算法·计算机视觉
算法金「全网同名」5 小时前
算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?
深度学习·机器学习·数据分析
SEU-WYL5 小时前
基于深度学习的文本框检测
人工智能·深度学习·dnn
B站计算机毕业设计超人5 小时前
计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
大数据·python·深度学习·机器学习·数据分析·课程设计·推荐算法
夕小瑶6 小时前
守口如瓶,OpenAI刻意隐瞒的黑客攻击事件时隔一年被证实
人工智能·深度学习·机器学习·自然语言处理
龙的爹23336 小时前
论文 | Measuring and Narrowing the Compositionality Gap in Language Models
人工智能·深度学习·机器学习
樱花的浪漫6 小时前
将大型语言模型模块化打造协作智能体
人工智能·深度学习·语言模型·自然语言处理·知识图谱·agent
Bunny_Ben7 小时前
理解机器学习中的潜在空间(Understanding Latent Space in Machine Learning)
人工智能·笔记·深度学习·神经网络·机器学习
SEU-WYL8 小时前
基于深度学习的环绕文字识别
人工智能·深度学习·dnn