YOLO 模型基础入门及官方示例演示

文章目录

  • Github
  • 官网
  • 简介
  • 模式
  • 数据集
  • Python 环境
  • Conda 环境
  • Docker 环境
    • 部署 CPU 版本
    • 官方 CLI 示例
    • 官方 Python 示例
  • 任务
    • 目标检测
    • 姿势估计
    • 图像分类
  • Ultralytics HUB
  • 视频流示例

Github

  • https://github.com/ultralytics/ultralytics

官网

  • https://docs.ultralytics.com/zh
  • https://docs.ultralytics.com/zh/quickstart/

简介

Ultralytics 是一个软件公司,专注于开发计算机视觉和深度学习工具。他们的主要产品是 YOLOv5,这是一个快速、高效的目标检测模型,特别适用于实时应用。YOLOv5 是对经典的 YOLO(You Only Look Once)系列模型的升级,采用了现代化的深度学习技术和优化策略,以提供更好的性能和更低的计算成本。

Ultralytics 还开发了其他一些工具和库,帮助研究人员和开发者在计算机视觉和深度学习领域更高效地工作。他们的开源项目广受欢迎,为社区提供了强大的工具和资源,以推动计算机视觉技术的发展和应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模式

  • https://docs.ultralytics.com/zh/modes/

在这里插入图片描述

Ultralytics YOLOv8 不只是另一种对象检测模型;它是一个多功能框架,旨在覆盖机器学习模型的整个生命周期–从数据摄取和模型训练到验证、部署和实际跟踪。每种模式都有特定的用途,其设计旨在为您提供不同任务和用例所需的灵活性和效率。

  • 训练模式:在自定义或预载数据集上对模型进行微调。
  • Val模式:用于验证模型性能的训练后检查点。
  • 预测模式:释放模型对真实世界数据的预测能力。
  • 导出模式:让您的模型以各种格式部署就绪。
  • 跟踪模式:将物体检测模式扩展到实时跟踪应用中。
  • 基准模式:在不同的部署环境中分析模型的速度和准确性。

数据集

  • https://docs.ultralytics.com/zh/datasets/

Ultralytics 为各种数据集提供支持,以促进检测、实例分割、姿态估计、分类和多目标跟踪等计算机视觉任务。下面列出了Ultralytics 的主要数据集,然后是每个计算机视觉任务和相应数据集的摘要。

  • 物体检测: 边界框物体检测是一种计算机视觉技术,它通过在每个物体周围绘制一个边界框来检测和定位图像中的物体。

  • 实例分割: 实例分割是一种计算机视觉技术,涉及在像素级别识别和定位图像中的对象。

  • 姿势估计: 姿态估计是一种用于确定物体相对于摄像机或世界坐标系的姿态的技术。

  • 分类: 图像分类是一项计算机视觉任务,包括根据图像的视觉内容将其归入一个或多个预定义的类别。

  • 定向边框(OBB): 定向包围盒(OBB)是计算机视觉中一种利用旋转包围盒检测图像中倾斜物体的方法,通常应用于航空和卫星图像。

  • 多目标跟踪: 多目标跟踪是一种计算机视觉技术,涉及在视频序列中检测和跟踪多个目标。

Python 环境

# 怕包冲突可以清理当前环境所有安装包
pip freeze | xargs pip uninstall -y
pip install --upgrade pip
pip install ultralytics
# 显示预测结果图片
pip install matplotlib

Conda 环境

  • Anaconda:https://www.anaconda.com/
  • Miniconda:https://docs.anaconda.com/miniconda/
# 创建 Conda 环境
conda create --name ultralytics-env python=3.8 -y
# 激活新环境
conda activate ultralytics-env
# 安装 Ultralytics
conda install -c conda-forge ultralytics
  • CUDA 环境说明

如果您在CUDA 环境中工作,最好安装 ultralytics, pytorch和 pytorch-cuda 共同解决任何冲突

conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8 ultralytics

Docker 环境

  • 镜像:https://hub.docker.com/r/ultralytics/ultralytics
# 推荐用于训练的 GPU 映像。
docker pull ultralytics/ultralytics:latest
docker pull ultralytics/ultralytics:8.2.59
# 基于 Ubuntu 的仅 CPU 版本,适用于推理和无 GPU 的环境。
docker pull ultralytics/ultralytics:latest-cpu
docker pull ultralytics/ultralytics:8.2.59-cpu
# 仅包含Python 和必要依赖项的最小镜像,是轻量级应用和开发的理想选择。
docker pull ultralytics/ultralytics:latest-python
docker pull ultralytics/ultralytics:8.2.59-python
  • 仅使用CPU
docker run -it --rm ultralytics/ultralytics:8.2.59-cpu
  • 使用图形处理器
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:8.2.59# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' ultralytics/ultralytics:8.2.59

部署 CPU 版本

