一.模型框架
二.对Yolov5的描述
Yolov5的模型主要由 输入、Backbone、Neck、Head、输出 五部分组成。
2.1 输入
输入 640x640x3
2.2 backbone
Backbone:负责提取输入图像的特征。
在Yolov5中,常见的Backbone网络包括CSPDarknet53或ResNet。这些网络都是相对轻量级的,能够在保证较高检测精度的同时,尽可能地减少计算量和内存占用。
其结构主要有Conv模块、C3模块、SPPF模块。Conv模块主要由卷积层、BN层和激活函数组成,C3模块则将前面的特征图进行自适应聚合,SPPF模块通过全局特征与局部特征的加权融合,获取更全面的空间信息。
2.3 neck
Neck:Neck部分负责对Backbone提取的特征进行多尺度特征融合,并把这些特征传递给预测层。
例如,在Yolov5采用的PANet结构中,通过多次上采样、拼接、点和点积来设计聚合策略,以此更好地利用多尺度特征。
2.4 head
Head:Head主要负责进行最终的回归预测,即利用Backbone骨干网络提取的特征图来检测目标的位置和类别。
最后,输出端是模型预测的结果,包括每个目标的类别和其对应的边界框坐标等信息。
2.5 输出
有三个尺度的输出:分别为:
20x20x255
40x40x255
80x80x255
输出的255是怎么来的?
每个gred cell生成三个锚框,每一个锚框对应一个预测框,每一个预测框有 5(x,y,w,h,置信度) + 80(80个类别的条件概率)
3x85=255
多尺度输出的作用
grid cell为20x20,输入为640x640的图像下采样32倍得到20x20,对应输入图像的感受野是32x32
grid cell为40x40,输入为640x640的图像下采样16倍得到40x40,对应输入图像的感受野是16x16
grid cell为80x80,输入为640x640的图像下采样8倍得到80x80,对应输入图像的感受野是8x8
20x20负责预测大物体,分配大的锚框。
40x40负责预测中等大小的物体,分配中等大小的锚框。
80x80负责预测小物体,分配小的锚框。
三.正负样本匹配 和 损失函数
正负样本匹配和损失函数 详见如下博客:
目标检测——YOLOv3、YOLOv4、YOLOv5、YOLOv7正负样本匹配、YOLO3损失函数理解
https://blog.csdn.net/weixin_45464524/article/details/128683900
四.模块的细节
自上而下,自下而上的特征融合,可以更充分提取特征
C3模块
3指3个卷积
SPPF模块
比spp更快,缓解多尺度检测问题
Focus操作
2023年yolov5的focus被替换成了6x6卷积层.
anchors
先验框
五.yaml文件解读
基本参数
depth_multiple和width_multiple控制模型深度倍数和通道倍数,在smlx上不一样
backbone参数
-1表示,输入来自上一层,1表示模块个数。模块个数中的3,6,9是要乘以上面的depth_multiple参数的。
head参数
上面的画线部分,如[-1,6]表示输入不仅来自上一层还来自于第6层,是它们的拼接
其它
1,网络架构
通过解析代码仓库中的 .yaml 文件中的结构代码,YOLOv5 模型可以概括为以下几个部分:
Backbone: Focus structure, CSP network
Neck: SPP block, PANet
Head: YOLOv3 head using GIoU-loss
2,创新点
2.1,自适应anchor
在训练模型时,YOLOv5 会自己学习数据集中的最佳 anchor boxes,而不再需要先离线运行 K-means 算法聚类得到 k 个 anchor box 并修改 head 网络参数。总的来说,YOLOv5 流程简单且自动化了。
2.2, 自适应图片缩放
在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。
2.3,Focus结构
Focus 结构可以简单理解为将
大小的输入图片 4 个像素分别取 1 个(类似于邻近下采样)形成新的图片,这样 1 个通道的输入图片会被划分成 4 个通道,每个通道对应的 WH 尺寸大小都为原来的 1/2,并将这些通道组合在一起。这样就实现了像素信息不丢失的情况下,提高通道数(通道数对计算量影响更小),减少输入图像尺寸,从而大大减少模型计算量。
以 Yolov5s 的结构为例,原始 640x640x3 的图像输入 Focus 结构,采用切片操作,先变成 320×320×12 的特征图,再经过一次 32 个卷积核的卷积操作,最终变成 320×320×32 的特征图。
focus结构示例
3,四种网络结构
YOLOv5 通过在网络结构问价 yaml 中设置不同的 depth_multiple 和 width_multiple 参数,来创建大小不同的四种 YOLOv5 模型:Yolv5s、Yolv5m、Yolv5l、Yolv5x。
参考
yolov1-yolov7区别
http://www.360doc.com/content/23/0511/16/13826502_1080286590.shtml
yolov5-手绘框图讲解及相应配置文件讲解
https://www.bilibili.com/video/BV1BD4y1W7FS/?spm_id_from=333.788.recommend_more_video.1&vd_source=ebc47f36e62b223817b8e0edff181613