什么是 YOLOv8?
YOLOv8 是来自 Ultralytics 的最新的基于 YOLO 的对象检测模型系列,提供最先进的性能。
利用以前的 YOLO 版本, YOLOv8 模型更快、更准确 ,同时为训练模型提供统一框架,以执行
- 物体检测
- 实例分割
- 图像分类
在撰写本文时,许多功能尚未添加到 Ultralytics YOLOv8 存储库中。这包括训练模型的完整导出功能集。此外,Ultralytics 将在 Arxiv 上发布一篇论文,将 YOLOv8 与其他最先进的视觉模型进行比较。
YOLOv8 的新特性
Ultralytics 为 YOLO 模型发布了一个全新的存储库。它被构建为 用于训练对象检测、实例分割和图像分类模型的统一框架。
以下是有关新版本的一些主要功能:
- 用户友好的 API(命令行 + Python)
- 更快更准确
- 支持
- 物体检测
- 实例分割
- 图像分类
- 可扩展到所有以前的版本
- 新骨干网络
- 新的 Anchor-Free head
- 新的损失函数
YOLOv8 还高效灵活地支持多种导出格式,并且该模型可以在 CPU 和 GPU 上运行。
YOLOv8 中可用的模型
YOLOv8 模型的每个类别中有五个模型用于检测、分割和分类。YOLOv8 Nano 是最快和最小的,而 YOLOv8 Extra Large (YOLOv8x) 是其中最准确但最慢的。
<table><tbody><tr><td>YOLOv8n</td><td>YOLOv8s</td><td>YOLOv8m</td><td>YOLOv8l</td><td>YOLOv8x</td></tr></tbody></table>
YOLOv8 捆绑了以下预训练模型:
- 在图像分辨率为 640 的 COCO 检测数据集上训练的对象检测检查点。
- 在图像分辨率为 640 的 COCO 分割数据集上训练的实例分割检查点。
- 在图像分辨率为 224 的 ImageNet 数据集上预训练的图像分类模型。
让我们看一下使用 YOLOv8x 检测和实例分割模型的输出。
如何使用 YOLOv8?
要充分发挥 YOLOv8 的潜力,需要从存储库和ultralytics
包中安装要求。
要安装要求,我们首先需要克隆存储库。
git clone https://github.com/ultralytics/ultralytics.git
接下来,安装requirements
pip install -r requirements.txt
在最新版本中,Ultralytics YOLOv8 提供了完整的命令行界面 (CLI) API 和 Python SDK,用于执行训练、验证和推理。
要使用yolo
CLI,我们需要安装ultralytics
包。
pip install ultralytics
如何使用命令行界面 (CLI) 使用 YOLOv8?
安装必要的包后,我们可以使用命令访问 YOLOv8 CLI yolo
。以下是使用yolo
CLI 运行对象检测推理的示例。
yolo task=detect \
mode=predict \
model=yolov8n.pt \
source='image.jpg'
该task
标志可以接受三个参数:detect
、classify
和segment
。同样,模式可以是train
、val
或之一predict
。我们也可以像export
导出经过训练的模型时一样传递模式。
下图显示了所有可能的yolo
CLI 标志和参数。
如何使用 Python API 使用 YOLOv8?
我们还可以创建一个简单的 Python 文件,导入 YOLO 模块并执行我们选择的任务。
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # 加载预训练的 YOLOv8n 模型
model.train(data='coco128.yaml') # 训练模型model.val() # 在验证集
模型
上评估模型性能.predict(source='https://ultralytics.com/images/bus.jpg') # 对图像进行预测
model.export(format='onnx') # 将模型导出为 ONNX 格式
例如,上述代码首先会在COCO128数据集上训练YOLOv8 Nano模型,在验证集上进行评估,并对样本图像进行预测。
让我们使用yolo
CLI 并使用对象检测、实例分割和图像分类模型进行推理。
物体检测的推理结果
以下命令使用 YOLOv8 Nano 模型对视频运行检测。
yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True
推理在笔记本电脑 GTX 1060 GPU 上以接近105 FPS 的速度运行。我们得到以下输出。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-nano-detection-inference-1.mp4" control></video>
Clip 1. 使用 YOLOv8 Nano 模型进行检测推理。
YOLOv8 Nano 模型在几帧中将猫混淆为狗。让我们使用 YOLOv8 Extra Large 模型对同一视频运行检测并检查输出。
yolo task=detect mode=predict model=yolov8x.pt source='input/video_3.mp4' show=True
Extra Large 模型在 GTX 1060 GPU 上的平均运行速度为 17 FPS。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-x-detection-inference.mp4" control></video>
Clip 2. 使用 YOLOv8 超大模型进行检测推理。
虽然这次错误分类稍微少一些,但模型仍然在一些帧中错误地检测到长凳。
实例分割的推理结果
使用 YOLOv8 实例分割模型运行推理同样简单。我们只需要更改上面命令中的task
和model
名称。
yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True
因为实例分割与对象检测相结合,所以这次的平均 FPS 约为 13。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8x-segment.mp4" control></video>
Clip 3. 使用 YOLOv8 超大模型的分割推理。
分割图在输出中看起来非常干净。即使猫在最后几帧中躲在方块下,模型也能够检测并分割它。
图像分类的推理结果
最后,由于 YOLOv8 已经提供了预训练的分类模型,让我们使用该yolov8x-cls
模型对同一视频进行分类推理。这是存储库提供的最大分类模型。
yolo task=classify mode=predict model=yolov8x-cls.pt ource='input/video_3.mp4' show=True
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-x-cls-1.mp4" control></video>
Clip 4. 使用 YOLOv8 超大模型进行分类推理。
默认情况下,视频使用模型预测的前 5 个类进行注释。在没有任何后处理的情况下,注释直接匹配 ImageNet 类名。
YOLOv8 对比 YOLOv7 对比 YOLOv6 对比 YOLOv5
与之前的 YOLO 模型相比,YOLOv8 模型的表现似乎要好得多。不仅是 YOLOv5 模型,YOLOv8 也领先于 YOLOv7 和 YOLOv6 模型。
YOLOv8 与其他 YOLO 模型的对比。与以 640 图像分辨率训练的其他 YOLO 模型相比,所有 YOLOv8 模型在参数数量相似的情况下都具有更好的吞吐量。
现在,让我们详细了解最新的 YOLOv8 模型与 Ultralytics 的 YOLOv5 模型的性能对比。下表显示了 YOLOv8 和 YOLOv5 之间的综合比较。
整体比较
YOLOv8 模型与 YOLOv5 模型的对比。物体检测比较
YOLOv8 与 YOLOv5 对象检测模型。实例分割比较
YOLOv8 与 YOLOv5 实例分割模型。图像分类比较
YOLOv8 与 YOLOv5 图像分类模型。很明显,除了其中一个分类模型外,最新的 YOLOv8 模型与 YOLOv5 相比要好得多。
YOLOv8目标检测模型的演进
下图显示了 YOLO 对象检测模型的时间线以及 YOLOv8 的演变过程。
YOLOv8目标检测模型的演进。YOLOv1
YOLO 目标检测的第一个版本,即 YOLOv1,由 Joseph Redmon 等人发布。2015 年。它是第一个单阶段目标检测 (SSD) 模型,它催生了 SSD 和所有后续的 YOLO 模型。
YOLO 9000(v2)
YOLOv2,也称为 YOLO 9000,由 YOLOv1 的原作者 Joseph Redmon 发布。它通过引入锚框的概念和更好的骨干网 Darknet-19 改进了 YOLOv1。
YOLOv3
2018 年,Joseph Redmon 和 Ali Farhadi 发表了 YOLOv3。它与其说是架构上的飞跃,不如说是技术报告,但仍然是 YOLO 家族的重大改进。YOLOv3 使用 Darknet-53 主干、残差连接、更好的预训练和图像增强技术带来改进。
Ultralytics YOLO 对象检测模型
YOLOv3 之前的所有 YOLO 目标检测模型都是使用 C 编程语言编写的,并使用 Darknet 框架。新手发现很难遍历代码库和微调模型。
与 YOLOv3 大约同时,Ultralytics 发布了第一个使用 PyTorch 框架实现的 YOLO (YOLOv3)。对于迁移学习,它也更容易访问和使用。
在发布 YOLOv3 后不久,Joseph Redmon 离开了计算机视觉研究社区。YOLOv4(由 Alexey 等人开发)是最后一个用 Darknet 编写的 YOLO 模型。之后,YOLO object detections 出现了很多次。Scaled YOLOv4、YOLOX、PP-YOLO、YOLOv6 和 YOLOv7 是其中一些突出的。
在 YOLOv3 之后,Ultralytics 还发布了 YOLOv5,它比所有其他 YOLO 模型更好、更快、更易于使用。
截至目前(2023 年 1 月),Ultralytics 在ultralytics存储库下发布了 YOLOv8,这可能是迄今为止最好的 YOLO 模型。
结论
在本文中,我们探讨了最新一期的 YOLO 模型,即 YOLOv8。我们介绍了新模型、它们的性能以及软件包附带的命令行界面。除此之外,我们还对视频进行了推理。
本文由mdnice多平台发布