YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程

YOLOv8 Ultralytics:最先进的 YOLO 模型

什么是 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) 是其中最准确但最慢的。

YOLOv8n YOLOv8s YOLOv8m YOLOv8l YOLOv8x

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,用于执行训练、验证和推理。

要使用yoloCLI,我们需要安装ultralytics包。

pip install  ultralytics

如何使用命令行界面 (CLI) 使用 YOLOv8?

安装必要的包后,我们可以使用命令访问 YOLOv8 CLI yolo。以下是使用yoloCLI 运行对象检测推理的示例。

yolo task=detect \ 
mode=predict \ 
model=yolov8n.pt \ 
source='image.jpg'

task标志可以接受三个参数:detectclassifysegment。同样,模式可以是trainval或之一predict。我们也可以像export导出经过训练的模型时一样传递模式。

下图显示了所有可能的yoloCLI 标志和参数。

如何使用 Python API 使用 YOLOv8?

我们还可以创建一个简单的 Python 文件,导入 YOLO 模块并执行我们选择的任务。

from ultralytics import YOLO 

model = YOLO('yolov8n.pt') # 加载预训练的 YOLOv8n 模型

model.train(data='coco128.yaml') # 训练模型
model.val() # 在验证集模型上评估模型性能
model.predict(source='https://ultralytics.com/images/bus.jpg') # 对图像进行预测
model.export(format='onnx') # 将模型导出为 ONNX 格式


例如,上述代码首先会在COCO128数据集上训练YOLOv8 Nano模型,在验证集上进行评估,并对样本图像进行预测。

让我们使用yoloCLI 并使用对象检测、实例分割和图像分类模型进行推理。

物体检测的推理结果

以下命令使用 YOLOv8 Nano 模型对视频运行检测。

yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True

推理在笔记本电脑 GTX 1060 GPU 上以接近105 FPS 的速度运行。我们得到以下输出。

B站视频:https://www.bilibili.com/video/BV1f8411g7pm/?vd_source=c2ba74190a7c36af02fb050ed99d3100

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。

Clip 2. 使用 YOLOv8 超大模型进行检测推理。

虽然这次错误分类稍微少一些,但模型仍然在一些帧中错误地检测到长凳。

实例分割的推理结果

使用 YOLOv8 实例分割模型运行推理同样简单。我们只需要更改上面命令中的taskmodel名称。

yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True

因为实例分割与对象检测相结合,所以这次的平均 FPS 约为 13。

Clip 3. 使用 YOLOv8 超大模型的分割推理。

分割图在输出中看起来非常干净。即使猫在最后几帧中躲在方块下,模型也能够检测并分割它。

图像分类的推理结果

最后,由于 YOLOv8 已经提供了预训练的分类模型,让我们使用该yolov8x-cls模型对同一视频进行分类推理。这是存储库提供的最大分类模型。

yolo task=classify mode=predict model=yolov8x-cls.pt ource='input/video_3.mp4' show=True

Clip 4. 使用 YOLOv8 超大模型进行分类推理。

默认情况下,视频使用模型预测的前 5 个类进行注释。在没有任何后处理的情况下,注释直接匹配 ImageNet 类名。

YOLOv8 对比 YOLOv7 对比 YOLOv6 对比 YOLOv5

与之前的 YOLO 模型相比,YOLOv8 模型的表现似乎要好得多。不仅是 YOLOv5 模型,YOLOv8 也领先于 YOLOv7 和 YOLOv6 模型。

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第1张图片YOLOv8 与其他 YOLO 模型的对比。

与以 640 图像分辨率训练的其他 YOLO 模型相比,所有 YOLOv8 模型在参数数量相似的情况下都具有更好的吞吐量。

现在,让我们详细了解最新的 YOLOv8 模型与 Ultralytics 的 YOLOv5 模型的性能对比。下表显示了 YOLOv8 和 YOLOv5 之间的综合比较。

整体比较

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第2张图片YOLOv8 模型与 YOLOv5 模型的对比。

物体检测比较

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第3张图片YOLOv8 与 YOLOv5 对象检测模型。

实例分割比较

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第4张图片YOLOv8 与 YOLOv5 实例分割模型。

图像分类比较

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第5张图片YOLOv8 与 YOLOv5 图像分类模型。

很明显,除了其中一个分类模型外,最新的 YOLOv8 模型与 YOLOv5 相比要好得多。

YOLOv8目标检测模型的演进

下图显示了 YOLO 对象检测模型的时间线以及 YOLOv8 的演变过程。

YOLOv8 Ultralytics:最先进的 YOLO 模型——简介+实战教程_第6张图片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。我们介绍了新模型、它们的性能以及软件包附带的命令行界面。除此之外,我们还对视频进行了推理。

更多前沿技术、有趣项目欢迎关注:猛男技术控

你可能感兴趣的:(YOLO,程序人生)