当前位置: 首页 > news >正文

YOLOv5 目标检测算法详解(一)

YOLOv5 目标检测算法详解(一)

一、YOLOv5 算法概述

YOLOv5 是YOLO系列目标检测算法的最新版本,相比YOLOv4在网络结构、损失函数和数据增强等方面进行了优化和改进。本教程将从数据预处理、网络架构、损失函数等多个方面详细讲解YOLOv5。

二、数据预处理

2.1 图像缩放与归一化

YOLOv5在处理不同尺寸的输入图像时,需要先将其统一为指定尺寸。常见的输入尺寸包括:

  • 416×416
  • 608×608
  • 640×640
缩放算法步骤

假设原始图片尺寸为 523×699,目标尺寸为 416×416

第一步:计算缩放比例

缩放比例 = min(目标宽度/原始宽度, 目标高度/原始高度)= min(416/523, 416/699)= min(0.7956, 0.5951)= 0.5951

第二步:计算缩放后的尺寸

新宽度 = 原始宽度 × 0.5951 = 523 × 0.5951 ≈ 311
新高度 = 原始高度 × 0.5951 = 699 × 0.5951 ≈ 416

第三步:计算灰边填充

为了保持原图宽高比,需要对不足的部分用灰色填充:

左右灰边 = (416 - 311) / 2 = 52.5
上下灰边 = (416 - 416) / 2 = 0

最终得到 416×416 的图像,两侧各有约 52.5 像素的灰色边框。

2.2 为什么使用灰色边框?

  • 保持原图比例:不会扭曲或变形原图内容
  • 保留原始信息:对象大小和形状保持一致
  • 提高检测精度:避免因强行缩放导致的信息丢失

2.3 32倍数对齐

YOLOv5要求输入图像的宽高必须是32的倍数。这是因为:

  • YOLOv5 含有5个下采样层(stride为2),总下采样倍数为 32(2^5 = 32)
  • 确保特征图能够完整对应原图,避免信息丢失

三、马赛克数据增强(Mosaic Data Augmentation)

3.1 基本概念

马赛克数据增强是将4张图片随机拼接成一张图片的方法,具有以下优势:

3.2 优点

1. 增加数据多样性

  • 在复杂背景下训练模型
  • 提高模型泛化能力

2. 提升小目标检测能力

  • 单张图片中多个物体拼接后变得更小
  • 迫使模型学习检测微小目标
  • 增加训练样本的丰富度

3. 加快训练速度

  • 在相同的迭代次数内,看到更多的目标变化
  • 提高训练效率

3.3 拼接方式

+--------+--------+
| 图1    | 图2    |
+--------+--------+
| 图3    | 图4    |
+--------+--------+

四张不同的图片在随机位置上进行拼接,生成单一的训练样本。

四、YOLOv5 网络架构

4.1 整体结构

YOLOv5 的网络结构主要包括三部分:

输入 (X) → Backbone(骨干网络) → Neck(颈部) → Head(输出头) → 输出 (Y)

4.2 主要模块

Backbone 骨干网络
  • Focus结构(在某些版本中已移除)
  • CSPDarknet 网络
  • C3 模块
  • SPPF 空间金字塔池化(YOLOv5 相比 YOLOv4 的改进)
Neck 颈部
  • 特征融合结构
  • FPN(特征金字塔网络)
  • PANet 结构
  • 融合不同尺度的特征信息
Head 输出头
  • 分类分支:预测对象类别
  • 定位分支:预测边界框坐标 (x, y, w, h)
  • 置信度分支:预测目标存在的概率

4.3 SPPF vs SPP

SPP (Spatial Pyramid Pooling)

  • 在YOLOv4中使用
  • 使用多个最大池化层进行多尺度特征提取

SPPF (Spatial Pyramid Pooling Fast)

  • YOLOv5的改进版本
  • 计算更快,参数更少
  • 性能相同,但效率更高

五、目标检测输出

5.1 输出格式

YOLOv5 的每个检测框包含以下信息:

(x, y, w, h, confidence, class_1_prob, class_2_prob, ..., class_n_prob)

其中:

  • (x, y):边界框中心坐标
  • (w, h):边界框宽度和高度
  • confidence:该框包含目标的置信度
  • class_prob:各类别的概率

5.2 网格敏感性消除

消除网格偏差,使模型对任意位置的目标均衡敏感。

