YOLOv8及其改进系列(一) 初探YOLOv8


What is YOLOv8? The Ultimate Guide. 原文

YOLOv8官方文档

模型结构和代码


Code:ultralytics/ultralytics

官方网址:https://docs.ultralytics.com/

随着 YOLOv8 的发布,计算机视觉领域取得了进步,该模型定义了对象检测实例分割的新技术水平。

除了模型架构本身的改进之外,YOLOv8还通过PIP包向开发人员介绍了一个新的友好界面,以使用YOLO模型。

在这篇博文中,我们将深入探讨 YOLOv8 在计算机视觉领域的重要性,将其与类似模型的准确性进行比较,并讨论 YOLOv8 GitHub 存储库中的最新变化。让我们开始!

什么是 YOLOv8?

YOLOv8 是最新最先进的 YOLO 模型,可用于对象检测、图像分类和实例分割任务。YOLOv8 由 Ultralytics 开发,该公司还创建了具有影响力和行业定义的 YOLOv5 模型。与 YOLOv5 相比,YOLOv8 包含大量架构和开发人员体验更改和改进。

截至撰写本文时,YOLOv8 正在积极开发中,Ultralytics 正在开发新功能并响应社区的反馈。事实上,当 Ultralytics 发布模型时,它会得到长期支持:该组织与社区合作,使模型达到最佳状态。

YOLO 如何成长为 YOLOv8

YOLO(You Only Look Once)系列模型在计算机视觉界名声大噪。YOLO 的名气归因于其在保持较小模型尺寸的同时具有相当高的准确性。YOLO 模型可以在单个 GPU 上进行训练,这使得开发人员可以廉价地使用它。机器学习从业者可以以低成本将其部署在边缘硬件或云端。

YOLO 自 Joseph Redmond 于 2015 年首次推出以来一直受到计算机视觉社区的培育。在早期(版本 1-4),YOLO 在 Redmond 编写的名为 Darknet 的自定义深度学习框架中以 C 代码进行维护。

YOLOv8 作者,Ultralytics 的 Glenn Jocher,在 PyTorch(Facebook 的深度学习框架)中跟踪了 YOLOv3 存储库。随着影子仓库中的训练变得更好,Ultralytics 最终推出了自己的模型:YOLOv5

由于其灵活的 Pythonic 结构,YOLOv5 迅速成为世界上最 SOTA 的代码仓库。这种结构允许社区发明新的建模改进,并使用类似的 PyTorch 方法在github仓库中快速共享它们。

除了强大的模型基础之外,YOLOv5 维护者还致力于支持围绕该模型的健康的软件生态系统。他们积极解决问题并根据社区的需求推动仓库的功能。

在过去两年中,YOLOv5 PyTorch 仓库中衍生出了各种模型,包括 Scaled-YOLOv4YOLORYOLOv7。世界各地出现了基于 PyTorch 的其他模型,例如 YOLOXYOLOv6。一路走来,每个 YOLO 模型都带来了新的 SOTA 技术,不断推动模型的准确性和效率。

在过去的六个月中,Ultralytics 致力于研究 YOLO 的最新 SOTA 版本 YOLOv8。 YOLOv8于2023年1月10日上线。

为什么我应该使用 YOLOv8?

以下是您应该考虑将 YOLOv8 用于下一个计算机视觉项目的几个主要原因:

● YOLOv8在COCO和Roboflow 100上测得的准确率很高。
● YOLOv8 具有许多开发人员方便的功能,从易于使用的 CLI 到结构良好的 Python 包。
● YOLO 周围有一个庞大的社区,围绕 YOLOv8 模型的社区也在不断壮大,这意味着计算机视觉圈子里有很多人在你需要指导时可以为您提供帮助。

YOLOv8在COCO上实现了很高的准确性。例如,YOLOv8m模型 - 中等模型 - 在COCO上测量时达到50.2%的mAP。当针对Roboflow 100(专门评估各种任务特定域上的模型性能的数据集)进行评估时,YOLOv8的得分明显优于YOLOv5。本文后面的性能分析中提供了有关此内容的更多信息。

此外,YOLOv8 中方便开发人员的功能也很重要。与其他模型相反,任务被拆分到您可以执行的许多不同 Python 文件中,YOLOv8 带有一个 CLI,使训练模型更加直观。这是对 Python 包的补充,该包提供了比以前的模型更无缝的编码体验。

