YOLOv8的网络结构由输入端(Input)、骨干网络(Backbone)、颈部网络(Neck)和检测头(Head)四部分组成。
YOLOv8的网络结构如下图所示:
在整个系统架构中,图像首先进入输入处理模块,该模块承担着图像预处理与数据增强的双重任务。接着,骨干网络会对输入图像进行深入分析,提取图像在多个层次上的关键特征信息。随后,颈部网络利用特征金字塔结构,实现对不同尺度特征的有效融合。最后,检测头模块基于融合后的特征数据,输出最终的预测结果。接下来,我们将针对上述各模块,逐一探讨其具体功能和运行原理。
一、输入端
在网络模型的训练环节,数据增强技术凭借其出色表现,在提升算法鲁棒性与泛化能力领域备受青睐。该技术通过对原始训练样本实施一系列随机化操作与处理,创造出大量差异化的训练数据,进而减少算法对原始训练数据的过度依赖,有效增强模型在不同场景下的适应能力。以 YOLOv8n 网络为例,其通过引入 Mosaic 数据增强技术,并配合输入尺寸标准化处理,实现了算法性能的显著优化。
Mosaic 数据增强是极具创新性的数据扩充手段,它打破传统单张图像增强的模式,通过对四张原始图像进行随机几何变换(涵盖尺度缩放、区域裁剪等操作)与空间重新组合,生成全新的训练样本。这一方式不仅极大地丰富了目标特征的多样性,还因同时处理多张图像,降低了训练过程对硬件资源的需求,使得小批量训练也能达到良好效果。
Mosaic 数据增强技术的具体实现可拆解为三个核心阶段:首先,从训练数据集中随机抽取四张图像,对每张图像分别执行缩放、翻转等几何变换,以及亮度调节、饱和度修改等色域变换;接着,将处理完毕的四张图像按照预先设定的规则,依次排布在新合成图像的四个角落;最后,对合成图像进行随机裁剪,产出最终的训练图像。经此流程,数据集的丰富度大幅提升,有效强化了算法对复杂多变场景和各类目标的识别能力 。
另外,考虑到数据集中图像尺寸大小不一,为保证输入图像规格一致,往往会对图像进行标准化处理。具体做法是在图像边缘填充黑色像素,使其达到统一尺寸。这种标准化操作一方面简化了模型训练流程,另一方面规避了因图像拉伸、压缩变形而导致的算法性能下降问题。借助数据增强与尺寸标准化相结合的策略,YOLOv8 模型不仅显著增强了泛化能力,还降低了硬件资源消耗,在提升训练效率的同时,进一步优化了整体性能表现。
二、骨干网络
在整个网络架构中,Backbone(骨干网络)无疑占据着核心地位,它如同网络的 “中枢神经”,肩负着对输入图像进行多层次特征提取的关键任务。这些提取到的特征,是后续目标检测、图像分类等任务得以顺利进行的基础,其质量和丰富程度直接影响着整个网络的性能表现。
Backbone 模块并非单一结构,而是由多个功能各异却又紧密协作的子模块组合而成,其中包括 CBS 模块、C2f 模块和 SPPF(Spatial Pyramid Pooling - Fast)模块。这些子模块各自发挥独特作用,通过精妙的组合与协同工作,构建起一个高效且强大的特征提取网络。在这个网络中,信息能够得到充分的处理和传递,不同层次、不同类型的特征被逐步挖掘和提炼,为后续的网络层提供更具价值的输入。接下来,将对各个子模块进行详细且深入的介绍。
CBS 模块作为 Backbone 中的基础构建单元,其结构蕴含着精心的设计。它由卷积层(Convolutional Layer)、批归一化层(BatchNormalization,BN)和 SiLU 激活函数三部分有序连接组成。卷积层负责对输入图像进行特征提取,通过不同的卷积核与图像进行卷积运算,捕捉图像中各种局部特征;批归一化层则在卷积层之后,对卷积层输出的数据进行归一化处理,使得数据分布更加稳定,有助于加快网络的训练收敛速度,同时还能增强网络的泛化能力;SiLU 激活函数则为网络引入非线性因素,打破线性运算的局限,使网络能够学习到更加复杂的特征关系,提升网络的表达能力。其具体结构如下图所示:
卷积层可以在输入图像或特征图上,通过大小不同、数量不同的卷积核进行滑动卷积,捕捉图像中的局部特征信息,不同大小的卷积核可以对不同尺度的特征进行提取。卷积层后的批量归一化层起到了稳定组网训练的功能。SiLU 激活函数是一种自门控的非线性激活函数,SiLU 的数学表达式如下所示:
与传统的激活函数如ReLU 相比,SiLU 具有平滑的曲线,如下图所示。能够在一定程度上缓解梯度消失问题,并且在负数区域也有非零输出,使得网络能够学习到更丰富的特征表示。
C2f 模块通过跨阶段特征融合机制,将不同阶段的特征进行部分融合,结合低级细节信息与高级语义信息,从而显著提升特征的多样性和表达能力,其结构如下图所示,其中C2f1 与C2f2 的主要区别在于Bottleneck 模块的设计。
Bottlneck 结构如下图所示,该模块的核心结构由两个CBS 模块串联组成,其分支结构则根据Shotcut 参数的不同分为两种情况:当Shotcut=False 时,Bottleneck 模块仅由两个CBS 模块堆叠而成,不包含分支;当Shotcut=True 时,模块在主干部分的基础上增加一条分支,形成一个残差结构,模块的输出为主干部分与残差分支的和。
SPPF模块是在SPP模块基础上优化得到的特征金字塔处理单元。通过不同尺寸的池化核(如5×5、9×9、13×13)对输入特征进行多尺度池化,然后将多尺度池化结果与原始输入特征进行拼接,生成丰富的多尺度特征表示。与传统的SPP模块相比,SPPF模块采用串行池化策略,即通过多次相同尺寸的池化操作逐步扩大感受野,而不是将多个大小不等的池化核并行使用。该模块在保持较低的计算复杂度、提高网络运行效率的同时,通过高效的多尺度特征融合,使算法对目标尺度和空间分布的适应性显著增强。SPPF结构如下图所示。
三、颈部网络
在Neck 中,主要通过多尺度特征融合来优化Backbone 提取的特征图。其设计灵感来源于FPN,此外结合PANet 来进一步优化特征融合效果。通过自顶向下的路径,FPN结构将高层次的特征图和低层次的特征图的下结果融合在一起,从而向低层次的特征传递丰富的语义信息。PANet 采用自底向上的特征融合路径,通过上采样和拼接操作将底层特征的空间信息传递至高层。通过结合FPN 和PANet 结构,Neck 实现了语义信息与位置信息的双向融合,使得各层特征图既能保留丰富的语义信息,又能包含精确的位置信息。其结构示意图如下图所示:
四、检测头
YOLOv8采用了解耦头(Decoupled Head)设计,与传统耦合结构(Coupled Head)存在一些差异,耦合结构中的分类任务和回归任务共享相同的特征提取层。尽管这种设计简化了网络结构,但共享特征可能导致两类任务之间的相互干扰,从而影响检测精度,耦合头的结构如下图所示。
解耦结构检测头的核心思想是通过独立的子网络分别处理分类任务和回归任务,避免相互干扰,解耦头的结构如下图所示。
为了进一步提升检测效率并简化算法设计,YOLOv8舍弃了传统的Anchor-Based方法,采用Anchor-Free机制直接预测目标的中心点和边界框尺寸。传统目标检测方法依赖预设锚框进行位置预测,但这种方法存在一些问题,例如锚框设计复杂,计算冗余,泛化能力受限。通过对目标中心点位置和边界框尺寸的直接预测,YOLOv8的Anchor-Free机制避免了锚框的预设和调整,同时将目标通过动态匹配策略分配到最适合的特征层,检测精度得到了进一步提高。这种设计不仅简化了算法模型结构,还显著降低了计算量,增强了算法对不同尺度目标的泛化能力。
六、 YOLOv8损失函数
损失函数是深度学习框架中的核心组成部分,其作用在于量化模型预测值与真实值之间的差异,并通过反向传播算法将误差梯度传递至网络各层,从而驱动模型参数的迭代优化。通过最小化损失函数,深度学习算法能够逐步调整其内部权重,提升预测精度和泛化能力,最终实现对目标任务的精准建模。YOLOv8 的损失函数主要由两部分组成,分别是分类损失(Classification Loss)和边界框回归损失(Bounding Box Regression Loss)。分类损失采用了二元交叉熵损失函数(Binary Cross Entropy Loss, BCE Loss),其数学表达式见下面公式:
式中: y 代表输入样本对应的标签,正样本为1,负样本为0; p 代表预测输入样本为正样本的概率。这一损失项计算了预测类别分布与真实标签之间的差异度,并通过反向传播算法动态调整网络参数,从而优化算法在分类任务中的判断能力。
边界框回归损失主要由CIoU(Complete Intersection over Union)损失和DFL(Distance-Focal Loss)组成。CIoU 损失是在传统IoU 损失的基础上进行改进的,考虑了边界框之间的重叠度、中心点的距离、宽高比的差异以及长宽比例的变化。与标准IoU 损失仅关注边界框的重叠区域不同,CIoU 损失通过引入这些额外的几何信息,能够更全面地衡量预测框和真实框之间的差异。CIoU 的数学表达式如下公式所示:
式中:IoU 为预测框与真实框的交并比;d 为预测框与真实框中心点之间的欧式距离; c 为预测框与输入框最小外接矩形的面积;为权重参数,其表达式如下公式所示;
v为预测框与真实框高宽比相似性,其表达式如下所示:
式中: 分别为真实框与预测框的宽和高。
DFL(Distributional Feature Loss)旨在使网络能够快速聚焦于标签值附近的区域。其核心思想是使用交叉熵损失函数来优化标签y 附近的概率分布,从而使得网络的输出更加集中在真实标签附近。DFL 的数学表达式如下公式所示:
式中: 和
是浮点值y 的左右整数值,
和
是输出分布。