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

news2024/9/22 1:39:50

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

YOLOv8nYOLOv8sYOLOv8mYOLOv8lYOLOv8x

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 与其他 YOLO 模型的对比。

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

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

整体比较

YOLOv8 模型与 YOLOv5 模型的对比。

物体检测比较

YOLOv8 与 YOLOv5 对象检测模型。

实例分割比较

YOLOv8 与 YOLOv5 实例分割模型。

图像分类比较

YOLOv8 与 YOLOv5 图像分类模型。

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

YOLOv8目标检测模型的演进

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

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。我们介绍了新模型、它们的性能以及软件包附带的命令行界面。除此之外,我们还对视频进行了推理。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity Vuforia发布移动端,禁止相机权限,出绿屏,强制退出app,如何去掉PERMISSION ERROR

unity Vuforia发布移动端,禁止相机权限,出绿屏,强制退出app,如何去掉PERMISSION ERROR问题描述更改需求解决方案:总结💢💢版权声明问题描述 unityvuforia 发布移动端,运行时需要相机…

墨天轮《2022年中国数据库行业年度分析报告》正式发布,精彩抢先看

自2022年4月份起,墨天轮数据社区持续发布月度 《中国数据库行业分析报告》,目前已发布7期,点击超过10万次,下载近万次。 为总结过往,展望未来,墨天轮数据社区正式发布了《2022年中国数据库年度行业分析报告…

MAC(m1)-VsCode上传项目到GitHub仓库

安装Git集成插件: GitHub Pull requests 在Visual Studio Code中查看和管理GitHub拉取请求和问题 Git Graph Git图形化显示和操作 最新最全 VSCODE 插件推荐(2023版)_白墨石的博客-CSDN博客_vscode插件 在vscode使用git提交推送代码_水…

精选100个Python实战项目案例,送给缺乏实战经验的你

前言:随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中。为什么这么多人学 Python ?我要喊出那句话了:“人生苦短,我用 Python!”,正是因为语法简单、容易学习,所以 …

Jetson 相机编码

Jetson 相机编码 Jetson相机编码是即将发布的“实践”系列的相关代码。有三个存储库: 1. camera-caps JetsonHacks Github存储库camera-caps 通过v4l2-ctl命令行工具提供了一个图形用户界面。您可能会发现,它可以方便地检查连接到Jetson上的V4L2相机的功能。这适…

复试算法练习Day17——从头到尾打印链表

复试算法练习Day17——从头到尾打印链表 题目描述 输入一个链表的头节点&#xff0c;按链表从尾到头的顺序返回每个节点的值&#xff08;用数组返回&#xff09;。 如输入{1,2,3}的链表如下图: 返回一个数组为[3,2,1] 0 < 链表长度 < 10000 示例1 输入&#xff1a;…

SpringMVC之JSON数据传输参数

目录 一&#xff1a;JSON普通数组 二&#xff1a;JSON对象数据 三&#xff1a;JSON对象数组 前面我们说过&#xff0c;现在比较流行的开发方式为异步调用。前后台以异步方式进行交换&#xff0c;传输的数据使用的是JSON,所以前端如果发送的是JSON数据&#xff0c;后端该如何…

C++11中的多线程的支持

C11中的多线程的支持 千禧年以后&#xff0c;主流的芯片厂商都开始生产多核处理器&#xff0c;所以并行编程越来越重要了。在C98中根本没有自己的一套多线程编程库,它采用的是C99中的POSIX标准的pthread库中的互斥锁,来完成多线程编程。 首先来简单一个概念:原子操作,即多线程…

目标检测框架在目标跟踪中的应用

目标检测框架在目标跟踪中的应用 从SiamRPN将跟踪问题定义为one-shot detection任务之后&#xff0c;出现了大量将检测组件由于跟踪的研究。不过Siamese系列一个很大的问题在于其本质仍然是一个模板匹配问题&#xff0c;网络关注的是寻找与target相似的东西&#xff0c;而忽视…

HCIA之数据发送过程

数据发送过程1、同广播域2、跨广播域&#xff08;需要将数据发送给网关&#xff0c;这通过路由器发包&#xff09;&#xff1a;总结1、同广播域 假设PC1要与PC2通讯&#xff1b; PC1不知道PC2的MAC地址&#xff0c;先发送ARP找到PC2的MAC地址&#xff1b; PC1知道了PC2的MAC地…

