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.mzph.cn/news/873759.shtml

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

相关文章

【IEEE出版】第四届能源工程与电力系统国际学术会议(EEPS 2024)

第四届能源工程与电力系统国际学术会议(EEPS 2024) 2024 4th International Conference on Energy Engineering and Power Systems 重要信息 大会官网:www.iceeps.com 大会时间:2024年8月9-11日 大会…

2024年7月萤火虫航天为NASA发射8颗立方体卫星

作为美国宇航局立方体卫星发射计划的一部分,萤火虫航空航天公司于7月3日在该公司的阿尔法火箭上发射了八颗小型卫星。这枚名为“夏日噪音”的火箭于太平洋夏令时(PDT)晚上9点04分从加利福尼亚州范登堡空军基地的2号航天发射场成功升空。 立方…

解读vue3源码-响应式篇2

提示:看到我 请让我滚去学习 文章目录 vue3源码剖析reactivereactive使用proxy代理一个对象1.首先我们会走isObject(target)判断,我们reactive全家桶仅对对象类型有效(对象、数组和 Map、Set 这样的集合类型),而对 str…

【数学建模】多波束测线问题(持续更新)

多波束测线问题 问题 1建立模型覆盖宽度海水深度重叠长度重叠率 问题二问题三问题四 问题 1 与测线方向垂直的平面和海底坡面的交线构成一条与水平面夹角为 α \alpha α的斜线(如下图),称 α \alpha α为坡度。请建立多波束测深的覆盖宽度及…

Python代码,强化学习,深度学习

python代码编写,Python算法设计,强化学习优化,改进模型,训练模型,测试模型,可视化绘制,代编运行结果,交互多模型改进,预测模型,算法修改,Python包…

Memcached集群管理:构建高可用性缓存系统

Memcached集群管理:构建高可用性缓存系统 目录 引言Memcached简介高可用性缓存系统的需求Memcached集群架构 单点故障与负载均衡数据分片 构建Memcached集群 环境准备配置和部署 高可用性策略 服务器故障处理数据一致性 监控与维护 性能监控日常维护 总结 1. 引言…

【Spring Boot 自定义配置项详解】

文章目录 一、配置文件1. properties配置1.1 创建配置文件1.2 添加配置项1.3 在应用中使用配置项1.4 多环境配置 2. YAML配置2.1 创建配置文件2.2 添加配置项2.3 在应用中使用配置项2.4 多环境配置 二、自定义配置类1. 创建配置类2. 使用配置类 一、配置文件 Spring Boot支持多…

11.斑马纹列表 为没有文本的链接设置样式

斑马纹列表 创建一个背景色交替的条纹列表。 使用 :nth-child(odd) 或 :nth-child(even) 伪类选择器,根据元素在一组兄弟元素中的位置,对匹配的元素应用不同的 background-color。 💡 提示:你可以用它对其他 HTML 元素应用不同的样式,如 <div>、<tr>、<p&g…

利用PyTorch进行模型量化

利用PyTorch进行模型量化 目录 利用PyTorch进行模型量化 一、模型量化概述 1.为什么需要模型量化&#xff1f; 2.模型量化的挑战 二、使用PyTorch进行模型量化 1.PyTorch的量化优势 2.准备工作 3.选择要量化的模型 4.量化前的准备工作 三、PyTorch的量化工具包 1.介…

linux的rm命令是删除到回收站吗?

不会删除到回收站&#xff0c;在 Linux 中&#xff0c;rm 命令用于直接删除文件或目录&#xff0c;而不是将其移至回收站。这与 Windows 系统的回收站机制有所不同。主要原因有以下几个方面&#xff1a; 设计哲学&#xff1a;Linux 设计哲学之一是尽可能简单直接地处理任务。rm…

【小程序开发】TypeError: _this4.getOpenerEventChannel(...).emit is not a function 问题解决

使用uni-appvue2开发微信小程序时遇到一个界面之前传参的问题。想实现的逻辑是界面返回并通知前一个界面刷新。代码如下&#xff1a; GroupManager.getInstance().addGroupRemote(this.createGroupModel(), () > {uni.hideLoading()uni.showToast({icon: "success&quo…

openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述

文章目录 openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述312.1 工具部署架构图 openGauss学习笔记-312 openGauss 数据迁移-MySQL迁移-迁移MySQL数据库至openGauss-概述 312.1 工具部署架构图 当前openGauss支持对MySQL迁移服务&#x…

live555搭建实时播放rtsp服务器

live555关于RTSP协议交互流程 live555的核心数据结构值之闭环双向链表 live555 rtsp服务器实战之createNewStreamSource live555搭建实时播放rtsp服务器 live555 rtsp服务器实战之doGetNextFrame live555可以说是rtsp的专项库&#xff0c;既可以搭建rtsp服务器&#xff0c;…

HTTP协议的演进:从HTTP/1.0到HTTP/2.0

随着互联网技术的不断发展&#xff0c;HTTP协议作为Web通信的基础&#xff0c;也经历了从HTTP/1.0到HTTP/1.1再到HTTP/2.0的演进。本文将逐步深入探讨这两个版本的特点、不足以及改进&#xff0c;以帮助我们更好地理解HTTP协议的发展历程。 一、HTTP/1.0的特点与不足 HTTP/1.…

【多任务YOLO】 A-YOLOM: You Only Look at Once for Real-Time and Generic Multi-Task

You Only Look at Once for Real-Time and Generic Multi-Task 论文链接&#xff1a;http://arxiv.org/abs/2310.01641 代码链接&#xff1a;https://github.com/JiayuanWang-JW/YOLOv8-multi-task 一、摘要 高精度、轻量级和实时响应性是实现自动驾驶的三个基本要求。本研究…

Java基础编程500题——HashSet、LinkedHashSet和TreeSet

&#x1f4a5; 该系列属于【Java基础编程500题】专栏&#xff0c;如您需查看Java基础的其他相关题目&#xff0c;请您点击左边的连接 目录 1. 向HashSet中添加元素&#xff0c;并遍历输出。 2. 使用LinkedHashSet保持插入顺序&#xff0c;并遍历输出。 3. 从HashSet中删除一…

多光谱的空间特征和光谱特征Statistics of Real-World Hyperspectral Images

文章目录 Statistics of Real-World Hyperspectral Images1.数据集2.spatial-spectral representation3.Separable Basis Components4.进一步分析5.复现一下5.1.patch的特征和方差和论文近似&#xff0c;5.2 spatial的basis和 spectral的basis 6.coef model7.join model Statis…

如何让主机显示Docker容器的程序界面,同时支持声音播放

系统中如果安装各种应用软件,很容易会因为版本冲刺引发异常。一个好的办法就是用容器来隔离系统环境,确保主机环境不变。对于一些有界面的程序,可以在容器内运行,让其界面显示在主机上。下面以安装和使用视频剪辑软件shotcut为例,介绍实现方案。 docker run -it --privil…

获取磁盘剩余容量-----c++

获取磁盘剩余容量 #include <filesystem>struct DiskSpaceInfo {double total;double free;double available; };DiskSpaceInfo getDiskSpace(const std::string& path) {std::filesystem::space_info si std::filesystem::space(path);DiskSpaceInfo info;info.…

机器学习 - 信息增益

信息增益&#xff08;Information Gain&#xff09; 信息增益是衡量在特征选择过程中一个特征对数据集分类能力提升的指标。在构建决策树&#xff08;如ID3和C4.5算法&#xff09;时&#xff0c;信息增益用于选择最佳的特征来划分数据集。信息增益基于熵的概念&#xff0c;通过…