YOLOV5-网络结构和组件介绍

一、YOLOV5S网络结构
!](https://img-blog.csdnimg.cn/7677544ca52845e9ae5db044d9fad335.png)
(参考:https://blog.csdn.net/nan355655600/article/details/107852353)

(1)输入端处理
①Mosaic数据增强
Yolov5和Yolov4一样,对于输入图片采用了Mosaic数据增强,也就是对图片进行处理后,再多张拼贴起来。起到了数据增强的作用。

②自定义锚框
在Yolov3和Yolov4中,我们都需要提前设定Anchor的大小,以便于去适应不同大小的真实框。

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

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

③自适应图片放缩
输入图片和网络需要的输入大小的图片往往是不相同,我们要对输入图片进行处理,一般是通过先压缩再加灰边等方式。
在Yolov5中也是通过这样的方式 ,当时Yolov5采用了一个更好的方式,可以使得加灰边的大小尽可能的小,可以增加运行的速度。

(2)Backbone
①Focus结构
Backbone中的第一个模块是Focus模块。这是以前没有用过的结构。Focus模块的核心是切片slice。
在这里插入图片描述
其实实际上就是对数据进行了下采样。输入608x608x3大小的图片,经过Concat模块后,会变成304x304x12的大小。再经过一次32个卷积核的卷积操作,最终变成304×304×32的特征图。

②CSP结构
在Yolov5中采用了两种CSP结构,分别在Back中,这里先介绍第一种。CSP1,其中分为CSP1_1和CSP1_3。具体的网络结构可以看图。本质上是一种多次充分利用残差的网络结构。

(3)Neck
Yolov5中的Neck采用FPN+PAN的结构,和Yolov4中最大的不同就是使用了CSPNET网络。采用上,下采样灵活的构造特征金字塔。
在这里插入图片描述
(4)输出端
输出端的处理,其实和Yolov4基本上差别不大。
Yolov5中采用其中的CIOU_Loss做Bounding box的损失函数。
Yolov4在DIOU_Loss的基础上采用DIOU_nms的方式,而Yolov5中仍然采用加权nms的方式。

二、四种Yolov5结构的差别和控制。
四种Yolov5的结构分别为Yolov5s,Yolov5m,Yolov5l,Yolov5x。
这四种结构其实本质上没有区别,它们的主要差别是在于,用两个不同的参数,控制了网络的深度和宽度。
depth_multiple控制网络的深度,width_multiple控制网络的宽度。
在这里插入图片描述

(1)depth_multiple深度
我们以Backbone中的CSP结构为例,下图是4种不同结构的CSP结构中的残差次数。
总的来说在基本网络结构中,会对CSP网络的参数进行确定,而我们将用公式吧参数和给出的深度,宽度参数进行计算,从而算出残差次数的使用次数,也就控制了深度。

(2)width_multiple宽度
其实计算方法是类似的,这里控制的是每一次卷积的卷积核的大小。
在这里插入图片描述

### YOLOv5-seg 网络架构详解 YOLOv5-seg 是一种扩展版本的YOLOv5模型,专门用于实例分割任务。此模型继承了YOLO系列高效检测的特点,并引入了额外的分支来处理像素级分类。 #### 主干网络 (Backbone) 主干部分采用了CSPDarknet53作为特征提取器[^1]。这种设计不仅保留了原始YOLOv5中的跨阶段局部连接(Cross Stage Partial connections),还增强了计算效率表达能力。具体来说: - **Focus Layer**: 输入图像被切片重组以增加感受野而不损失分辨率。 - **卷积层(Convolutional Layers)** **残差块(Residual Blocks)** 组合而成,这些组件有助于捕捉多尺度特征并缓解梯度消失问题。 #### 颈部结构 (Neck) 颈部采用Path Aggregation Network(PANet) 来融合不同层次的特征图。PANet能够有效地聚合来自浅层到深层的信息流,从而改善目标定位精度特别是对于小物体而言更为明显。它由一系列上采样操作与跳跃连接组成,确保高分辨率细节得以保存的同时也利用到了低级别的语义信息。 #### 头部结构 (Head) 头部包含了两个主要子网——边界框预测头(Box Prediction Head) 及掩码生成头(Mask Generation Head): - **Box Prediction Head** 负责回归对象的位置坐标及其类别概率估计; - **Mask Generation Head**, 则专注于为每一个检测出来的实例创建对应的二值化遮罩(mask), 实现精确的对象轮廓描绘。 为了优化训练过程,YOLOv5-seg 使用了一种改进版的损失函数,结合了置信度得分、位置偏差以及IoU惩罚项等多个因素共同作用于最终输出的质量评估之上[^2]。 ```python import torch.nn as nn class YOLOv5Seg(nn.Module): def __init__(self, num_classes=80): super(YOLOv5Seg, self).__init__() # Backbone: CSPDarknet53 self.backbone = ... # Neck: PANet self.neck = ... # Heads self.box_head = BoxPredictionHead(num_classes=num_classes) self.mask_head = MaskGenerationHead() def forward(self, x): features = self.backbone(x) fused_features = self.neck(features) boxes = self.box_head(fused_features) masks = self.mask_head(fused_features) return boxes, masks ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值