docker run -it --rm --name yolo ultralytics/ultralytics:8.2.59-cpu
# 拷贝 ultralytics 源码
docker cp yolo:/usr/src/ultralytics ./yolo# 部署 yolo
docker run -it --rm --name yolo \
-v ./yolo/ultralytics:/usr/src/ultralytics \
ultralytics/ultralytics:8.2.59-cpu

注意: 以下脚本与CLI命令都是在容器内执行。

官方 CLI 示例

YOLO 命令行界面 (CLI) 允许使用简单的单行命令,而无需Python 环境。CLI 不需要定制或Python 代码。您只需使用 yolo 指挥。

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

在这里插入图片描述
在这里插入图片描述

官方 Python 示例

pip install matplotlib
import matplotlib.pyplot as plt
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.yaml")  # 从头开始构建一个新模型
model = YOLO("yolov8n.pt")  # 加载预训练模型(推荐用于训练)# 使用模型
model.train(data="coco8.yaml", epochs=3)  # 训练模型
metrics = model.val()  # 在验证集上评估模型性能
results = model("https://ultralytics.com/images/bus.jpg")  # 对一张图片进行预测
path = model.export(format="onnx")  # 将模型导出为ONNX格式# 显示预测结果图片
plt.figure(figsize=(10, 8))
plt.imshow(results[0].plot())  # 显示预测结果图片
plt.axis('off')  # 关闭坐标轴
plt.show()
  • 使用 matplotlib 显示预测结果

在这里插入图片描述

任务

  • https://docs.ultralytics.com/zh/tasks/

在这里插入图片描述

YOLOv8 是一个支持多种计算机视觉任务的人工智能框架。该框架可用于执行检测、分割、obb、分类和姿态估计。每种任务都有不同的目标和用例。

目标检测

  • https://docs.ultralytics.com/zh/tasks/detect/

在这里插入图片描述

  • 训练模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.yaml")  # 从 YAML 文件构建一个新模型
model = YOLO("yolov8n.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolov8n.yaml").load("yolov8n.pt")  # 从 YAML 文件构建模型,并加载预训练权重# 训练模型
results = model.train(data="coco8.yaml", epochs=3, imgsz=640)

在这里插入图片描述

  • 验证模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/detect/train/weights/best.pt")  # 加载自定义模型# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已被记录
metrics.box.map  # mAP50-95,所有类别的平均精度(Average Precision)
metrics.box.map50  # mAP50,所有类别的平均精度(Average Precision)在IoU阈值为50%时
metrics.box.map75  # mAP75,所有类别的平均精度(Average Precision)在IoU阈值为75%时
metrics.box.maps  # 一个包含每个类别的mAP50-95的列表,即每个类别的平均精度(Average Precision)

在这里插入图片描述

  • 测试模型
import matplotlib.pyplot as plt
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/detect/train/weights/best.pt")  # 加载自定义模型# 使用模型进行预测
results = model("https://ultralytics.com/images/bus.jpg")  # 对一张图片进行预测# 显示预测结果图片
plt.figure(figsize=(10, 8))
plt.imshow(results[0].plot())  # 显示预测结果图片
plt.axis('off')  # 关闭坐标轴
plt.show()
yolo pose predict model=/usr/src/ultralytics/runs/detect/train/weights/best.pt source='https://ultralytics.com/images/bus.jpg'

在这里插入图片描述

  • 导出模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/detect/train/weights/best.pt")  # 加载自定义训练模型# 导出模型为 ONNX 格式
model.export(format="onnx")  # 将模型导出为ONNX格式

在这里插入图片描述

  • 测试导出的 ONNX 模型
from ultralytics import YOLO# 加载导出的 ONNX 模型
onnx_model = YOLO("/usr/src/ultralytics/runs/detect/train/weights/best.onnx")# 运行推理
results = onnx_model("https://ultralytics.com/images/bus.jpg")  # 对一张图片进行推理
  • CLI 命令方式
yolo predict model=/usr/src/ultralytics/runs/detect/train/weights/best.onnx source='https://ultralytics.com/images/bus.jpg'

在这里插入图片描述

姿势估计

  • https://docs.ultralytics.com/zh/tasks/pose/

在这里插入图片描述

  • 训练模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-pose.yaml")  # 从 YAML 文件构建一个新模型
model = YOLO("yolov8n-pose.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolov8n-pose.yaml").load("yolov8n-pose.pt")  # 从 YAML 文件构建模型,并加载预训练权重# 训练模型
results = model.train(data="coco8-pose.yaml", epochs=3, imgsz=640)

在这里插入图片描述

  • 验证模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-pose.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/pose/train/weights/best.pt")  # 加载自定义模型# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已被记录
