首页 > 其他分享 >YOLOv8终极指南

YOLOv8终极指南

时间:2024-01-28 11:08:08浏览次数:55  
标签:指南 YOLOv5 Roboflow 训练 模型 YOLO YOLOv8 终极

YOLOv8是计算机视觉领域的最新发展,它是一种用于目标检测、实例分割和分类的最新先进模型。除了对模型架构本身的改进之外,YOLOv8通过一个用于使用YOLO模型的PIP包为开发者提供了一个新的友好界面。

在这篇文章中,我们将深入探讨YOLOv8在计算机视觉领域的重要性,将其与其他类似模型在准确性方面进行比较,并讨论YOLOv8 GitHub仓库的最新变化。

本文来源:https://blog.roboflow.com/whats-new-in-yolov8/ 为适合中文阅读习惯,阅读更有代入感,原文翻译后有删改。您也可以查看原文。


1. YOLOv8是什么?

YOLOv8是最新的YOLO模型,可用于目标检测、图像分类和实例分割任务。YOLOv8由Ultralytics开发,该公司还创建了具有影响力和产业定义性的YOLOv5模型。与YOLOv5相比,YOLOv8包含许多架构和开发者体验的改变和改进。

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

2. YOLO是如何发展成为YOLOv8的?

YOLO(You Only Look Once)系列模型在计算机视觉领域变得非常有名。YOLO之所以著名,是因为它在保持小型模型尺寸的同时具有相当高的准确性。YOLO模型可以在单个GPU上进行训练,这使其适用于广泛的开发者。机器学习从业者可以在边缘硬件或云中以低成本部署它。

自2015年Joseph Redmond首次发布以来,YOLO一直受到计算机视觉社区的关注。在早期版本(版本1-4)中,YOLO是在Redmond编写的称为Darknet的自定义深度学习框架中以C代码维护的。

YOLOv8终极指南_计算机视觉

YOLOv8作者Glenn Jocher在Ultralytics工作,他在PyTorch(来自Facebook的深度学习框架)中追随了YOLOv3仓库。随着影子仓库中训练的改进,Ultralytics最终推出了自己的模型:YOLOv5。

由于其灵活的Pythonic结构,YOLOv5迅速成为世界上最先进的仓库。这种结构允许社区发明新的建模改进,并迅速通过具有类似PyTorch方法的存储库分享它们。

除了强大的模型基础之外,YOLOv5的维护人员一直致力于支持模型周围的健康软件生态系统。随着社区的需求,他们积极修复问题并推动存储库的能力。

在过去的两年里,各种模型从YOLOv5 PyTorch存储库分支出来,包括Scaled-YOLOv4、YOLOR和YOLOv7。其他模型也在世界各地以其基于PyTorch的实现而涌现,如YOLOX和YOLOv6。在这过程中,每个YOLO模型都带来了新的SOTA技术,不断推动模型的准确性和效率。

在过去的六个月中,Ultralytics一直在研究YOLO的最新SOTA版本,即YOLOv8。YOLOv8于2023年1月10日发布。

3. 我为什么要使用YOLOv8?

以下是考虑在下一个计算机视觉项目中使用YOLOv8的几个主要原因:

  • YOLOv8在Microsoft 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在本文撰写时是新的,但已有许多在线指南可供参考。

以下是我们自己的学习资源,可帮助您深入了解YOLO:

  • 如何使用YOLOv8检测对象
  • 如何在视频上运行YOLOv8检测
  • YOLOv8模型概述(在Roboflow Models上)
  • 如何在自定义数据集上训练YOLOv8模型
  • 如何将YOLOv8模型部署到Raspberry Pi
  • 用于训练YOLOv8目标检测模型的Google Colab笔记本
  • 用于训练YOLOv8分类模型的Google Colab笔记本
  • 用于训练YOLOv8分割模型的Google Colab笔记本
  • 使用YOLOv8和ByteTRACK跟踪和计数车辆

让我们深入探讨YOLOv8的架构,以及它与先前YOLO模型的不同之处。

4. YOLOv8架构:深入解析

目前尚无YOLOv8的发表论文,因此我们缺乏对其创建过程中的研究方法和削减研究的直接了解。尽管如此,我们分析了存储库和有关该模型的信息,开始记录YOLOv8中的新特性。

如果你希望自行查看代码,请查看YOLOv8存储库,并查看此代码差异以了解一些研究是如何进行的。

这里我们提供了对影响深远的建模更新的快速摘要,然后我们将看一下模型的评估,这些评估已经说明了问题。

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

YOLOv8终极指南_计算机视觉_02


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

4.1 无锚检测

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

YOLOv8终极指南_计算机视觉_03


在YOLO中锚框的可视化

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

YOLOv8终极指南_计算机视觉_04


YOLOv5的检测头

