96SEO 2026-02-19 10:28 0
YOLOv5目前有YOLOv5n、YOLOv5s、YOLOv5m、YoLOv5l、YOLOv5x五个版本。

这五个版本在网络结构上是没有区别的唯一的区别就是网络的宽度和深度不一样在这5个版本的配置文件里面是通过设置不同的depth_multiple和width_multiple来控制网络的大小。
其中depth_multiple控制网络的深度BottleneckCSP数width_multiple控制网络的宽度卷积核数量。
通过设置这两个不同参数不同复杂度模型数量如下表
当depth_multiple和width_multiple都为1的时候此时的网络结构是没有增加和减少的。
我们常用的是版本YOLOv5s此时网络模型的深度(BottleneckCSP数量)是YOLOv5L的1/3宽度(conv)是YOLOv5L的一半。
图片链接https://github.com/ultralytics/yolov5/issues/6885
YOLOv5-v6.0版本的Backbone主要由ConBNSiLU模块、C3和SPPF模块三部分组成。
Backbone特征提取部分采用的是CSPNet网络结构CSP(Cross
Network)跨阶段局部网络它的网络结构图如下使用csp网络有以下优点。
减少计算量和参数数量CSPNet通过将网络分成两个阶段并在两个阶段之间引入CSP模块可以减少整体的计算量和参数数量。
CSP模块通过将输入特征图一分为二并将其中一部分直接通过跳跃连接连接到后续的层级有效地减少了后续层级的计算量从而提高了网络的效率。
提升信息流动性CSPNet中的CSP模块还能够增强特征图中信息的流动性。
通过将特征图分成两部分并在不同部分之间引入交叉连接CSP模块可以更好地促进特征之间的信息传递和交换从而增强了特征图的表达能力。
增强特征重用性CSPNet通过引入CSP模块将输入特征图分成两部分并进行交叉连接使得网络可以更充分地利用输入特征图中的信息。
这种交叉连接的设计增强了特征的重用性有助于提高网络的泛化能力和分类性能。
降低过拟合风险由于CSPNet通过减少参数数量和引入跳跃连接来降低计算量这也有助于减轻过拟合的风险。
相比于传统的深度神经网络结构CSPNet具有更好的泛化能力能够更好地适应不同的数据集和任务。
保持高性能尽管CSPNet减少了计算量和参数数量但它仍然能够保持较高的分类性能。
通过有效地利用输入特征图中的信息并增强特征图之间的交互CSPNet可以在保持高效率的同时实现与传统网络相媲美甚至更好的分类性能。
ConvBNSiLU模块在yolo的配置文件中是以Conv的形式出现的为了方便理解后面都将
ConvBNSiLU理解为CBS模块它主要由以下三个部分组成:
YOLOv5在ConvBNSiLU模块中封装了三个功能:普通的卷积(Conv2d)、Batch
unit)这里会发现激活函数和yolov5旧版本不太一样旧版本使用的是Leaky
SiLU激活函数图像如下相对于ReLU激活函数它在x轴的负半轴有段向下的曲线
函数在整个定义域内都是可微的这使得在反向传播过程中的梯度计算更加稳定。
SiLU函数不是单调递增的而是在x≈−1.28时达到全局最小值−0.28这可以起到一个隐式正则化的作用抑制过大的权重。
这里解释一下为什么叫C3模块因为是由三个CBS模块也就是三个卷积层再加上若干个BottleNeck模块构成输入进来的特征分为两个部分一部分特征是只经过CBS模块处理一部分经过CBSBottleNeck处理最后通过concat将两部分特征进行拼接再经过一个CBS层将特征维度进行恢复。
YOLOv5-v6.0版本中使用了C3模块替代了早期的BottleneckCSP模块。
这两者结构作用基本相同均为CSP架构只是在修正单元的选择上有所不同C3模块包含了3个标准卷积层以及多个Bottleneck模块与BottleneckCSP模块所不同的是经过Bottleneck模块输出后的Conv模块被去掉了。
在C3模块中存在若干个BottleNeck模块该模块其实存在两种形式也就是BottleNeck1和BottleNeck2BottleNeck1是以resnet残差结构连接的该残差结构是由两条路构成其中一路先进行1×1卷积将特征图的通道数减小一半从而减少计算量再通过3×3卷积提取特征并且将通道数加倍其输入与输出的通道数是不发生改变的而另外一路通过shortcut进行残差连接与第一路的输出特征图相加从而实现特征融合BottleNeck2只是经过一次1x1卷积的CBS和一次3x3卷积的CBS。
Pooling的简称即空间金字塔池化YOLOv5借鉴了SPPNet的思想。
这里先来看一下SPP结构该结构是何凯明15年在Spatial
Recognition论文中提出来的在RCNN中第一阶段检测出来的候选框大小不一样为了让这些候选框可以变成固定大小送进FC层SPP就可以达到这一目的。
polling层最后将它们与降维之后的特征concat起来然后再经过一个卷积将channel恢复成原来大小。
SPPF模块采用多个小尺寸池化核级联代替SPP模块中单个大尺寸池化核从而在保留原有功能即融合不同感受野的特征图丰富特征图的表达能力的情况下进一步提高了运行速度。
该模块输入的特征图首先经过卷积层进行降维再经过三个kernel
size5的卷积核进行最大池化将每次池化后的特征与卷积之后的特征进行concat最后再经过一次卷积将特征图的尺度进行恢复。
论文链接https://arxiv.org/abs/1612.03144
Network(特征金字塔)。
原来多数的目标检测算法只是采用顶层特征做预测但我们知道浅层的特征所携带的语义信息较少而位置信息更强深层的特征所携带的语义信息较丰富而位置信息更弱。
FPN的思想就是把深层的语义信息传递到浅层从而增强多个尺度上的语义表达。
通俗地说FPN可以比喻成一座金字塔每一层代表不同尺度的特征图。
底部的特征图尺寸较大但信息较为粗糙适合检测大的物体而顶部的特征图尺寸较小但信息更加精细适合检测小的物体。
FPN通过自上而下的反卷积upsampling和自下而上的跳跃连接skip
connection的方式将这些不同尺度的特征图融合在一起形成一个特征金字塔使得网络能够同时关注不同尺度的特征。
FPN的大致结构如上图所示左边是一个自底向上(Bottom-up)的传播路径也就是特征提取部分右边是一个自顶向下(Top-down)的传播路径中间是通过横向连接(lateral
自底向上(Bottom-up)的过程就是网络的前向传播过程从结构图可以看出取经过第2个C3和第3个C3以及最后一个SPPF模块的Feature
map来构成金字塔当输入图片大小是640x640x3的时候该特征金字塔的Feature
map分别是80x80x256、40x40x512、20x20x1024组成。
map开始逐个进行1/2降维和2倍上采样(这里的顶表示深层次的网络信息也就是Backbone特征提取网络最后一层20x20x1024的信息)然后与特征金字塔上一层的Feature
map进行concat拼接这里的降维操作使用的是1x1的卷积降低特征图通道数最顶层的特征图为20x20x1024大小通过降维和上采样之后变成40x40x512特征图与特征金字塔第二层的Feature
map40x40x512进行拼接得到40x40x1024的特征图。
在拼接融合之后还会对每个拼接结果进行C3模块卷积目的是消除上采样的混叠效应(aliasing
论文链接https://arxiv.org/abs/1803.01534
FPN通过自顶向下(Top-down)的结构将深层的语义信息传递到浅层但是浅层的位置信息却无法影响到深层特征。
同时FPN中顶部信息流需要通过骨干网络(Backbone)逐层地往下传递由于层数相对较多如果使用原路返回的方法计算量比较大。
此时想到另外一种方法如果能够将已经经过特征金字塔融合的特征再进行自底向上传递的话就可以解决计算量大的问题而PANet有效地解决了上述这些问题。
(a)FPN骨干。
(b)PANet自下而上的路径增强。
©自适应特征池。
(d)箱形分支。
(e)全连接融合。
如上图(b)所示PANet在FPN的基础上又引入了一个自底向上(Bottom-up)的路径。
经过自顶向下(Top-down)的特征融合后再进行自底向上(Bottom-up)的特征融合这样底层的位置信息也能够传递到深层从而增强多个尺度上的定位能力。
同时与FPN相比(如红色线条所示)PANet中的底层特征传递所需要穿越的feature
map数量大大减少(如绿色线条所示)使得底层的位置信息更容易传递到顶部。
经过FPN之后的特征图再进行下采样与特征金字塔中已经融合的特征再进行拼接融合。
其中自底向上(Bottom-up)的过程是沿着N2
N5路径逐个stage通过3×3卷积进行2倍下采样然后与FPN中相应大小的feature
map进行相加融合(在YOLOv5中采用的是拼接融合)。
也就是P2进行下采样之后生成的N2与P3进行拼接成为N3N3在再与P4进行拼接。
在YOLOv5中Head模块通过1x1卷积将Neck模块得到的不同尺度的特征图的通道数量扩展扩展后的通道数为(类别数量5)乘以每个检测层上的anchor数量。
其中5表示预测框的中心点的横坐标、纵坐标、宽度、高度和置信度。
这里的置信度代表了预测框中存在目标的可信度其取值范围在0到1之间值越大表示该预测框中可能存在目标的可能性越高。
在YOLOv5的Head模块中包含了3个检测层分别对应Neck模块中得到的3种不同尺寸的特征图。
针对这3种特征图YOLOv5在每个网格上预设了3个不同宽高比的anchor用来预测和回归目标。
因此Head模块中扩展后的通道维度可以理解为在特征图的通道维度上保存了所有基于anchor先验框的位置信息和分类信息。
VOC中物体在图像中的位置是以左上角坐标和右下角坐标进行确定的yolo物体标记的物体位置则是用相对位置进行标记物体的具体位置是由中心点坐标以及宽、高决定的。
那么如何将PASCAL
VOC坐标转换为yolo格式的坐标呢假设该物体的坐标由(187,21)、403,627决定此时我们需要计算该目标的中心点坐标x,y再除以图片的宽高就可以得到yolo格式的中心点坐标同理物体相对于该图片的大小也使用该方法计算。
首先Anchor给出了目标宽高的初始值需要回归的是目标真实宽高与初始宽高的偏移量
预测边界框中心点相对于对应cell左上角位置的相对偏移值为了将边界框中心点约束在当前cell中使用sigmoid函数处理偏移值使预测偏移值在(0,1)范围内
yolov5的tx、tytwth都经过了sigmoid函数处理因为原始的yolo/darknet框方程式存在严重缺陷。
宽度和高度完全不受限制因为它们只是out
expin这很危险因为它可能导致失控的梯度、不稳定、NaN损失并最终完全失去训练。
对于yolov5确保通过sigmoid所有模型输出来修补此错误同时还要确保中心点保持不变1
fcn0当tx、tytwth偏移量都为0此时预测值都为1此时得到的就是锚框大小。
当前的方程式将锚点的倍数从最小0限制为最大4并且锚点-目标匹配也已更新为基于宽度-高度倍数标称上限阈值超参数为4.0超过这个值就认为bbox和anchor匹配度不高而认为是背景。
为什么公式中要取平方运算通过下面这幅实验图可以看出输入和输出的关系。
YOLOv5的每个检测层上的每个网格都预设了多个anchor先验框但并不是每个网格中都存在目标也并不是每个anchor都适合用来回归当前目标因此需要对这些anchor先验框进行筛选将其划分为正样本和负样本。
本文的正负样本指的是预测框而不是Ground
与YOLOv3/4不同的是YOLOv5采用的是基于宽高比例的匹配策略它的大致流程如下
Truth(人工标注的真实框)分别计算它与9种不同anchor的宽与宽的比值(w1/w2,
Truth和anchor的比值小于设定的比值阈值(超参数中默认为anchor_t
Truth即这个anchor所回归得到的预测框就被称为正样本剩余所有的预测框都是负样本。
通过上述方法YOLOv5不仅筛选了正负样本同时对于部分Ground
Truth在单个尺度上匹配了多个anchor来进行预测总体上增加了一定的正样本数量。
除此以外YOLOv5还通过以下几种方法增加正样本的个数从而加快收敛速度。
Truth的中心点落在某个检测层上的某个网格中除了中心点所在的网格之外其左、上、右、下4个邻域的网格中靠近Ground
Truth中心点的两个网格中的anchor也会参与预测和回归即一个目标会由3个网格的anchor进行预测。
如果点(xg,yg)在格子的左上角则取左边、上方的两个格子如果点(xg,yg)在格子的右上角则取右边、上方的两个格子如果点(xg,yg)在格子的左下角则取左边、下方的两个格子如果点(xg,yg)在格子的右下角则取右边、上下方的两个格子
跨分支扩充YOLOv5的检测头包含了3个不同尺度的检测层每个检测层上预设了3种不同长宽比的anchor假设一个Ground
Truth可以和不同尺度的检测层上的anchor匹配则这3个检测层上所有符合条件的anchor都可以用来预测该Ground
Truth即一个目标可以由多个检测层的多个anchor进行预测。
把640x640的输入图像划分成NxN通常为80x80、40x40、20x20的网格然后对网格的每个格子都预测三个指标矩形框、置信度、分类概率。
矩形框表征目标的大小以及精确位置。
置信度表征所预测矩形框简称预测框的可信程度取值范围0~1值越大说明该矩形框中越可能存在目标。
分类概率表征目标的类别
由于yolov5生成的是三个尺寸的特征图所以需要对每一个尺寸的特征图都求损失最后的总损失是每个特征图的分类损失边界框损失置信度损失。
上式中α1、α2、α3为各网格损失函数值的权重系数。
考虑到图像中往往小型目标比较多中型目标次之大型目标最少因此通常把8080网格的权重α1设置最大4040网格的权重α2次之20*20网格的权重α3最小使得训练时网络更加专注于数量多的目标。
box回归的损失。
关于CIOU以及GIOU和DIOU的损失计算方法可以参考这篇文章YOLOV4改进方法详细介绍—看这一篇就够了
因此YOLO应用softmax函数将得分转换为总和为1的概率。
现在输出的总和可以大于1。
YOLOv3/v4/v5用多个独立的逻辑logistic分类器替换softmax函数以计算输入属于特定标签的可能性。
在计算分类损失进行训练时YOLOv3/v4/v5对每个标签使用二元交叉熵损失。
神经网络对80*80网格的每个格子都预测三个预测框每个预测框的预测信息都包含了N个分类概率。
其中N为总类别数比如COCO数据集有80个类别那么N取80。
所以对于COCO数据集每个预测框有80个0~1的分类概率那么神经网络总共预测3x80x80x80个分类概率组成预测概率矩阵。
YOLOv5默认使用二元交叉熵函数来计算分类损失。
二元交叉熵函数的定义为:
对于一张图像分割成的80*80的网格神经网络对其中每个格子都预测三个位于该格子附近的矩形框简称预测框每个预测框的预测信息包括中心坐标、宽、高、置信度、分类概率因此神经网络总共输出3x80x80个0~1的预测置信度与3x80x80个预测框一
一对应。
每个预测框的置信度表征这个预测框的靠谱程度值越大表示该预测框越可信靠谱也即越接近目标的真实最小包围框。
比如下图中红点A、B、C、D表示检测目标那么每个红点所在格子的三个预测置信度应该比较大甚至接近1而其它格子的预测置信度应该较小甚至接近0。
这样一来标签值的大小与预测框、目标框的重合度有关两框重合度越高则标签值越大。
如果CIOU的取值范围是-1.5-1而置信度标签的取值范围是0~1所以需要对CIOU做一个截断处理当CIOU小于0时直接取0值作为标签。
与计算分类损失一样YOLOv5默认使用二元交叉熵函数来计算置信度损失。
Mosaic数据增强是指将4张图片随即缩放、随机裁剪、随机排布的方式进行拼接成新的图片该方式仅在训练过程中使用。
下图就是一个Mosaic数据增强的过程。
丰富数据集随机使用4张图片随机缩放再随机分布进行拼接大大丰富了检测数据集特别是随机缩放增加了很多小目标让网络的鲁棒性更好。
减少GPU可能会有人说随机缩放普通的数据增强也可以做但作者考虑到很多人可能只有一个GPU因此Mosaic增强训练时可以直接计算4张图片的数据使得Mini-batch大小并不需要很大一个GPU就可以达到比较好的效果。
传统的yolo会先设置初始的锚框这些初始锚框是根据COCO等数据集进行聚类得到的
anchor的基础上进行预测输出预测框再和标签框进行对比最后就进行梯度的反向传播。
中则是将此功能嵌入到整个训练代码里中。
所以在每次训练开始之前它都会根据不同的数据集来自适应计算
在常用的目标检测算法中不同的图片长宽都不相同因此常用的方式是将原始图片统一缩放到一个标准尺寸再送入检测网络中如下图所示。
但是在项目实际使用时很多图片的长宽比不同因此缩放填充后两端的黑边大小都不同而如果填充的比较多则存在信息冗余影响推理速度。
因此YOLOv5作者在augmentations.letterbox()中对图像自适应添加最少的灰边代码中添加的是灰边本文以黑边代替。
训练时没有采用缩减黑边的方式还是采用传统填充的方式即缩放到640*640大小。
只是在测试使用模型推理时才采用缩减黑边的方式提高目标检测推理的速度。
由于刚开始训练时模型的权重(weights)是随机初始化的此时若选择一个较大的学习率可能带来模型的不稳定振荡选择Warmup预热学习率的方
式可以使得开始训练的几个epoch或者一些step内学习率较小在预热的小学习率下模型可以慢慢趋于稳定等模型相对稳定后在选择预先设置的学习率进行训练使得模型收敛速度变得更快模型效果更佳。
参考论文https://arxiv.org/pdf/1608.03983.pdf
在每一次运行中我们用余弦退火对每个批次的学习率进行衰减如下所示
通过训练学习率曲线和精确度曲线可以看出使用余弦退火的曲线更加平滑。
超参数进化是一种利用遗传算法进行超参数优化的方法用于优化的算法GA。
目前模型提供的默认参数是通过在COCO数据集上使用超参数进化得来的由于超参数进化会耗费大量的资源和时间如果默认参数训练出来的结果能满足你的使用使用默认参数也是不错的选择
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback