YOLOv8模型架构与可训练参数分析

作者: 李志雄 黎国进 李倩男

YOLOv8模型架构与可训练参数分析0

摘要:随着人工智能技术的日新月异,神经网络模型的复杂性与精细度正以空前的速度增长。卷积神经网络(Convolu⁃tional Neural Networks, CNN) ,作为深度学习领域的关键技术之一,其在图像识别、目标检测等任务中展现出卓越性能。鉴于CNN在深度、广度及模块多样性上的显著特点,本文聚焦于ultralytics的YOLOv8这一前沿开源目标检测项目,深入剖析其网络架构的核心组成与工作原理,并结合项目源码阐述关键层(如卷积层、池化层、残差连接层、上采样层、连接层) 的功能及其可训练参数的计算方法。

关键词:卷积神经网络;YOLOv8;网络架构;可训练参数

中图分类号:TP391.4 文献标识码:A

文章编号:1009-3044(2025)09-0025-04 开放科学(资源服务) 标识码(OSID) :

0 引言

目标检测作为计算机视觉领域研究的重点和热点。自2016 年Joseph Redmon 首次提出YOLO(Youonly Look Once) 算法以来,经过持续演进、深度迭代与持续优化,现已发展到第10个版本-YOLOv10。随着版本的升级,模型网络架构逐渐优化,参数量逐步增加,检测速度更快,算法精度更高,结构设计更加灵活。毛少华[1]等人详细分析了YOLOv1~YOLOv8的算法原理,归纳了各个版本的损失函数及其改进,并对其应用场景进行分类。王鑫杰[2]等人对YOLOv1~YO⁃LOv6算法的创新点、优点和局限性进行描述。周晋伟[3]等人将YOLO系列算法与已有物体检测算法进行对比,总结了YOLO的特点,指出YOLOv算法未来的发展趋势。徐彦威[4]等人对YOLOv1~YOLOv9的网络架构、损失函数进行对比分析。随着技术的发展,YOLO 目标检测算法速度更快,精度更高,广泛应用于自动驾驶、工业检测、安防多个领域。

本文主要介绍CNN的常见模块:卷积层和批量归一化层(Batch Normalization Layer,BN Layer) ,并以YOLOv8为例,分析YOLOv8的网络结构和详细计算各个模块的可训练参数。

1 CNN 关键层功能解析

卷积神经网络的整体架构分为输入层、卷积层、池化层和全连接层[5]。神经网络的复杂性决定了其参数的设定,其中部分参数会在训练过程中动态调整与优化,以适应学习任务的需求,例如:卷积权重参数(在PyTorch框架中表现为Conv1d/2d/3d函数和批量归一化函数) 。部分参数被设定为固定值,不会在训练过程进行更新,包括池化层、激活函数以及损失函数等组件的参数,它们保持恒定不变。

随着神经网络深度和广度的扩展,其结构日益复杂,泛化能力显著提升。在此背景下,模型的可训练参数数量成为评估模型性能与复杂度的关键指标。本文以PyTorch这一流行的人工智能框架为例,将深入探讨卷积层(Convolutional Layer) 和批量归一化层的具体应用、功能实现以及参数计算方式,以助力更高效的模型设计与优化。

1.1 Conv卷积

在Pytorch框架中,卷积层通常使用以下函数实现:nn.Conv1d/2d/3d、nn.ConvTranspose1d/2d/3d、nn.La⁃zyConv1d/2d/3d、nn. LazyConvTranspose1d/2d/3d、nn.Unfold/fold函数。在目标检测领域,以nn.Conv2d最为常用。其函数原型及参数说明如下:

torch. nn. Conv2d(in_channels, out_channels, ker⁃nel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,padding_mode=′zeros′,device=None,dtype=None)

Conv2d的权重参数计算公式:

可训练参数=(输入通道数/组数) ×卷积宽度×卷积高度×输出通道数 (1)

