使用YOLOv8做目标检测、实例分割和图像分类

共 3246字,需浏览 7分钟

 ·

2023-02-04 08:24

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达

导  读

    本文主要介绍YOLOv8及使用它做目标检测、实例分割和图像分类演示,仅供参考。


      

背景介绍

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。

    利用以前的 YOLO 版本,YOLOv8模型更快、更准确,同时为训练模型提供统一框架,以执行:

    • 物体检测

    • 实例分割

    • 图像分类

    下面是使用YOLOv8做目标检测和实例分割的演示视频:


      

YOLOv8的新特性与可用模型

  Ultralytics为YOLO模型发布了一个全新的存储库。它被构建为 用于训练对象检测、实例分割和图像分类模型的统一框架。

    以下是有关新版本的一些主要功能:

    • 用户友好的 API(命令行 + Python)。

    • 更快更准确。

    • 支持:

      • 物体检测

      • 实例分割

      • 图像分类

    • 可扩展到所有以前的版本。

    • 新骨干网络。

    • 新的无锚头。

    • 新的损失函数。

    YOLOv8 还高效灵活地支持多种导出格式,并且该模型可以在 CPU 和 GPU 上运行。



    YOLOv8 模型的每个类别中有五个模型用于检测、分割和分类。YOLOv8 Nano 是最快和最小的,而 YOLOv8 Extra Large (YOLOv8x) 是其中最准确但最慢的。

    YOLOv8 捆绑了以下预训练模型:

    • 在图像分辨率为 640 的 COCO 检测数据集上训练的对象检测检查点。

    • 在图像分辨率为 640 的 COCO 分割数据集上训练的实例分割检查点。

    • 在图像分辨率为 224 的 ImageNet 数据集上预训练的图像分类模型。

如下是使用YOLOv8x做目标检测和实例分割模型的输出:


      

如何使用YOLOv8

    要充分发挥YOLOv8的潜力,需要从存储库和ultralytics包中安装要求。要安装要求,我们首先需要克隆存储库。
git clone https://github.com/ultralytics/ultralytics.git
pip install -r requirements.txt

    在最新版本中,Ultralytics YOLOv8提供了完整的命令行界面 (CLI) API 和 Python SDK,用于执行训练、验证和推理。要使用yoloCLI,我们需要安装ultralytics包。

pip install ultralytics
【1】如何使用命令行界面 (CLI) 使用 YOLOv8?
    安装必要的包后,我们可以使用命令访问 YOLOv8 CLI yolo。以下是使用yoloCLI 运行对象检测推理的示例。
yolo task=detect \mode=predict \model=yolov8n.pt \source="image.jpg"

    该task标志可以接受三个参数:detect、classify和segment。同样,模式可以是train、val或之一predict。我们也可以像export导出经过训练的模型时一样传递模式。

【2】如何通过Python API使用YOLOv8?
    我们还可以创建一个简单的Python文件,导入YOLO模块并执行我们选择的任务。
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # load a pretrained YOLOv8n model
model.train(data="coco128.yaml") # train the modelmodel.val() # evaluate model performance on the validation setmodel.predict(source="https://ultralytics.com/images/bus.jpg") # predict on an imagemodel.export(format="onnx") # export the model to ONNX format

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

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


【3】目标检测的推理结果
    以下命令使用YOLOv8 Nano模型对视频运行检测。
yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True
    推理在笔记本电脑GTX1060 GPU上以接近105 FPS的速度运行。我们得到以下输出:

    YOLOv8 Nano 模型在几帧中将猫混淆为狗。让我们使用 YOLOv8 Extra Large 模型对同一视频运行检测并检查输出:
yolo task=detect mode=predict model=yolov8x.pt source='input/video_3.mp4' show=True
    Extra Large模型在GTX1060 GPU上的平均运行速度为 17 FPS。


【4】例分割的推理结果
    使用YOLOv8 实例分割模型运行推理同样简单。我们只需要更改上面命令中的task和model名称。
yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True
    因为实例分割与对象检测相结合,所以这次的平均 FPS 约为 13。

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

【5】图像分类推理结果
    最后,由于YOLOv8已经提供了预训练的分类模型,让我们使用该yolov8x-cls模型对同一视频进行分类推理。这是存储库提供的最大分类模型。
yolo task=classify mode=predict model=yolov8x-cls.pt source='input/video_3.mp4' show=True

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


本文仅做学术分享,如有侵权,请联系删文。

—THE END—

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报