YOLOv3
YOLOv3 的网络结构可分为三部分:骨干网络(Darknet-53)、颈部网络(FPN 特征金字
塔)、检测头部(多尺度输出),整体呈 “全卷积 + 残差连接 + 多尺度融合” 设计,无池化层、无
全连接层,灵活适配任意 32 倍数的输入尺寸(默认 416×416)。
骨干网络
输入图像首先经过基础CBL 模块进行初步特征提取。CBL 由卷积层、批量归一化层与激活
函数组合构成,是骨干网络的基础运算单元。完成初始卷积后,特征依次送入后续五组残差模块。
每组残差模块内部先通过补零操作保证特征尺寸不变,再串联一层 CBL 模块,之后堆叠若干残差
单元。残差单元的结构设计与 ResNet 保持一致,依靠短路连接缓解深层网络的梯度消失问题。五
组残差模块内,残差单元的堆叠数量依次为 1、2、8、8、4。整体依靠多层残差结构逐层提取浅层
细节特征与深层语义特征,完成多尺度特征的高效编码。
(更直观一些)
Darknet‑53 = 全卷积 + 5 次下采样 + 16 个残差块 + 共 53 个卷积层
没有池化、没有全连接层(分类头会去掉)。
输入:416×416×3 图像。
输出:3 个特征图 → 13×13、26×26、52×52(送给 YOLOv3 检测头)。
CBL 块=Conv + BN + LeakyReLU
卷积:3×3 或 1×1
BN:加速训练、防梯度爆炸
LeakyReLU:带小斜率的激活,避免 “死亡神经元”
Residual 残差块
每个残差块是:
1×1 CBL → 降维(通道减半)
3×3 CBL → 升维(通道复原)
短路连接:输入直接加到输出上(add,不是 concat)
Add:数值相加,通道不变,用于残差。
Concat:通道拼接,通道变多,用于特征融合。
输入 416×416×3 ↓ CBL(32) ↓ 下采样(64) → Res×1 ↓ 下采样(128) → Res×2 ↓ 下采样(256) → Res×8 → 输出 52×52×256 ↓ 下采样(512) → Res×8 → 输出 26×26×512 ↓ 下采样(1024) → Res×4 → 输出 13×13×1024
颈部网络
在骨干网络输出的 13×13 深层特征基础上,首先堆叠五层连续的 CBL 模块,随后衔接一层
CBL,最后通过普通卷积层进行维度变换,最终输出尺寸为13×13×225的特征张量,用于大目标检
测。同时,YOLOv3 会在五层 CBL 模块之后引出一条分支,该分支先经过一层 CBL 做特征调
整,再执行上采样操作。上采样能够将13×13的小尺寸特征图放大为26×26,以此提升特征分辨
率。常见的上采样方式包含两种:最近邻插值,通过直接复制邻近像素数值完成放大;双线性插
值,结合周边像素加权平均计算新像素,使放大效果更加平滑。放大后的特征图,会与骨干网络倒
数第二层输出的26×26浅层特征图进行通道拼接融合。拼接完成后,再次依次堆叠五层 CBL、一层
CBL 与普通卷积层,最终输出26×26×225的特征张量,负责中等目标检测。同理,模型继续在对
应五层 CBL 后开辟分支,将融合后的中层特征进一步上采样,并与骨干网络倒数第三层输出的
52×52浅层高分辨率特征完成拼接。经过相同的五层 CBL、单层 CBL 以及普通卷积层层级结构处
理后,输出52×52×225的特征张量,专门用于小目标检测。依托多尺度上采样与跨层特征拼接融合
的方式,YOLOv3 同时兼顾浅层细节信息与深层语义信息,大幅提升不同尺寸目标的检测精度。
原始图像输入骨干网络后,由浅至深逐层完成特征提取。随着网络层层下采样,特征图的空间分辨
率不断降低,通道语义信息持续增强。同时,骨干网络后方三组残差模块会分别引出分支,输出
52×52、26×26、13×13三种不同尺度的基础特征图,为后续多尺度融合提供原始特征。
再来看颈部网络结构,其整体遵循自上而下的融合逻辑:以骨干网络最顶层的小尺寸深层特征为起
点,通过上采样操作逐级放大特征图分辨率;再借助通道拼接的方式,将放大后的深层特征,与骨
干网络对应层级的浅层高分辨特征相互融合。
每一级特征融合完成后,都会保留独立分支,最终经过单层 CBL 模块与普通卷积层的映射变换,
生成三组不同尺度的预测张量,这一部分即为检测网络的Head 检测头。
YOLOv3 的颈部网络核心采用FPN 特征金字塔结构。FPN 构建了一条自上而下的特征融合通路,
能够把深层网络丰富的强语义信息,逐层传递并融合到浅层细粒度特征中。既保留了浅层特征的位
置、轮廓等细节信息,又融入了深层特征的目标分类与全局语义能力,从而大幅提升模型对大、
中、小不同尺寸目标的检测效果。
检测头部
模型最终会输出三组不同尺寸的三维预测特征矩阵,依托三种尺度的特征图开展多尺度检测。该设
计的核心目的,是让模型不仅能够精准识别图像中的大型目标,同时兼顾中等目标与小型目标的检
测能力,全面适配不同尺寸的检测需求。
每个网格单元对应一个255 维的特征张量,该维度信息平均分为三组,分别对应每个网格预设的 3
个锚框。单组锚框包含 85 个预测参数,涵盖目标坐标偏移、边框尺寸、置信度以及各类别概率信
息。
【
以 YOLOv3 某一层特征图为例(比如 13×13 大目标层):
第一段 85 维 → 负责第 1 号大锚框的微调预测
第二段 85 维 → 负责第 2 号中等锚框的微调预测
第三段 85 维 → 负责第 3 号超大锚框的微调预测
简单说:三个锚框,高矮、胖瘦、长宽比完全不一样。一个偏向宽框、一个偏向高框、一个偏向正
方框,专门适配现实里不同形状的物体。
同一个网格里,可能同时存在多个物体;
物体有大有小、有宽有窄,一个锚框不够用;
提前准备 3 种不同形状的锚框当模板;
三段向量,分别独立去修正各自锚框的位置、大小、置信度、类别。
】
13×13的深层特征图感受野范围最大,全局语义信息更强,主要用于检测画面内的大型目标;
26×26中等尺度特征图感受野适中,负责中等目标检测;52×52浅层高分辨率特征图细节丰富、感
受野更小,专门优化小目标识别。网络会为三种尺度特征图分别匹配尺寸适配的先验锚框,锚框规
格与预测框数量一一对应,通过合理分配锚框,进一步提升边界框回归精度,保障多尺度目标的检
测效果。
YOLOv4
CSPDarknet-53 就是 YOLOv4 的主干特征提取网络, 名字拆开:CSP + Darknet-53,Darknet-
53:YOLOv3 的主干,一共 53 个卷积层,用残差块(Residual)加深网络,不怕梯度消失。
CSP(跨阶段部分连接):YOLOv4 新加的核心技巧,把计算量砍了约 20%,还更好训练。
CBM层
其实就是把激活函数替换了,Mish激活函数更加的平滑,梯度收敛会更快。而且只用在网络的第一
层,其它层还是用CBL。
残差单元
残差单元种的CBL变成了CBM。
残差模块
残差模块的改动稍微的大一些,多了几个CBM,然后还做了一个拼接操作,残差模块的名字也变
成了CSP。
空间金字塔池化(SPP)
其实就是用了3个不同尺寸的池化核,然后做了一个拼接操作。把通道数增加了。它的作用是一个
是13*13的卷积核显著增加了感受野,二是三种不同尺寸的池化核,完成了多种尺寸的特征提取。
解决了大目标检测强,小目标检测弱的问题,而且计算量很小可以加快推理速度。
CSPDarknet-53
Neck部分
骨干网络输出完成后,首先接入三层连续的 CBL 模块,随后串联SPP 空间金字塔池化模块,再堆
叠三层 CBL 做特征整合,最终输出尺寸为 13×13×512的深层特征图。
在此基础上,特征先经过一层 CBL 调整通道,再通过上采样操作,将特征图尺寸放大至 26×26
。放大后的特征,与骨干网络倒数第二层输出的 26×26浅层特征图进行通道拼接融合;融合完成
后,经过五层 CBL 模块进一步提纯特征,得到 26×26×256的特征张量。该特征继续经由一层
CBL 与上采样处理,分辨率提升至 52×52、通道压缩为 128,再和骨干网络倒数第三层输出的
52×52高分辨率特征拼接,完成浅层细节特征的融合增强。
与此同时,网络还存在反向下采样分支:从浅层特征开始,逐步通过卷积压缩特征图尺寸,与上层
融合后的特征依次拼接、互补。YOLOv4 的颈部网络存在两条双向融合路径:第一条为自上而下:
通过上采样逐级放大深层小尺寸特征,不断融合浅层高分辨率特征,强化细节信息;第二条为自下
而上:依靠卷积下采样逐步缩小浅层特征尺寸,逐层融合深层语义信息。双向双路径的特征融合结
构,结合 SPP 多尺度池化,充分结合浅层细节与深层语义,最终完成三组不同尺度预测张量的输
出,大幅提升多尺寸目标的检测能力。
YOLOv3 的颈部网络仅采用单向 FPN 自上而下融合,依靠上采样逐级放大深层特征,融合浅层细
节信息。而 YOLOv4 在 Neck 模块额外新增了一条自下而上的下采样分支,通过卷积逐步缩小浅
层特征图尺寸,反向传递底层定位细节,与上层强语义特征相互融合。
这种自上而下 + 自下而上的双向特征融合结构,即为 PANet 结构。双向融合弥补了单向 FPN 的不
足:既利用深层特征的全局语义,又强化浅层特征的位置与轮廓信息,让大小目标的特征融合更充
分,有效提升多尺度目标的检测精度。
【1】参考
大白话讲明白YOLOv4的CSPDarknet-53网络架构 #YOLO #yolov4 #目标识别 #知识前沿派对 #深度学习 - 抖音