Bootstrap

Yolov5算法原理

一、背景介绍

        Ultralytics是一家专注于计算机视觉和深度学习技术的 公司,成立于2019年。致力于开发先进的深度学习解决方 案,特别是在目标检测和图像处理领域。Ultralytics最著名 的产品是YOLOv5,尽管YOLOv5的命名为“v5” ,它实际上 是对YOLO系列的一个独立实现。

 

        Glenn Jocher是计算机视觉和深度学习领域的知名开发者,特别以其在目标检测模型YOLOv5的开发和维护方面的 贡献而闻名。Glenn Jocher(Ultralytics团队)于2020年6 月发布了YOLOv5,将其作为YOLO系列的一个新版本,尽 管它并不直接由原始YOLO作者开发,但受到了广泛的关注 和使用。

特点与改进

  • 模型架构:YOLOv5采用了更高效的网络结构设计,结合了CSPNet(Cross Stage Partial Network)和PANet(Path Aggregation Network),旨在减少计算量的同时提高检测精度。

  • 自动学习锚框:相较于之前的版本,YOLOv5能够根据训练数据集自动调整锚框(anchor boxes),从而适应不同的应用场景。

  • 数据增强:引入了多种数据增强技术,如马赛克数据增强(Mosaic Data Augmentation),这有助于提升模型对不同尺度和视角下物体的识别能力。

  • 易于使用:YOLOv5提供了非常友好的接口和文档支持,使得开发者可以更容易地进行模型训练、验证以及部署。它支持PyTorch框架,具有良好的兼容性和扩展性。

  • 性能表现:YOLOv5在保持高精度的同时,实现了更快的推理速度,适用于实时目标检测任务。它能够在多种硬件平台上运行,从高性能GPU到嵌入式设备。


二、Yolov5的主要内容

1、yolov5是一种单阶段目标检测算法,主要算法思路如下

  1. 输入端:Mosaic增强、自适应锚框计算、自适应图片缩放。
  2. 基准网络:Focus结构与CSP结构(C3结构),SPP(SPPF)。
  3. Neck网络:采用FPN+PAN结构。
  4. Head输出层:分类+定位于一体。
  5. 目标框回归。
  6. 正负样本匹配。
  7. 损失函数:分类损失+置信度损失+定位损失。

2、Mosaic增强

        马赛克增强(mosaic augmentation)是当下十分强大的数据增强之一,可以显著提升图像中的目标实例的丰富度、图像自身的检测难度,这对于提升模型的性能起到了极大的积极作用。对于YOLO系列,最早使用马赛克增强的是由知名的ultralytics团队实现的YOLOv3,随后在官方的YOLOv4和5中,马赛克增强也被使用。

        马赛克增强的思想十分简单,就是随机将4张不同的图像拼接在一起,组合成一张新的图像,不妨将此图像称为“马赛克图像”,如图所示

        为了更好地理解这一强大的增强技术,我们举一个例子,假定输入图像的尺寸是640×640,首先,准备一个1280×1280的空白图像,依次将四张图像的最长边缩放到640,短边做相应比例的变换;其次,随机选一个中心点,依次将四张图像拼接上去;最后,使用空间扰动增强随机从这张1280×1280的马赛克图像抽取出640×640的图像来。相较于一般的图像,马赛克图像因融合了四张图像的信息,不仅丰富了其中的目标类型和数量,也加大了该图像的检测难度。很多时候,从数据的角度切入去增加一些学习的难度,往往对模型的性能是有益的。


3、自适应锚框

        自适应锚框计算是根据训练数据集中目标的实际大小和比例,自动调整锚框 (anchor boxes)的大小,使其更好地适 应检测任务。 作用:
  1. 提高检测精度:通过与数据集中目标尺寸匹配的锚框设置,模型能够更准确地定位和分类对象。
  2. 优化训练效率:自适应的锚框减少了无效或低效的检测匹配,提高了正样本的比例,帮助模型更快收敛。

自适应锚框计算过程:

  1. 统计数据集中的目标框:通过遍历数据集,收集所有目标框的宽高比信息。
  2. 聚类分析:使用 k-means聚类 或改进的kmeans算法,基于宽高比对目标框进行聚类,得到多个锚框。
  3. 距离度量:通常采用IoU作为距离指标,以更好地反映锚框与目标框的匹配程度。
  4. 确定最佳锚框:聚类完成后,选择与数据集目标特征匹配度最高的锚框集合,作为模型训练的默认锚框。
  5. 自动调整:YOLOv5在训练时会自动计算和推荐适合数据集的锚框配置,以帮助用户更快地开始训练,并获得更好的检测效果。

4、自适应图片缩放

        训练阶段:
        目标检测算法在训练和推理阶段都 会 resize 到 统 一 的 图 像 尺 寸 , YOLOv5在推理阶段采用了自适应的 图片缩放。
  1. 计算长边缩放比例:假设原图尺寸为(523, 699)(设定为32的倍 数)计算长边缩放比例: r = 416 / 699 = 0.5951
  2. 将原图等比例缩放:(523,699) ---> (311, 416)
  3. 高padding = (320 - 311) / 2 = 4.5,所以推理阶段的分辨率为( 320 416) 填充为(416,416);
  4. H侧上下需要填充的大小 pad = (416 - 311) / 2 = 52.5


5、SiLU激活函数


6、Yolov5的整体结构和参数


7、Yolov5中的Focus(有的代码版本中可能没有)


8、Yolov5中的C3


9、Yolov5中的SPPF结构


10、Yolov5中的FPN+PAN结构


11、Yolov5的目标框回归


12、Yolov5的正负样本匹配


13、Yolov5损失函数 

;