无锚检测减少了框预测的数量,从而加速了非最大抑制(NMS, Non-Maximum Suppression),这是一种复杂的后处理步骤,用于在推理后筛选候选检测。

YOLOv8终极指南_数据集_05


YOLOv8的检测头

4.2 新的卷积

干部的第一个6x6卷积被3x3卷积替代,主要的构建块发生了变化,C2f替代了C3。该模块在下图中进行了总结,其中“f”是特征数,“e”是扩展率,CBS是由Conv、BatchNorm和SiLU组成的块。

在C2f中,来自Bottleneck(这是两个带有残差连接的3x3卷积的花哨名称)的所有输出都被串联在一起。而在C3中,仅使用了最后一个Bottleneck的输出。

YOLOv8终极指南_数据集_06


新的YOLOv8 C2f模块

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

在neck中,特征直接串联而不强制要求相同的通道维度。这减少了参数数量和张量的总体大小。

4.3 结束镶嵌增强

深度学习研究往往侧重于模型架构,但YOLOv5和YOLOv8的训练过程是它们成功的重要组成部分。

YOLOv8在在线训练期间对图像进行增强。在每个时代,模型看到了提供的图像的稍微不同的变化。

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

YOLOv8终极指南_数据集_07


棋盘照片的马赛克增强

然而,经验表明,如果在整个训练过程中执行此增强,性能会下降。因此,在最后十个训练时代中关闭它是有益的。

这种变化是YOLO建模在YOLOv5存储库和YOLOv8研究中随着时间的推移所受到的慎重关注的典范。

5. YOLOv8准确性改进

YOLOv8的研究主要受到对COCO基准的经验性评估的推动。随着网络和训练例程的每个部分的微调,运行新实验以验证这些变化对COCO建模的影响。

5.1 YOLOv8 COCO准确性

COCO(上下文中的常见对象)是评估目标检测模型的行业标准基准。在COCO上比较模型时,我们看的是mAP值和推理速度的FPS测量。模型应在相似的推理速度下进行比较。

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

YOLOv8终极指南_数据集_08

截至本文写作时,YOLOv8在COCO上的准确性在相似的推理延迟条件下是最先进的。

5.2 RF100准确性

在Roboflow,我们从Roboflow Universe中抽取了100个样本数据集,这是一个拥有超过100,000个数据集的存储库,用于评估模型对新领域的泛化能力。我们的基准由Intel的支持下开发,是为计算机视觉从业者设计的基准,旨在更好地回答问题:“这个模型在我的自定义数据集上表现如何?”

我们在我们的RF100基准上评估了YOLOv8,与YOLOv5和YOLOv7一起,下图显示了每个模型的[email protected]的箱线图。

我们对每个模型的小版本进行了100个时代的运行,我们使用单个种子运行了一次,因此由于梯度抽签,请以谨慎的态度对待这个结果。

下图的箱线图告诉我们YOLOv8的异常值较少,而在Roboflow 100基准上的mAP总体上更好。

YOLOv8终极指南_v8_09


YOLO 相对于 RF100 的 [email protected]

下面的条形图显示了每个RF100类别的平均[email protected]。同样,YOLOv8胜过所有先前的模型。

YOLOv8终极指南_v8_10


YOLO 相对于 RF100 类别的平均 [email protected]

与YOLOv5评估相比,YOLOv8模型在每个数据集上产生了类似的结果,或者显著改善了结果。

6. YOLOv8存储库和PIP包

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

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

6.1 YOLOv8存储库布局

YOLOv8模型使用与YOLOv5类似的代码,其中分类、实例分割和目标检测任务类型的支持采用相同的代码例程。

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

YOLOv8终极指南_计算机视觉_11

6.2 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],模型可以是未初始化的.yaml文件,也可以是先前训练过的.pt文件。

6.3 YOLOv8 Python包

除了可用的CLI工具外,YOLOv8现在还作为一个PIP包进行分发。这使得本地开发稍显困难,但解锁了将YOLOv8融入你的Python代码的所有可能性。

点击查看代码

from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.yaml")  # 从头开始构建一个新模型
model = YOLO("yolov8n.pt")  # 加载预训练模型(推荐用于训练)

# 使用模型
results = model.train(data="coco128.yaml", epochs=3)  # 训练模型
results = model.val()  # 评估模型在验证集上的性能
results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
success = YOLO("yolov8n.pt").export(format="onnx")  # 将模型导出为ONNX格式

7. YOLOv8注释格式

YOLOv8使用YOLOv5 PyTorch TXT注释格式,这是Darknet注释格式的修改版本。

查看Roboflow Convert工具,了解如何转换数据以在新的YOLOv8模型中使用。
https://roboflow.com/formats/yolov8-pytorch-txt?ref=blog.roboflow.com

8. YOLOv8标注工具

