YOLOv5 是由 Ultralytics 团队开发的目标检测模型,是 YOLO(You Only Look Once)系列的一个改进版。虽然 YOLOv5 没有被原始 YOLO 的作者 Joseph Redmon 所发布,但它由于其卓越的性能和易用性,已经成为最受欢迎的目标检测模型之一。
YOLOv5 的发布并未跟随传统的 YOLO 命名规范(YOLOv1、YOLOv2、YOLOv3、YOLOv4),而是由 Ultralytics 团队独立开发并命名为 YOLOv5,因此没有与前几代版本完全的学术关联。然而,YOLOv5 在速度、精度、易用性和可扩展性等方面做出了显著的改进,并获得了广泛的应用。
YOLOv5 的主要特点与改进
1. 结构设计
YOLOv5 在网络结构上沿用了 YOLO 系列的一些经典设计,但进行了改进和优化:
- Backbone:YOLOv5 采用了 CSPDarknet(CSPNet + Darknet)作为主干网络,替代了原来版本的 Darknet-53。CSPDarknet 更加高效,能够更好地处理不同尺度的特征。
- Neck:YOLOv5 使用了 PANet(Path Aggregation Network) 和 FPN(Feature Pyramid Network) 来改进多尺度特征融合,提升对小目标的检测能力。
- Head:YOLOv5 保留了原有的多尺度检测头(Heads),每个尺度负责检测不同大小的目标。
2. 改进的激活函数
YOLOv5 采用了 SiLU(Sigmoid Linear Unit) 激活函数(也叫 Swish),替代了传统的 ReLU 激活函数。SiLU 激活函数能够有效缓解梯度消失问题,并且提高了模型的非线性表达能力。
3. 训练增强(Data Augmentation)
YOLOv5 使用了更加丰富的数据增强技术,尤其是在输入图像的变换和扰动方面,包括:
- Mosaic 数据增强:将四张图像拼接成一张新的图像,帮助模型在不同尺度和背景下进行训练,提高模型的鲁棒性。
- MixUp 数据增强:通过将两张图片进行线性组合,增强模型对目标的辨识能力。
- Random Perspective:通过随机改变图像的透视效果,增强模型对场景的适应性。
4. 模型尺寸
YOLOv5 提供了多个不同尺寸的模型,分别是:
- YOLOv5s:小型模型,适合快速推理和轻量级部署。
- YOLOv5m:中型模型,精度和速度的平衡。
- YOLOv5l:大型模型,适用于需要更高精度的应用场景。
- YOLOv5x:超大型模型,具有最好的精度,但计算开销较大。
5. 训练和推理优化
YOLOv5 提供了许多优化措施,使得训练过程更加高效,并且推理速度更快:
- 自动学习率调整:YOLOv5 会自动调整学习率,提高训练速度并加速收敛。
- 多尺度训练:通过对不同尺寸的图片进行训练,模型能更好地适应不同分辨率的输入数据。
- 自动混合精度训练(AMP):通过混合精度训练(16位浮点和32位浮点结合使用),加速了训练过程,并减少了显存消耗。
6. PyTorch 实现
YOLOv5 完全使用 PyTorch 实现,相比之前版本的 Darknet,PyTorch 版本的 YOLOv5 具有更好的兼容性,支持更多的开发工具和平台,也能更轻松地进行自定义修改。
7. API 接口和社区支持
YOLOv5 提供了非常易用的接口,使得用户能够轻松地进行训练、评估、推理等操作。用户还可以通过 Ultralytics 提供的 GitHub 仓库获得更多的教程、文档和预训练模型。YOLOv5 的社区支持非常强大,提供了丰富的教程、讨论和代码贡献。
YOLOv5 的应用场景
-
实时目标检测
- YOLOv5 可以用于各种实时目标检测任务,如视频监控、自动驾驶、安防、无人机监控等。
-
无人驾驶
- YOLOv5 在自动驾驶领域中的应用十分广泛,能够实时检测道路上的行人、车辆、交通标志等重要目标。
-
工业检测
- 在工业生产中,YOLOv5 可用于检测产品的质量,如缺陷检测、包装检查等。
-
安防监控
- YOLOv5 可以应用于智能安防监控系统,帮助检测非法入侵、异常行为等。
-
医学图像分析
- YOLOv5 在医学图像分析中也有潜力,能够用于器官、病变区域的自动检测。
YOLOv5 的优势
-
易用性强
- YOLOv5 具有易于使用的 PyTorch 接口,支持开箱即用的训练、评估和推理代码。用户只需少量的配置即可开始使用。
-
高效性和实时性
- YOLOv5 继承了 YOLO 系列的实时检测能力,同时优化了模型结构,保持了较高的推理速度。
-
高精度
- 通过融合多种先进的技术(如数据增强、混合精度训练、特征融合),YOLOv5 实现了在精度和速度上的较好平衡。
-
灵活性
- YOLOv5 提供了多种不同大小的模型(YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x),用户可以根据自己的计算资源和需求选择合适的模型。
-
广泛的应用支持
- YOLOv5 支持多种硬件平台,如 CPU、GPU,甚至是边缘设备。它的普适性和强大的社区支持使得它适用于各种实际场景。
YOLOv5 的性能
- 推理速度(FPS):对于 YOLOv5s,在较小的模型上,推理速度可以达到非常高的值。具体推理速度依赖于硬件配置。
- COCO 数据集 mAP:
- YOLOv5s:约 38% mAP
- YOLOv5m:约 43% mAP
- YOLOv5l:约 46% mAP
- YOLOv5x:约 48% mAP
在不同规模的模型中,YOLOv5 在精度和推理速度之间保持了较好的平衡。
YOLOv5 的安装
官方源码仓库:https://github.com/ultralytics/yolov5
推荐博文:https://blog.youkuaiyun.com/qq_37541097/article/details/123594351
可以通过以下命令轻松安装 YOLOv5:
pip install yolov5
安装完成后,用户可以使用 yolov5
包中的命令行工具进行训练、评估、推理等任务。
YOLOv5 训练示例
python train.py --data coco.yaml --cfg yolov5s.yaml --weights yolov5s.pt --batch-size 16 --epochs 50
以上命令会基于 COCO 数据集训练 YOLOv5s 模型。
YOLOv5 在目标检测领域的广泛应用和卓越性能使其成为了许多实时检测任务的首选方案。