根据不同的配置参数(如卷积核大小、步长、填充方式等) ,常见卷积模式如图1所示。

1.2 BN批量归一化

批量归一化是一种加速深度网络训练的技术。它通过减少内部协变量位移(Internal Covariate Shift) 来提升训练速度和模型性能,改善梯度传播,强化模型的泛化性能。归一化技术衍生出BatchNorm、Layer⁃Norm、InstanceNorm、GroupNorm四种模式。Yuxin Wu,Kaimin He[6]对这四种归一化技术原理进行深入分析,如图2所示。在Pytorch框架中,这些函数实现为nn.BatchNorm1d/2d/3d、nn.LazyBatchNorm1d/2d/3d、nn.In⁃stanceNorm1d/2d/3d、nn.GroupNorm等。

其函数原型与参数说明如下:

torch.nn.BatchNorm2d(num_features,eps=1e05,mo⁃mentum=0.1, affine=True, track_running_stats=True, de⁃vice=None,dtype=None)

BatchNorm2d 中包含可训练参数,参数计算公式为:

权重参数=输入参数×2 (3)

2 YOLOv8模型架构

根据RangeKing@github 绘制的YOLOv8 的网络架构图,其整体结构分为Backbone、Neck、Head三部分。Backbone负责提取特征,主要由卷积模块(Con⁃Module)、CSPLayer_2Conv 以及SPPF 三类模块组成;Neck主要负责多尺寸特征的融合,通过Shotcut层连接Backbone部分Stage Layer2/3/4的输出以提升特征表现能力。Head 部分采用解藕头结构(Decoupled-Head) ,由卷积模块和Conv2d组成,负责边界框回归和分类任务的损失计算。

3 网络结构参数说明

YOLOv8n的网络框架总共包含23个模块,可训练参数模块17个,无可训练参数6个,神经网络225 层。当目标检测数量为80时,全部参数3 157 200个,可训练参数3 157 184个。

根据官方提供的配置文件,以YOLOv8.yaml 为例,文件中提供了nc、scales、backbone、head四类配置参数。具体含义如下:

nc:目标检测数量

scales:模型深度和宽度缩放因子,第一列控制模型深度,第三列控制模型宽度,第三列控制模型最大通道数。其中n→YOLOv8n模型,s→YOLOv8s模型,m→YOLOv8m 模型,l→YOLOv8l 模型、x→YO⁃LOv8x模型。

backbone:backbone网络骨架的参数,对文件中四种类型数据格式进行说明。

Head:head部分神经网络的组成部分。有nn.Upsample、Concat、C2f、Conv、Detect五种成分。其中,C2f与Conv的参数释义与Backbone一致。其他三种释义如下。

4 训练参数计算

YOLOv8的主要包含Conv、C2f、SPPF、Upsample、Concat、Detect六类模块,均继承自nn.Module类。其中,Upsample和Concat模块无可训练参数。Conv模块包含一个二维卷积层、一个批量归一化层和一个激活函数。C2f 模块包含两个Conv 对象和一个多层的Bottleneck结构,其层数对应backbone和head参数中的重复次数。Bottleneck模块由两个Conv对象组成,当shotcut值为True且输入参数c1、c2相等时进行残差连接。SPPF由两个Conv对象和一个二维最大池化层组成。各层的详细可训练参数计算方式如表9所示。

5 总结

本文详细分析了YOLOv8的神经网络架构,介绍了22个模块的可训练参数计算方法。通过对各模块可训练参数的计算,为YOLO的架构优化、参数调整以及模型的轻量化部署提供指导。作为 one-stage 检测算法的典型代表[7]。YOLO系列算法经过不断地发展,在目标检测、图像分割、姿态估计、视觉跟踪等工业领域得到广泛应用。未来,随着技术的进一步发展,YOLO 算法在更多领域将展现出巨大的潜力和价值。

经典小说推荐

杂志订阅