YOLO原理
You only live once?
1. 概述
YOLO(You Only Look Once)是一种将目标检测任务视为回归问题的深度学习算法。与传统的滑动窗口和区域提议方法不同,YOLO通过单一的神经网络直接从整个图像中预测边界框和类别概率,从而极大地提升了检测速度。
2. 网络结构
YOLO使用一个卷积神经网络(CNN)来处理输入图像,经过一系列卷积和池化层后,输出一个特征图。这个特征图会被分成SxS的网格,每个网格单元负责预测多个边界框和相应的置信度分数。
3. 预测流程
在每个网格单元中,YOLO会预测B个边界框及其置信度分数。此外,每个边界框会预测目标类别的概率。最终的输出是一个(S, S, Bx5 + C)维度的张量,其中5表示边界框的坐标及其置信度,C表示类别数。
4. 损失函数
YOLO的损失函数包括三个部分:边界框的定位误差、分类误差以及置信度误差。通过综合这些误差,YOLO可以在训练过程中同时优化目标的定位和分类性能。
5. 优缺点
优点:YOLO速度快,适合实时应用;端到端训练,简单易用。
缺点:在处理小物体和重叠物体时效果不佳,容易受到定位误差的影响。
6. 版本
目前YOLO版本仍以v5和v8为主,窍门:看是谁提出的,如果是大家就可以。
版本号 | 年份 | 主要贡献与特点 |
YOLOv1 | 2015 | 实时端到端物体检测,将检测视为回归问题,单次网络评估预测位置和类别。 |
YOLOv2 | 2016 | 引入批量归一化,高分辨率分类器,全卷积网络,能检测超过9000个类别。 |
YOLOv3 | 2018 | 使用更深的Darknet-53网络,引入特征金字塔网络提高多尺度目标检测能力。 |
YOLOv4 | 2020 | 结合CSPNet、PANet、SAM等技术,提高特征提取和检测效率。 |
YOLOv5 | 2020 | 使用Pytorch框架,不同大小模型版本适应不同环境,易用性和性能显著改进。 |
YOLOv6 | 2021 | 多种不同尺寸模型适应工业应用,继续在YOLO系列基础上改进。 |
YOLOv7 | 2022 | 架构变化和一系列免费包提高准确率,保持实时性。 |
YOLOv8 | 2023 | 新功能和改进,包括新的骨干网络、Anchor-Free检测头和新损失函数,提升性能和灵活性。 |
YOLOv9 | 2023 | 引入可编程梯度信息(PGI)和基于梯度路径规划的通用高效层聚合网络(GELAN)架构。 |
YOLOv10 | 2024 | 通过消除非最大抑制(NMS-Free)和优化各种模型组件,实现了最先进的性能。 |
YOLOv1至YOLOv3主要由Joseph Redmon及其合作者提出,而后续版本则由不同的研究者和团队负责开发。YOLOv4之后的版本,尤其是YOLOv5和YOLOv8,由Ultralytics公司开发和维护。
Baseline
1. 更改训练集
2. 更改模型
注意这个地方需要改
进一步的方法
1. 数据集增强
- 数据增强:在数据预处理阶段,对训练数据进行多种增强操作(如翻转、旋转、缩放、颜色抖动等),以提升模型的泛化能力,增强其对不同场景的鲁棒性。
2. 模型训练参数
- 学习率:通过学习率调度器动态调整学习率,控制模型更新的步长。
- 批次大小(batch size):设置合适的批次大小,确保有效利用内存且有足够的训练稳定性。
- 损失函数:选择合适的损失函数,如分类损失、边界框回归损失等,以优化模型在多任务中的表现。
3. 模型预测参数
conf
(置信度阈值):设置最小置信度,以过滤掉低置信度的检测结果。iou
(IoU阈值):用于非极大值抑制(NMS),减少重叠检测框。imgsz
(图像尺寸):调整输入图像大小,平衡检测精度和速度。device
(设备):指定推理设备(如CPU、GPU)以优化计算资源。augment
:启用推理时增强(TTA),增加检测鲁棒性。