当您考虑使用模型时,YOLO 周围的社区值得注意。许多计算机视觉专家都知道 YOLO 及其工作原理,并且网上有很多关于在实践中使用 YOLO 的指导。尽管 YOLOv8 在撰写本文时是新的,但网上有许多指南可以提供帮助。

让我们深入了解架构以及 YOLOv8 与以前的 YOLO 模型的不同之处。

YOLOv8 架构:深入探讨

YOLOv8尚未发表论文,因此我们缺乏对其创建过程中进行的直接研究方法和消融研究的直接见解。话虽如此,我们分析了代码库和有关模型的可用信息,以开始记录 YOLOv8 中的新功能。

如果您想自己查看代码,请查看 YOLOv8 库,然后查看此代码差异以了解某些研究是如何完成的。

在这里,我们快速总结了有影响力的模型更新,然后我们将看看模型的评估,这是不言而喻的。

GitHub用户RangeKing制作的下图显示了网络架构的详细可视化。

img

YOLOv8 架构,由 GitHub 用户 RangeKing 制作的可视化

无锚检测

YOLOv8 是一个无锚模型。这意味着它直接预测对象的中心,而不是已知锚框的偏移量。

img

YOLO 中锚框的可视化

锚框是早期 YOLO 模型中众所周知的棘手部分,因为它们可能代表目标基准框的分布,但不能代表自定义数据集的分布。

img

YOLOv5的检测头,以 netron.app 可视化

无锚点检测减少了盒预测的数量,从而加快了非最大值抑制 (NMS) 的速度,这是一个复杂的后处理步骤,需要在推理后筛选候选检测。

img

YOLOv8的检测头,以 netron.app 可视化

新卷积

Stem 的第一个 6x6 卷积被 3x3 替换,主要构建块已更改,C2f 替换了 C3 。该模块总结如下图,其中“f”是特征数,“e”是扩展率,CBS是后面由Conv、BatchNorm和SiLU组成的块。

在 C2f 中,Bottleneck(具有残差连接的两个 3x3 卷积的名称)的所有输出都被连接起来。而在 C3 中,仅使用最后一个Bottleneck 的输出。

img

新的 YOLOv8 C2f模块

Bottleneck与 YOLOv5 中的相同,但第一个卷积的内核大小从 1x1 更改为 3x3。从这些信息中,我们可以看到YOLOv8开始恢复到2015年定义的ResNet块。

在neck部分,特征直接连接,而不强制使用相同的通道尺寸。这减少了参数数量和张量的整体大小。

关闭马赛克增强

深度学习研究倾向于关注模型架构,但 YOLOv5 和 YOLOv8 中的训练例程是它们成功的重要组成部分。

YOLOv8 在在线训练期间增强图像。在每个时期,模型看到的图像与所提供的图像略有不同

其中一种增强称为马赛克增强。这涉及将四张图像拼接在一起,迫使模型学习新位置、部分遮挡以及针对不同周围像素的对象。

img

棋盘照片的马赛克增强

然而,经验表明,如果在整个训练过程中进行这种增强,则会降低性能。在最后十个训练周期中关闭它是有利的。

这种变化体现了 YOLOv5 库和 YOLOv8 研究中对 YOLO 建模的认真关注。

YOLOv8 准确性改进

YOLOv8 研究的主要动机是对 COCO 基准的实证评估。随着网络和训练例程的每个部分进行调整,都会运行新的实验来验证更改对 COCO 建模的影响。

YOLOv8在COCO上的精度

COCO(Common Objects in Context:上下文中的常见对象)是评估对象检测模型的行业标准基准。在比较 COCO 上的模型时,我们会查看 mAP 值和 FPS 测量值来衡量推理速度。应以相似的推理速度比较模型。

下图显示了 YOLOv8 在 COCO 上的准确性,使用的是 Ultralytics 团队收集并在其 YOLOv8 README 中发布的数据:

img

YOLOv8在COCO上的评估

截至撰写本文时,YOLOv8 COCO 的准确性对于推理延迟相当的模型来说是最先进的。

RF100 精度

在 Roboflow,我们从 Roboflow Universe(包含超过 100,000 个数据集的存储库)中抽取了 100 个样本数据集,以评估模型推广到新领域的效果。我们的基准测试是在英特尔的支持下开发的,是为计算机视觉从业者提供的基准测试,旨在为以下问题提供更好的答案:“该模型在我的自定义数据集上的工作效果如何?”

