YOLOv8 抛弃了前几代模型的 Anchor-Base。
机器之心报道,编辑:小舟、陈萍。
YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来,领域内的研究者们已经对 YOLO 进行了多次更新迭代,模型性能越来越强大。现在,YOLOv8 已正式发布。
YOLOv8 是由小型初创公司 Ultralytics 创建并维护的,值得注意的是 YOLOv5 也是由该公司创建的。
YOLOv8 项目地址:https://github.com/ultralytics/ultralytics
YOLOv8 模型介绍
与先前几个版本相比,YOLOv8 模型更快、更准确,同时为训练模型提供统一框架,以执行以下基本任务:
目标检测;实例分割;图像分类。下图是 YOLOv8 执行目标检测和实例分割的实际效果:
图源:https://www.youtube.com/watch?v=QgF5PHDCwHw
YOLOv8 的主要具有以下特点:
对用户友好的 API(命令行 + Python);模型更快更准确;模型能完成目标检测、实例分割和图像分类任务;与先前所有版本的 YOLO 兼容可扩展;模型采用新的网络主干架构;无锚(Anchor-Free)检测;模型采用新的损失函数。YOLOv8 还高效灵活地支持多种导出格式,并且可在 CPU 和 GPU 上运行该模型。YOLOv8 的整体架构如下图所示:
YOLOv8 架构。图源:GitHub 用户 RangeKing。
值得注意的是,YOLOv8 是一个无锚(Anchor-Free)模型。这意味着它直接预测对象的中心,而不是已知锚框的偏移量。由于减少了 box 预测的数量,因此这种新方法加速了一个非常复杂的推理步骤 —— 非极大值抑制 (NMS)。
图源:https://blog.roboflow.com/whats-new-in-yolov8/
YOLOv8 系列包含 5 个模型,其中 YOLOv8 Nano(YOLOv8n)是最小的模型,但速度最快;而 YOLOv8 Extra Large (YOLOv8x) 是最准确的模型,但速度最慢。
此外,YOLOv8 捆绑(bundle)了以下预训练模型:
在图像分辨率为 640 的 COCO 检测数据集上训练的目标检测检查点;在图像分辨率为 640 的 COCO 分割数据集上训练的实例分割检查点;在图像分辨率为 224 的 ImageNet 数据集上预训练的图像分类模型。从下图我们可以看到,YOLOv8 在目标检测和实例分割任务上的性能很好:
安装与使用
首先,我们需要用 git 克隆存储库:
然后用一行代码安装:
如何通过命令行界面(CLI)使用 YOLOv8 ?
Ultralytics 为 YOLOv8 提供了完整的命令行界面 (CLI) API 和 Python SDK,用于执行训练、验证和推理。要使用命令行界面,需要安装 ultralytics 包。
安装完所需的包后,用户就可以使用 yolo 命令进入 YOLOv8 CLI。下面是使用 yolo CLI 运行目标检测推理的示例:
代码中,task flag 可以接受三个参数:detect、classify、segment,分别对应三类任务。类似地,mode 也可以接受三个参数:train、val、predict。
如何在 Python API 中使用 YOLOv8?
你可以创建一个简单的 Python 文件,以导入 YOLO 模块并执行特定任务。
上面的代码表明,首先需要在 COCO128 数据集上训练 YOLOv8 Nano 模型,然后在验证集上对其进行评估,最后对样本图像进行预测。
目标检测的推理结果
下面的命令为使用 YOLOv8 Nano 模型对视频进行检测。
在配置有 GTX 1060 GPU 的笔记本电脑上,YOLOv8 Nano 的推理运行速度约为 105 FPS。
不过上述 YOLOv8 Nano 模型在一些画面中会把猫检测成狗。接下来可以使用 YOLOv8 Extra Large 模型对同一视频运行检测并检查输出。
在配置有 GTX 1060 GPU 的笔记本电脑上,YOLOv8 Extra Large 模型的推理速度约为 17 FPS。
尽管 YOLOv8 Extra Large 的错误分类稍微少了一些,但模型仍然在一些帧中检测错误。
实例分割的推理结果
使用 YOLOv8 进行实例分割同样简单,你只需在上面的命令中更改 task 和 model 名称。
因为这次将实例分割与目标检测相结合,所以这一次的平均 FPS 约为 13。
在输出中,分割映射看起来非常干净。即使猫在最后几帧藏在积木下面,模型也能够检测并进行图像分割。
图像分类的推理结果
最后,由于 YOLOv8 已经提供了预训练分类模型,你可以使用 yolov8x-cls 模型对同一视频进行分类。
默认情况下,视频中标注了模型预测的前 5 个类。用户无需任何后处理,注释直接匹配 ImageNet 类名。
YOLO 不同版本之间的对比
相比于之前的 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 的发布,其在计算机视觉领域的重要性不言而喻,目标检测、图像分割以及图像分类任务都将达到新的水平。
参考链接:https://learnopencv.com/ultralytics-yolov8/
https://blog.roboflow.com/whats-new-in-yolov8/
https://github.com/ultralytics/ultralytics
暂无评论内容