YOLOv8:Ultralytics 技术的进化之路
计算机视觉领域发展迅猛,其显著动力源于YOLO You Only Look Once)目标检测器家族的持续创新。该系列中最具影响力的两个版本是 YOLOv5 和 YOLOv8,均Ultralytics开发。YOLOv5 于2020年发布时YOLOv5 行业标准,以卓越的易用性和灵活性著称;而2023年问YOLOv8 通过架构突破性创新,重新定义了尖端性能标准。
本指南提供深入的技术对比,旨在帮助开发者、研究人员和工程师根据具体应用需求选择合适的模型,同时重点介绍该领域最新进展,例如YOLO26。
Ultralytics YOLOv5:行业标准
于2020年6月发布, YOLOv5 标志着人工智能普及化进程中的关键转折点。与主要采用C语言编写的早期版本(如Darknet)不同YOLOv5 首个原生 PyTorch 实现,使其对Python 群体具有非凡的易用性。
主要特性和架构
YOLOv5 速度、准确性和用户友好设计的平衡性而YOLOv5 。其架构相较于YOLOv4实现了多项关键改进:
- CSP暗网骨干网络:利用跨阶段部分连接来改善梯度流并减少参数。
- 自动学习锚框:在训练开始前,自动学习自定义数据集的最优锚框尺寸。
- 马赛克数据增强:一种训练技术,通过将四张图像组合成一张,增强模型detect 物体的能力,并提升其上下文泛化能力。
技术规格:
- 作者: Glenn Jocher
- 组织:Ultralytics
- 日期: 2020-06-26
- GitHub:ultralytics/yolov5
Ultralytics YOLOv8:定义尖端技术
于2023年1月推出, YOLOv8 标志着计算机视觉技术的重要飞跃。该算法摒弃了YOLOv5 采用的锚点检测机制YOLOv5 无锚点设计,不仅简化了学习过程,还显著提升了对不同物体形状的泛化能力。
架构创新
YOLOv8 多项现代技术,显著提升了速度与精度:
- 无锚点检测:无需手动配置锚框,直接预测目标中心。这减少了框预测数量,并加速了非最大抑制(NMS)过程。
- C2f模块:替代YOLOv5模块,提供更丰富的梯度流,并调整通道数量以实现更优的特征提取。
- 解耦头:将对象识别、分类和回归任务拆分为不同分支,使各任务更高效地收敛。
- 任务多样性:从底层设计开始,不仅支持检测,还支持实例分割、姿势估计 、分类以及 旋转框检测 (Oriented Bounding Box)。
技术规格:
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织:Ultralytics
- 日期: 2023-01-10
- GitHub:ultralytics/ultralytics
性能对比
在比较这两大性能强劲的模型时,可以明显看出:在同等硬件条件下YOLOv8 YOLOv5 准确率(mAP)和延迟YOLOv5 YOLOv8 优于YOLOv5 。然而YOLOv5 能力出众的模型,对于传统系统而言具有极高的运行效率。
下表展示了COCO 上的表现。粗体数值表示各类别中的最佳表现。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
分析
YOLOv8n Nano)在参数数量仅略有增加的情况下,实现了显著更高的mAP 37.3),远超YOLOv5n(28.0)。这种效率提升YOLOv8 现代边缘应用的YOLOv8 ——在这些场景中,准确率的每个百分点的提升都至关重要。
训练与生态系统
这两款模型都极大受益于Ultralytics ,该系统以易用性为核心设计理念。
简化培训工作流程
YOLOv5 YOLOv8 YOLOv5 过渡YOLOv8 引入了统一的CLI Python 支持所有任务。而YOLOv5 特定脚本(例如: train.py, detect.py),YOLOv8 后续模型如 YOLO26 采用模块化包结构。
YOLOv5 :
python train.py --img 640 --batch 16 --epochs 50 --data coco128.yaml --weights yolov5s.pt
YOLOv8 :
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Ultralytics 优势
两种模型Ultralytics 无缝集成。这使用户能够可视化训练过程、管理数据集,并一键将模型导出为ONNX等格式。 ONNX、 TensorRTCoreML 格式,CoreML 编写复杂的转换脚本。
应用场景与建议
选择这两种模型取决于您的具体限制条件,尽管对于新项目通常建议采用更新的模型。
YOLOv5的理想场景
- 遗留系统:已与YOLOv5 深度集成的项目,其迁移成本较高。
- 特定硬件支持:某些较早的边缘AI加速器可能配备了高度优化的内核,这些内核经过专门调优,可完美适配YOLOv5特定层结构。
- 简洁性:出于纯粹的教育目的,YOLOv5 中基于脚本的显式结构,对于初学者而言更易于逐行剖析。
YOLOv8 的理想应用场景
- 高精度要求:在医疗成像或质量检测等应用中,检测细微特征至关重要。
- 多任务学习:需要同时进行分割或姿势估计 检测的项目。
- 面向未来:开发者启动新项目时应选择YOLOv8 或更新版本),以确保长期支持及与最新部署工具的兼容性。
未来:Ultralytics YOLO26
YOLOv5 YOLOv8 优异,但该领域仍在持续发展。对于追求2026年巅峰性能的开发者,我们强烈推荐Ultralytics 。
为何选择YOLO26? YOLO26在v5和v8的基础上进行了革命性改进,显著提升了速度与效率:
- NMS:通过消除非最大抑制(NMS)的需求,YOLOv26简化了部署逻辑并降低了推理延迟,这一概念最早由 YOLOv10。
- MuSGD优化器:一种混合优化器,为视觉模型带来大型语言模型训练的稳定性,确保更快收敛。
- 针对Edge增强:通过移除DFL并CPU 特定CPU ,YOLO26在CPU上的运行速度较前代提升高达43%。
- 卓越的小目标检测:新型ProgLoss和STAL函数显著提升了对小型目标的检测性能,这对无人机影像和物联网应用至关重要。
结论
YOLOv5 计算机视觉发展史上都YOLOv8 里程碑意义。 YOLOv5 至今仍是众多现有应用中可靠的低内存工作马,以其训练过程中的稳定性和较低的资源占用而备受推崇。 YOLOv8则展现出更强的通用性、更高的精度,并采用更符合当前研究趋势的现代化架构设计。
对于那些追求尖端科技、目光投向未来的人们 YOLO26 或 YOLO11 将带来更显著的速度与精度提升。最终,强大的 Ultralytics 确保无论您选择何种模型,都能获得成功所需的工具、文档和社区支持。
代码示例:运行推理
Ultralytics 的简洁性。此代码可兼容YOLOv8、YOLO11和YOLO26模型。
from ultralytics import YOLO
# Load a pretrained model (choose yolov8n.pt or yolo26n.pt)
model = YOLO("yolov8n.pt")
# Run inference on an image from the web
results = model("https://ultralytics.com/images/bus.jpg")
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bbox outputs
masks = result.masks # Masks object for segmentation masks
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
有关将这些模型集成到工作流中的更多详细信息,请参阅我们的快速入门指南。