我们在 RF100 基准测试中评估了 YOLOv8 以及 YOLOv5 和 YOLOv7,以下箱形图显示了每个模型的 mAP@.50。

我们运行每个模型的small版本 100 个 epoch,我们使用单个种子运行一次,因此由于梯度抽签,我们对这个结果持保留态度。

下面的箱形图告诉我们,与 Roboflow 100 基准相比,YOLOv8 的异常值更少,整体 mAP 更好。

img

YOLO 对 RF100 的 mAP@.50

以下条形图显示了每个 RF100 类别的平均 mAP@.50。同样,YOLOv8 的性能优于以前的所有型号。

img

YOLO 与 RF100 类别的平均 mAP@.50

相对于 YOLOv5 评估,YOLOv8 模型在每个数据集上产生相似的结果,或者显着改善结果。

YOLOv8 仓库和 PIP 包

YOLOv8 代码存储库旨在成为社区使用和迭代模型的地方。由于我们知道该模型将不断改进,因此我们可以将初始的 YOLOv8 模型结果作为基准,并期望随着未来的改进,将发布新的迷你版本。

我们期望的最好结果是研究人员开始在 Ultralytics 仓库的基础上开发他们的网络。研究一直在 YOLOv5 的分支中进行,但如果模型在一个位置制作并最终合并到主线中会更好。

YOLOv8 仓库布局

YOLOv8 模型使用与 YOLOv5 类似的代码,并具有新的结构,其中相同的代码例程支持分类、实例分割和对象检测任务类型。

模型仍使用相同的 YOLOv5 YAML 格式进行初始化,数据集格式也保持不变。

img

YOLOv8 CLI

ultralytics 包通过 CLI 进行分发。这对于许多 YOLOv5 用户来说是熟悉的,其中核心训练、检测和导出交互也是通过 CLI 完成的。

yolo task=detect mode=val model={HOME}/runs/detect/train/weights/best.pt data={dataset.location}/data.yaml

您可以传递 task 如:[detect、classify、segment] ,mode 如:[train、predict、val、export] ,model如:作为未初始化的 .yaml 或之前训练的 .pt 文件。

YOLOv8 Python 包

除了可用的 CLI 工具外,YOLOv8 现在还作为 PIP 包分发。这使得本地开发变得有点困难,但解锁了将 YOLOv8 编织到 Python 代码中的所有可能性。

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Use the model
results = model.train(data="coco128.yaml", epochs=3)  # train the model
results = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
success = YOLO("yolov8n.pt").export(format="onnx")  # export a model to ONNX format

YOLOv8 数据格式

YOLOv8 使用 YOLOv5 PyTorch TXT 注释格式,这是 Darknet 注释格式的修改版本。如果您需要将数据转换为 YOLOv5 PyTorch TXT 以在 YOLOv8 模型中使用,我们可以满足您的需求。查看我们的 Roboflow Convert 工具,了解如何转换数据以在新的 YOLOv8 模型中使用。

YOLOv8 标记工具

Ultralytics 是 YOLOv8 的创建者和维护者,已与 Roboflow 合作,成为推荐在 YOLOv8 项目中使用的注释和导出工具。使用 Roboflow,您可以为 YOLOv8 支持的所有任务(对象检测、分类和分割)注释数据,并导出数据,以便可以将其与 YOLOv8 CLI 或 Python 包一起使用。

YOLOv8 入门

要开始将 YOLOv8 应用于您自己的用例,请查看有关如何在自定义数据集上训练 YOLOv8 的指南。

要查看其他人使用 YOLOv8 做了什么,请浏览 Roboflow Universe 以获取其他 YOLOv8 模型、数据集和灵感。

或者将模型投入生产并使用主动学习策略不断更新模型的从业者 - 我们添加了一个途径,您可以在其中部署 YOLOv8 模型,在我们的推理引擎中使用它并在数据集上进行标签辅助。

祝您训练愉快,当然,推理愉快!

YOLOv8 常见问题解答

YOLOv8 有哪些版本?

截至 2023 年 1 月 10 日发布,YOLOv8 有五个版本,从 YOLOv8n(最小的型号,在 COCO 上的得分为 37.3 mAP)到 YOLOv8x(最大的型号,在 COCO 上的得分为 53.9 mAP)。

YOLOv8 可以用于哪些任务?

YOLOv8 支持开箱即用的对象检测、实例分割和图像分类。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小酒馆燃着灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值