使用Python Seaborn绘制热力图(heatmap)的时候怎么改变配色

看到最近有些论文中会对Transformer encoder的attention weights进行可视化&#xff0c;通常会使用heatmap&#xff0c;我参考了一些博客&#xff0c;感觉已经总结得很详细了&#xff0c;例如这篇&#xff1a;python绘制热度图(heatmap)_黄思博呀的博客-CSDN博客_python heatma…

pm2:ecosystem.config.js

一、理解ecosystem.config.js1.1、字面理解&#xff1a;pm2生态系统配置文件。1.2、个人理解&#xff1a;pm2配置文件。类似于vite.config.ts、nuxt.config.ts。1.3、理解pm2&#xff1a;pm2 是一个带有负载均衡功能的Node应用的进程管理器。1.4、pm2的能力&#xff1a;1.4.1、…

【React】React入门(一)--React的创建、Jsx语法与组件以及状态(state)

&#x1f380;个人主页&#xff1a;努力学习前端知识的小羊 感谢你们的支持&#xff1a;收藏&#x1f384; 点赞&#x1f36c; 加关注&#x1fa90; 文章目录React简介react的特性虚拟Dom传统dom更新虚拟Domcreate-react-appJSX语法与组件jsx语法class组件函数组件组件嵌套组件…

基于Springboot搭建java项目(三十六)—— 服务监控工具WGCLOUD

服务监控工具WGCLOUD 一、服务监控 ​ “要想晚上睡的好&#xff0c;服务监控少不了”&#xff0c;服务器监控是应用程序开发中必不可少的一部分&#xff0c;做好服务监控有以下几个优点&#xff1a; 能够及时发现应用程序的漏洞能够定位到程序运行的瓶颈&#xff0c;查看程…

一篇搞懂SQL

前言 根据廖雪峰老师的教程&#xff0c;整理出一篇文章 一&#xff0c;为什么需要数据库&#xff1f; 小量的数据可以使用excel或者cvs存储&#xff0c;但是大批量的数据&#xff0c;这些都无法满足需求。如何管理这些数据就成了大问题。 所以&#xff0c;数据库作为一种专门…

机器视觉_HALCON_HDevelop用户指南_5.HDevelop过程(打磨ing)

文章目录五、HDevelop过程5.1. 过程类型5.2. 文件类型5.2.1. HDevelop程序5.2.2. 过程文件5.2.3. 库5.3. 过程作用域5.4. 过程位置5.5. 过程解析5.6. 受保护的过程5.7. 过程文档5.8. 即时编译&#x1f53a;五、HDevelop过程 Procedure&#xff1a; 在HDevelop文档中&#xff08…

【PyTorch】ImageNet数据集的使用和miniImageNet的构建

【PyTorch】ImageNet的使用和miniImageNet的构建1. ImageNet下载和简介1.1 下载地址1.2 初步处理1.3 devkit介绍2. miniImageNet2.1 miniImageNet的划分3. 使用ImageFolder构建数据集类3.1 重写DataFolder中的方法3.2 BatchSampler实现episode采样3.3 batch可视化1. ImageNet下…

Oracle数据库入门大全

oracle数据库 Oracle 数据库、实例、用户、表空间、表之间的关系 数据库 数据库是数据集合。Oracle是一种数据库管理系统&#xff0c;是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”&#xff0c;并不仅指物理的数据集合&#xff0c;他包含物理数据、数据库管理…

let/const相关内容(五)

1.块级作用域的应用 &#xff08;一&#xff09;if-switch-for代码中的应用 ① if语句的代码就是块级作用域 // if语句的代码块是块级作用域 if (true) {var foo "foo"let bar "bar" }console.log(foo) console.log(bar);② switch语句的代码也是块级…

SQL面试题62--一种准确求近30天消费金额的方法

1 需求现在test表有三个字段 用户&#xff1a; user_id 日期&#xff1a;dt 订单金额 price&#xff0c;计算出一个消费者历史上“首次”在近30天周期内累计消费金额达到1W的日期2 分析&#xff08;1&#xff09;数据准备create table test as select a as user_id,7000 as pri…