YOLOv8的创建者和维护者Ultralytics已经与Roboflow合作,成为YOLOv8项目中建议的标注和导出工具。使用Roboflow,我们可以为YOLOv8支持的所有任务(目标检测、分类和分割)标注数据,并导出数据以便在YOLOv8 CLI或Python包中使用。

9. 开始使用YOLOv8

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

要了解其他人如何使用YOLOv8,请在Roboflow Universe上浏览其他YOLOv8模型、数据集和灵感。

对于将模型投入生产并使用主动学习策略不断更新模型的从业者,我们添加了一个路径,可以部署YOLOv8模型,将其用于我们的推理引擎,并用于数据集的标签辅助。或者,可以使用Roboflow Inference在设备上部署YOLOv8,这是一个开源推理服务器。

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

作者:楚千羽



标签:指南,YOLOv5,Roboflow,训练,模型,YOLO,YOLOv8,终极
From: https://blog.51cto.com/u_15240054/9451530

相关文章

  • 洛谷题单指南-排序-P1923 【深基9.例4】求第 k 小的数
    原题链接:https://www.luogu.com.cn/problem/P1923题意解读:要最快的求第k小的数,O(n)的做法是利用快排的思想对数据进行划分第一步、取分界点x,通常设x=a[(l+r)/2]第二步、将小于x的挪到x左边,将大于x的挪到x右边第三步、比较,如果x左边的个数大于k,则继续递归处理左边,否则递......
  • Docker 完整指南
    欢迎来到Docker的完整指南!在这个教程中,我们将深入研究Docker的各种特性,从基础的容器操作到高级的网络配置和数据管理。让我们一步步地探索Docker的丰富功能。1.安装Docker首先,确保您已经在系统上安装了Docker。可以在Docker官方网站上找到适用于您操作系统的安装说......
  • 《Kafka权威指南》PDF
    内容简介每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是ApacheKafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。本书由出身于Linked......
  • 【重要】部署系统的注意事项实践指南
    在部署系统时,有几个重要的注意事项需要考虑:确定部署需求和目标:在开始部署之前,明确系统的需求和目标非常重要。仔细分析所需的功能和性能,并确保系统能满足这些要求。进行系统测试:在正式部署系统之前,进行全面的系统测试是必不可少的。确保系统在各种场景下的正常运行,并修复任何出部署......
  • 作者推荐 | 【深入浅出MySQL】「底层原理」探秘缓冲池的核心奥秘,揭示终极洞察
    缓存池BufferPool机制应用系统分层架构:一个优化策略是将最常访问的数据存放在缓存中,以加快数据访问速度,避免频繁地访问数据库。操作系统:借助缓冲池机制来优化数据访问,从而避免了反复直接访问磁盘的开销,极大地提升了数据访问的速度。缓冲池通过在内存中临时存储最常访问的数据,将频繁......
  • 洛谷题单指南-排序-P1177 【模板】排序
    原题链接:https://www.luogu.com.cn/problem/P1177题意解读:数据量为100000,必须用小于等于N*logN复杂度的排序算法,可以直接用sort,更重要需要掌握快速排序的过程。知识点:快速排序设定数组q[n],l,r第一步:确定分界点x可以取q[l]、q[(l+r)/2]、q[r]三种第二步:调整区间把<=x的数调......
  • 2024年1月Java项目开发指南15:vue3+AntDesignVue 设计页面
    考虑到有的同学对vue3不熟悉,因此,我把ControlView.vue这个页面清空,我们从0开始写。<templatestyle="width:100%"></template><scriptsetup></script><stylescoped></style>搭建页面的基本框架展开代码后复制你需要的代码。比如我选择上中下这种结构,我就复制上......
  • 2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@Req
    在HTTP请求中,POST方法通常用于向服务器发送数据,这些数据可以在请求的body中,也可以在URL的param中。不过,这两者的使用方式和适用场景是不同的。Body:在POST请求中,body主要用于包含要发送到服务器的数据。这些数据通常是表单数据、JSON数据或其他类型的数据。当你需要在请求体中发送......
  • 《安富莱嵌入式周报》第331期:单片机实现全功能软件无线电,开源电源EEZ升级主控,ARM 汇编
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 目录:1、单片机实现低配版全功能软件无线电,范围0.5-30MHz,支持SSB、AM、FM和CW2、TI整理的ARM汇编用户指南3、ADI差分链路的SPI扩展器LTC4332,支持1200米4、开源串口,SPI,I......
  • 洛谷题单指南-排序-P1271 【深基9.例1】选举学生会
    原题链接:https://www.luogu.com.cn/problem/P1271题意解读:最直接的计数排序问题,借助一个桶h[N],对被投票的候选人x执行h[x]++,再按顺序遍历输出即可。100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=1005;inth[N];intmain(){intn,m;......