【欢迎关注编码小哥,学习更多实用的编程方法和技巧】
YOLOv8 是YOLO 系列实时物体检测器的新的迭代产品,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。
主要功能
- 先进的骨干和颈部架构: YOLOv8 采用了最先进的骨干和颈部架构,从而提高了特征提取和物体检测性能。
- 无锚分体式Ultralytics 头: YOLOv8 采用无锚分体式Ultralytics 头,与基于锚的方法相比,它有助于提高检测过程的准确性和效率。
- 优化精度与速度之间的权衡: YOLOv8 专注于保持精度与速度之间的最佳平衡,适用于各种应用领域的实时目标检测任务。
- 各种预训练模型: YOLOv8 提供一系列预训练模型,以满足各种任务和性能要求,从而更容易为您的特定用例找到合适的模型。
支持的任务和模式
YOLOv8 系列提供多种模型,每种模型都专门用于计算机视觉中的特定任务。这些模型旨在满足从物体检测到实例分割、姿态/关键点检测、定向物体检测和分类等更复杂任务的各种要求。
YOLOv8 系列的每个变体都针对各自的任务进行了优化,以确保高性能和高精确度。此外,这些模型还兼容各种操作模式,包括推理、验证、训练和输出,便于在部署和开发的不同阶段使用。
模型 | 文件名 | 任务 | 推论 | 验证 | 培训 | 出口 |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt | 检测 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt | 实例分割 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-姿势 | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt | 姿势/关键点 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt | 定向检测 | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt | 分类 | ✅ | ✅ | ✅ | ✅ |
本表概述了YOLOv8 模型的各种变体,重点介绍了它们在特定任务中的适用性以及与推理、验证、训练和输出等各种操作模式的兼容性。它展示了YOLOv8 系列的多功能性和坚固性,使其适用于计算机视觉领域的各种应用。
性能指标
检测(COCO)
模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
检测(开放图像)
模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
细分(COCO)
模型 | 尺寸 (像素) | mAPbox 50-95 | mAPmask 50-95 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
分类(ImageNet)
模型 | 尺寸 (像素) | acc top1 | acc top5 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) at 640 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 4.3 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 13.5 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 42.7 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 99.7 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 154.8 |
姿势(COCO)
模型 | 尺寸 (像素) | 50-95 | mAPpose 50 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-姿势 | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-姿势 | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-姿势 | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-姿势 | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-姿势 | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
OBB
模型 | 尺寸 (像素) | mAPtest 50 | 速度 CPU ONNX (毫秒) | 速度 A100 TensorRT (毫秒) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
使用示例
YOLOv8 训练和推理示例:
PyTorch 训练 *.pt
模型以及配置 *.yaml
文件可以传递给 YOLO()
类在python 中创建模型实例:
from ultralytics import YOLO#加载预训练模型YOLOv8n
model = YOLO("yolov8n.pt")#显示模型信息
model.info()#基于COCO8数据集训练100轮
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)# 利用YOLOv8n模型预测图片'bus.jpg'
results = model("path/to/bus.jpg")
常见问题
YOLOv8 是什么?它与以前的YOLO 版本有何不同?
YOLOv8 是Ultralytics YOLO 系列的最新版本,旨在通过先进的功能提高实时目标检测性能。与早期版本不同的是,YOLOv8 采用了无锚点分离式Ultralytics 头、最先进的骨干和颈部结构,并优化了精度与速度的权衡,是各种应用的理想之选。更多详情,请查看概述和主要功能部分。
如何将YOLOv8 用于不同的计算机视觉任务?
YOLOv8 支持多种计算机视觉任务,包括物体检测、实例分割、姿态/关键点检测、定向物体检测和分类。每个模型变体都针对其特定任务进行了优化,并与推理、验证、训练和导出等各种操作模式兼容。更多信息,请参阅 "支持的任务和模式"部分。
YOLOv8 模型的性能指标是什么?
YOLOv8 模型在各种基准数据集上都达到了最先进的性能。例如,YOLOv8n 模型在 COCO 数据集上的 mAP(平均精度)为 37.3,在 A100TensorRT 上的速度为 0.99 毫秒。每个模型变体在不同任务和数据集上的详细性能指标见性能指标部分。
如何训练YOLOv8 模型?
可使用Python训练YOLOv8 模型,以下是使用 COCO 预训练的YOLOv8 模型在 COCO8 数据集上训练模型 100 个epoch 的示例:
from ultralytics import YOLO#加载预训练YOLOv8n模型
model = YOLO("yolov8n.pt")#基于COCO8数据集训练100轮
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
能否对YOLOv8 型号进行性能基准测试?
可以对YOLOv8 机型在各种导出格式下的速度和准确性进行性能基准测试。可以使用PyTorch,ONNX,TensorRT 等进行基准测试。下面是使用Python进行基准测试的命令示例:
from ultralytics.utils.benchmarks import benchmark#在GPU上压测
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)