YOLOv5论文笔记

本文详细介绍了YOLOv5的网络结构,包括输入端的Mosaic数据增强、自适应锚框计算和图片缩放,Backbone部分的Focus结构和CSP结构,Neck中的FPN+PAN结构,以及预测端的GIOU_Loss。文章强调了YOLOv5在适应不同数据集和图片尺寸上的优化,并探讨了网络深度和宽度的控制方法。此外,还列举了YOLOv5s、m、l、x四种网络结构的差异和调整方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、网络结构图

在这里插入图片描述

(1)输入端 :Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2)Backbone :Focus结构,CSP结构
(3)Neck :FPN+PAN结构
(4)Prediction :GIOU_Loss

(1)输入端

Mosiac数据增强

自适应锚框计算

在Yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。

在Yolov3、Yolov4中,训练不同的数据集时,计算初始锚框的值是通过单独的程序运行的。

但Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。

当然,如果觉得计算的锚框效果不是很好,也可以在代码中将自动计算锚框功能关闭。

自适应图片缩放

在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。比如Yolo算法中常用416416,608608等尺寸,缩放后仍然会保持原来的长宽比,只是对缺少的部分用黑边或者灰边填充,使用letterbox函数。
在这里插入图片描述
作者认为,在项目实际使用时,很多图片的长宽比不同,因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。

因此在Yolov5的代码中datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。
在这里插入图片描述

注意,由于yolo网络经过5次下采样后,缩减为32倍,因为要保证图片尺寸为32的倍数。

(2)backbone

Focus结构

在这里插入图片描述

比如上图的切片示意图,443的图像切片后变成2212的特征图。

以Yolov5s的结构为例,原始6086083的图像输入Focus结构,采用切片操作,先变成30430412的特征图,再经过一次32个卷积核的卷积操作,最终变成30430432的特征图。

YOLOv5s在focus中最后使用32个卷积核,而剩下m,l,x逐渐增多。

CSP结构

在这里插入图片描述
Yolov5与Yolov4不同点在于,Yolov4中只有主干网络使用了CSP结构。

而Yolov5中设计了两种CSP 结构,以Yolov5s网络为例,CSP1_X 结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中

(3)Neck

Yolov5的Neck和Yolov4中一样,都采用FPN+PAN的结构。

Yolov5和Yolov4的不同点在于,Yolov4的Neck结构中,采用的都是普通的卷积操作。而Yolov5的Neck结构中,采用借鉴CSPnet设计的CSP2结构,加强网络特征融合的能力。
在这里插入图片描述

(4)输出端

ciou_loss

diou_nms

它对于一些遮挡重叠的目标 ,确实会有一些改进。

2、YOLOv5的四种网络结构

Yolov5代码中的四种网络,和之前的Yolov3,Yolov4中的cfg文件不同,都是以yaml的形式来呈现。
(1)Yolov5s.yaml
在这里插入图片描述
(2)Yolov5m.yaml
在这里插入图片描述
(3)Yolov5l.yaml
在这里插入图片描述
(4)Yolov5x.yaml
在这里插入图片描述
而且四个文件的内容基本上都是一样的,只有最上方的depth_multiple和width_multiple两个参数不同,来进行控制网络的深度和宽度 。四种结构的yaml文件中,下方的网络架构代码都是一样的。

(1)不同的网络深度

在这里插入图片描述
需要注意的是,四种网络结构中每个CSP结构的深度都是不同的。

以yolov5s为例,第一个CSP1中,使用了1个残差组件,因此是CSP1_1。而在Yolov5m中,则增加了网络的深度,在第一个CSP1中,使用了2个残差组件,因此是CSP1_2。

(2)如何利用代码控制深度

控制四种网络结构的核心代码是yolo.py中下面的代码,存在两个变量,n和gd 。我们再将n和gd带入计算,看每种网络的变化结果。
在这里插入图片描述
下面是对该公式的说明:
在这里插入图片描述
以YOLOv5s为例,它的depth_multiple=0.33 ,即gd=0.33 ,而n则由上面红色框中的信息获得,是number那一列,分别是3,9, 9。