metrics.box.map  # mAP50-95,所有类别的平均精度(Average Precision)
metrics.box.map50  # mAP50,所有类别的平均精度(Average Precision)在IoU阈值为50%时
metrics.box.map75  # mAP75,所有类别的平均精度(Average Precision)在IoU阈值为75%时
metrics.box.maps  # 一个包含每个类别的mAP50-95的列表,即每个类别的平均精度(Average Precision)
  • 测试模型
import matplotlib.pyplot as plt
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-pose.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/pose/train/weights/best.pt")  # 加载自定义模型# 使用模型进行预测
results = model("https://ultralytics.com/images/bus.jpg")  # 对一张图片进行预测# 显示预测结果图片
plt.figure(figsize=(10, 8))
plt.imshow(results[0].plot())  # 显示预测结果图片
plt.axis('off')  # 关闭坐标轴
plt.show()
  • 使用 matplotlib 显示预测结果

在这里插入图片描述

  • CLI 命令方式
yolo pose predict model=/usr/src/ultralytics/runs/pose/train/weights/best.pt source='https://ultralytics.com/images/bus.jpg'

在这里插入图片描述
在这里插入图片描述

  • 导出模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-pose.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/pose/train/weights/best.pt")  # 加载自定义训练模型# 导出模型为 ONNX 格式
model.export(format="onnx")  # 导出模型为ONNX格式

图像分类

  • https://docs.ultralytics.com/zh/tasks/classify/

在这里插入图片描述

  • 训练模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-cls.yaml")  # 从 YAML 文件构建一个新模型
model = YOLO("yolov8n-cls.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolov8n-cls.yaml").load("yolov8n-cls.pt")  # 从 YAML 文件构建模型,并加载预训练权重# 训练模型
results = model.train(data="mnist160", epochs=3, imgsz=64)

在这里插入图片描述

  • 验证模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-cls.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/classify/train/weights/best.pt")  # 加载自定义模型# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已被记录
metrics.top1  # top1 准确率(accuracy)
metrics.top5  # top5 准确率(accuracy)
  • 测试模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-cls.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/classify/train/weights/best.pt")  # 加载自定义模型# 使用模型进行预测
results = model("https://ultralytics.com/images/bus.jpg")  # 对一张图片进行预测
  • CLI 命令方式
yolo classify predict model=/usr/src/ultralytics/runs/classify/train/weights/best.pt source='https://ultralytics.com/images/bus.jpg'

在这里插入图片描述
在这里插入图片描述

  • 导出模型
from ultralytics import YOLO# 加载模型
model = YOLO("yolov8n-cls.pt")  # 加载官方模型
model = YOLO("/usr/src/ultralytics/runs/classify/train/weights/best.pt")  # 加载自定义训练模型# 导出模型
model.export(format="onnx")  # 导出模型为ONNX格式

Ultralytics HUB

  • https://hub.ultralytics.com/home

在 Ultralytics HUB 上创建和训练复杂的模型,无需代码,只需几秒钟即可完成,适用于网络和移动设备。

在这里插入图片描述

注: Ultralytics HUB 具体用法将在下篇文章介绍敬请关注。

视频流示例

  • 使用 OpenCV 和 YOLO 模型进行实时目标检测并在视频流中显示检测结果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-网络并发模型

3. 网络并发模型 3.1 网络并发模型概述 什么是网络并发 在实际工作中,一个服务端程序往往要应对多个客户端同时发起访问的情况。如果让服务端程序能够更好的同时满足更多客户端网络请求的情形,这就是并发网络模型。 循环网络模型问题 循环网络模型只能…

跨平台WPF音乐商店应用程序

目录 一 简介 二 设计思路 三 源码 一 简介 支持在线检索音乐,支持实时浏览当前收藏的音乐及音乐数据的持久化。 二 设计思路 采用MVVM架构,前后端分离,子界面弹出始终位于主界面的中心。 三 源码 视窗引导启动源码: namesp…

知名在线市场 Etsy 允许在其平台上销售 AI 艺术品,但有条件限制|TodayAI

近日,以手工和复古商品著称的在线市场 Etsy 宣布,将允许在其平台上销售 AI 生成的艺术品。这一举措引发了广泛关注和争议。尽管 Etsy 正在接受 AI 艺术的潮流,但平台对这一类商品的销售设置了一些限制。 根据 Etsy 新发布的政策,…

51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT大屏_I2C_HW参考代码(v1.3) 硬件I2C方式

本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。 提供STC8H8K64U和STC8051U34K64的参考代码。 【硬件部份】STC8H8K64U/STC8051U34K64 RA8889开发板 7寸TFT 800x480 1. 实物连接图:STC8H8K64URA8889开发板,使用P2口I2C接口: 2.实物连…

【QT】信号与槽(概述、使用、自定义、连接方式、其他说明)

一、信号和槽概述 在 Qt 中,用户和控件的每次交互过程称为一个事件。比如 “用户点击按钮” 是一个事件,“用户关闭窗口” 也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出 “按钮被点击” 的信号,用户关闭窗口…