5.3 正负样本匹配

  • 正样本:与真实框重叠度高(IoU)的预测框
  • 负样本:与真实框重叠度低的预测框
  • 匹配机制决定了训练的收敛速度和最终精度

六、损失函数

6.1 损失函数组成

YOLOv5 的总损失包括:

Total Loss = 分类损失 + 定位损失 + 置信度损失

6.2 与YOLOv4对比

  • 相似之处:基本损失函数设计相同
  • 改进之处:在样本匹配和权重分配上进行了优化
  • 原因:YOLOv5 在YOLOv4发布后2-3个月推出,参考了YOLOv4的成熟方案并进行了微调

七、推理与训练阶段区别

7.1 训练阶段(Training)

输入图片 X ↓
模型前向传播↓
获得预测结果 Ŷ↓
计算损失函数 Loss↓
反向传播计算梯度↓
更新权重参数 W、B↓
迭代下一个batch

7.2 推理阶段(Inference)

输入图片 X ↓
模型前向传播(权重W、B已固定)↓
获得预测结果 Ŷ↓
输出检测结果

关键区别

  • 推理阶段没有损失函数计算和反向传播
  • 权重参数保持不变
  • 推理速度更快

八、输入尺寸灵活性

8.1 训练时

  • 输入必须是统一尺寸(如416×416)
  • 便于batch processing
  • 保证显存使用一致

8.2 推理时

  • 可以使用不同尺寸的图片
  • 可以是非正方形(如416×320)
  • 只需确保宽高是32的倍数

8.3 尺寸选择建议

  • 416×416:平衡精度和速度
  • 608×608:更高精度,计算量大
  • 640×640:标准尺寸,推荐使用
  • 非正方形:可在推理时快速处理特定尺寸的图像

九、学习路径建议

  1. 深入学习YOLOv4:理解基础概念和网络设计
  2. 理解YOLOv5改进点:掌握优化细节
  3. 代码实践:从框架代码入手,逐步理解实现细节
  4. 模型优化:学习模型压缩、加速等技巧

十、常见问题解答

Q:为什么要使用灰色边框而不是直接缩放?
A:灰色边框保持原图比例,避免对象变形,有利于模型学习正确的目标特征。

Q:输入必须是正方形吗?
A:训练时最好用正方形以提高效率;推理时可以是任意形状,只需是32的倍数。

Q:SPPF相比SPP有什么优势?
A:计算速度快,参数少,精度相同。

Q:32倍数对齐的原因是什么?
A:YOLOv5有5个下采样层,总下采样倍数为32(2^5=32),确保特征图完整对应。

http://www.dtcms.com/a/519556.html

相关文章:

  • No040:陪伴的艺术——当DeepSeek学会在时光中温柔在场
  • 6-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 客户端攻击▸侦查客户端指纹
  • 苏州企业网站设计企业phpstudy如何建设网站
  • 仿站网站域名网站建设数据库实验心得
  • 怎么看电脑的主板BIOS型号
  • 广东省高校质量工程建设网站管理登陆网站开发软件
  • 压缩与缓存调优实战指南:从0到1根治性能瓶颈(一)
  • LeetCode 381: O(1) 时间插入、删除和获取随机元素 - 允许重复
  • 一次RedisOOM 排查
  • MongoDB迁移到KES实战全纪录(下):性能优化与实践总结
  • 【Java 开发日记】我们来讲一讲阻塞队列及其应用
  • 免费网站统计代码农业电商平台有哪些
  • 在长沙做网站需要多少钱手机网页禁止访问解除
  • IEEE754是什么?
  • [lc-rs] 树|建桥贪心
  • 状压DP:从入门到精通
  • Open-webui
  • AIDD - 前沿生物科技 自主决策实验 (Autonomous Experimentation) 的简述
  • 网络管理员教程(初级)第六版--第5章网络安全及管理
  • 怎么创建自己的公司网站开发公司总工程师职责
  • AI问答:rust自定义Drop如何手动释放内存?
  • JetPack 6.0 / Ubuntu 22.04 (L4T 36.x )一键彻底关闭自动更新脚本
  • 【展厅多媒体】展厅小知识:VR体感游戏推动展厅数字化转型
  • MySQL部署
  • ubuntu中为什么查看CPU的步进?查看命令是什么?
  • 【2025】libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
  • 广告设计网站免费樟树市建设局网站
  • Redis Jedis 快速入门
  • 未来之窗昭和仙君(三十一)全球化多国语言——东方仙盟筑基期
  • 面试常问笔记整理