代入公式的,gd=0.33,带入(2)中的计算代码,结果n=1。因此第一个CSP1结构内只有1个残差组件,即CSP1_1。

第二个CSP1结构中,n等于第二个数值9,而gd=0.33,带入(2)中计算,结果n=3,因此第二个CSP1结构中有3个残差组件,即CSP1_3。

(3)YOLOv5的网络宽度(即卷积核的个数,也即特征图的厚度)

在这里插入图片描述
如上图表格中所示,四种yolov5结构在不同阶段的卷积核的数量都是不一样的,因此也直接影响卷积后特征图的第三维度,即厚度 ,表示为网络的宽度

以Yolov5s结构为例,第一个Focus结构中,最后卷积操作时,卷积核的数量是32个,因此经过Focus结构,特征图的大小变成30430432。

(4)如何利用代码控制宽度

在yolov5的代码中,控制宽度的核心代码是yolo.py文件里面的这一行:
在这里插入图片描述
它所调用的子函数make_divisible的功能是:
在这里插入图片描述
这里以YOLOv5s为例,
在这里插入图片描述
它的width_multiple=0.5 ,即gw=0.5

以第一个卷积下采样为例,即Focus结构中下面的卷积操作。按照上面Backbone的信息,我们知道Focus中,标准的c2=64,而gw=0.5,代入(4)中的计算公式,最后的结果=32。即Yolov5s的Focus结构中,卷积下采样操作的卷积核数量为32个。再计算后面的第二个卷积下采样操作,标准c2的值=128,gw=0.5,代入(4)中公式,最后的结果=64,也是正确的。

<think>好的,用户想查找YOLOv5论文或技术文档。首先,我需要确认YOLOv5是否有官方论文。记得YOLOv5最初是在GitHub上发布的,可能没有正式的论文。用户提到的引用[1]和[3]中有相关资源,特别是引用[1]提到了YOLOv1到YOLOv5论文解读资源下载,项目地址是https://gitcode.com/Open-source-documentation-tutorial/2a843。这可能是一个重要的来源。 接下来,用户可能需要官方技术文档或详细的实现说明。YOLOv5的GitHub仓库(https://github.com/ultralytics/yolov5)通常包含详细的文档、使用指南和预训练模型。应该建议用户访问这里获取最新信息。 另外,引用[3]提到了一个SwinTransformer-YOLOv5的GitHub仓库,可能包含结合其他技术的实现,但可能不是原版YOLOv5的文档。需要区分清楚,避免混淆。 还要考虑到用户可能对YOLOv5的背景不太清楚,比如它是由Ultralytics公司维护的,而非官方论文发布。所以需要解释清楚,并建议替代资源,如技术报告、GitHub文档和社区解读。 最后,生成相关问题时要围绕YOLOv5的资源获取、技术细节、与其他版本的比较,以及应用场景等方面,帮助用户进一步探索。</think>### 关于YOLOv5论文及技术文档获取 #### 1. **YOLOv5的官方论文情况** YOLOv5最初由Ultralytics团队在GitHub开源,但**并未发布正式论文**。其核心实现基于YOLOv3/YOLOv4的改进,主要通过代码和文档说明技术细节。若需了解其原理,建议结合以下资源: - **GitHub仓库文档**:包含模型结构、训练配置和性能指标[^3] - **技术博客和社区解读**:如引用[1]提到的YOLOv1-YOLOv5论文解读资源包(项目地址:[https://gitcode.com/Open-source-documentation-tutorial/2a843](https://gitcode.com/Open-source-documentation-tutorial/2a843))[^1] #### 2. **技术文档获取途径** - **官方GitHub仓库**:访问 [https://github.com/ultralytics/yolov5](https://github.com/ultralytics/yolov5) 可查看完整的代码、预训练模型和详细使用说明 - **综合技术报告**:部分研究者整理的YOLOv5技术分析文档(如引用[1]中的资源包包含相关解读) #### 3. **替代方案:YOLO系列论文参考** 若需学术引用,可参考: - **YOLOv4论文**:对比分析YOLOv5的改进方向 - **YOLOv7论文**:了解后续版本的发展(如引用[2]提到的背景更新)[^2] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值