windows edge自带的pdf分割工具(功能)

WPS分割pdf得会员,要充值!网上一顿乱找,发现最简单,最好用,免费的还是回到Windows。 Windows上直接在edge浏览器打开PDF,点击 打印 按钮,页面下选择对应页数 打印机 选择 另存为PDF,然后保存就…

记录一下在Hyper-v中动态磁盘在Ubuntu中不完全用到的问题(扩展根目录)

在之前给hyper虚拟机的Ubuntu分配磁盘有20G; 后来在Ubuntu中查看磁盘发现有一个分区没用到: 贴的图片是完成扩展后的 之前这里是10G,然后有个dev/sda4的分区,也是10G,Type是Microsoft Basic Data; …

【LeetCode】填充每个节点的下一个右侧节点指针 II

目录 一、题目二、解法完整代码 一、题目 给定一个二叉树: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NUL…

spring security源码追踪理解(一)

一、前言 近期看了spring security相关的介绍,再加上项目所用若依框架的底层安全模块也是spring security,所以想从源码的角度加深下对该安全模块的理解(看源码之前,我们要先有个意识,那就是spring security安全模块主…

【面试题】Redo log和Undo log

Redo log 介绍Redo log之前我们需要了解一下,mysql数据操作的流程: 上述就是数据操作的流程图,可以发现sql语句并不是直接操作的磁盘而是通过操作内存,然后进行内存到磁盘的一个同步。这里我们必须要了解一些区域: 缓…

c++基础(类和对象中)(类的默认成员函数)

目录 一.构造函数(类似初始化) 1.概念 2.构造函数的特点 二.析构函数(类似 销毁对象/空间) 三.拷贝构造函数(类似复制粘贴的一种 初始化 ) 1.概念: 2.拷贝构造的特点: 四.赋值运算符重载&#xff08…

IDEA的工程与模块管理

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …

STM32的ADC详解

目录 一、ADC简介 二、ADC的时钟 三、ADC特性 四、ADC功能说明 五、规则通道和注入通道 1.规则通道 2.注入通道 3.区别 六、数据寄存器 1.右对齐 2.左对齐 七、转换模式 1.单次转换模式 2.续转换模式 3.扫描模式 4.区别 八、程序实现 1.需求 2.ADC初始化 3.A…

ipv6 基础学习(一)

IPv6 为什么要有IPV6? IPv4地址空间有限:IPv4使用32位地址,最多可提供约43亿个地址。随着互联网设备数量的爆炸式增长,这些地址已经几乎耗尽。 IPv6地址空间庞大:IPv6使用128位地址,可以提供大约3.410^3…

爬虫自己做的

1.urllib 1.1基本使用 1.2 下载(图片,页面,视频) 1.3 get 1.3.1 quote 中文变成对应uncode编码 当url 的wd中文时 quote是将中文变成对应uncode编码 然后拼接成完整的url 1.3.2urlencode方法 wd有多个参数 1.3.3ajas get实例 …

【Git远程操作】理解分布式管理 | 创建远程仓库

目录 1.理解分布式管理 多人协作开发 2.创建远程仓库 2.1仓库名&路径 2.2初始化仓库&设置模板 1.理解分布式管理 目前我们学习的所有内容都是在本地来完成的。(add /commit /版本撤销回退/分支管理) Git是一个分布式 的版本控制系统。 分支…

动漫风格动漫404网站维护HTML源码

源码介绍 动漫风格动漫404网站维护HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 效果预览 源码下载 动漫风格动漫404网站维护HTML源码

【存储学习笔记】1:机械硬盘(Hard Drive Disk)结构和寻址方式

目录 HDD的结构HDD的寻址方式CHS寻址(不适用于等密度结构磁盘)LBA寻址(目前普遍使用的线性寻址方式) HDD的寻址速度 HDD的结构 盘面(Platter):单面或者双面覆盖着用于记录数据的磁性物质&#x…

Gateway源码分析:路由Route、断言Predicate、Filter

文章目录 源码总流程图说明GateWayAutoConfigurationDispatcherHandlergetHandler()handleRequestWith()RouteToRequestUrlFilterReactiveLoadBalancerClientFilterNettyRoutingFilter 补充知识适配器模式 详细流程图 源码总流程图 在线总流程图 说明 Gateway的版本使用的是…

配置单区域OSPF

目录 引言 一、搭建基础网络 1.1 配置网络拓扑图如下 1.2 IP地址表 二、测试每个网段都能单独连通 2.1 PC0 ping通Router1所有接口 2.2 PC1 ping通Router1所有接口 2.3 PC2 ping通Router2所有接口 2.4 PC3 ping通Router2所有接口 2.5 PC4 ping通Router3所有接口 2.…