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

news2025/2/3 17:55:02

文章目录

  • 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.coloradmin.cn/o/1940414.html

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

相关文章

图像生成(Text-to-Image)发展脉络

这篇博客对 图像生成(image generation) 领域的经典工作发展进行了梳理,包括重要的一些改进,目的是帮助读者对此领域有一个整体的发展方向把握,并非是对每个工作的详细介绍。 脉络发展(时间顺序&#xff0…

13.5.【C语言】二维数组

接第13篇(http://t.csdnimg.cn/TioJH) 把一维数组做为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组。 01.创建 格式: 数据类型 数组名[…

GESP CCF 图形化编程四级认证真题 2024年6月

一、单选题(共 10 题,每题 2 分,共 30 分) 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 C B C D C D A B D C C D A A B 1、小…

Java语言程序设计基础篇_编程练习题**15.12(几何问题:是否在圆内)

**15.12(几何问题:是否在圆内) 请编写一个程序,绘制一个圆心在(100, 60)而半径为50的固定的圆。当鼠标移动时,显示一条消息表示鼠标点是在圆内还是在圆外,如图15-27a所示 答题思路: 新建一个面板Pane(),一个Circle(100&#xff…

七天打造一套量化交易系统:Day1-数据分类、获取、清洗与存储

七天打造一套量化交易系统:Day1-数据分类、获取、清洗与存储 数据是量化交易的基础,重要性不言而喻。无论是股票、期货、期权、基金、ETF等等,甚至包括比特币,这些投资标的历史行情数据都可以用作回测分析,本篇将分享…

Python测试服务器连接的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

2024最佳游戏引擎排行

游戏产业几十年来一直是一个大生意,而且发展势头迅猛。据估计,全球游戏市场在 2025 年每年将达到 5031.4 亿美元,2023 年为 3960 亿美元。 尽管如今有市面上有各种各样的解决方案,但游戏开发人员和管理者在选择适合他们需求的游戏…

【基于netty+zookeeper的rpc远程调用框架】首篇——缘起

🐼作者简介:一名大三在校生🎋 空有想法,没有实践 文章目录 第一章 概述缘起一、为什么要手写一个rpc项目二、什么是rpc三、rpc怎么使用四、rpc的通信流程 欢迎添加微信,加入我的核心小队,请备注来意 第一章…

NCRE1-2 管理和运营宽带城域网的关键技术

是记录,会有错误 网络管理 这个喜欢考选择题 带内网络管理 用传统的电信网络通过 D C N ( D a t a C o m m u n i c a t i o n N e t w o r k ) DCN(Data\ Communication\ Network) DCN(Data Communication Network)或 P S I N ( P u b l i c S w i t c h T e l …

Java特性与快速入门(JDK,JRE,JVM与hello world)

目录 1.Java重要特点 2.Java运行机制及运行过程 跨平台性 3.什么是JDK,JRE 4.JDK,JRE和JVM的包含关系 5.Java快速入门 输出 hello world! 代码示例: 原理讲解: 练习 代码示例: 1.Java重要特点 2.Java运行机制及运行…

自定义Bean转换工具类

BeanConvertor工具类:简化Java对象转换的利器 在Java开发中,我们经常需要在不同的对象之间转换数据。这可能是因为我们需要将数据从一个层(如数据访问层)转移到另一个层(如服务层或表示层),或者是因为我们需要将外部API的数据结构转换为我们的内部数据结构。这种转…

LeetCode 739, 82, 106

文章目录 739. 每日温度题目链接标签思路代码 82. 删除排序链表中的重复元素 II题目链接标签思路代码 106. 从中序与后序遍历序列构造二叉树题目链接标签思路二叉树的三种遍历值与索引的映射对于后序遍历的使用对于中序遍历的使用 代码 739. 每日温度 题目链接 739. 每日温度…

完整创建一个vite前端项目

目录 1.先创建一个vite项目 2.下载第三方依赖 ① 安装路由vue-router ② 安装vuex全局数据管理 ③ 安装element-plus ④ 安装element-plus图标 ⑤ 安装axios发送请求 ⑥ 完整main.js代码模板 3.开发组件 4.登陆页面开发用例 5. 完整项目代码 废话少说,直接…

【C++】 string类的模拟实现

目录 一、我们先创建三个文件分别为 String.h(声明)、String.cpp(定义)、teat.cpp(测试) 二、成员函数 构造函数与析构函数 🌟string() 🌟string(const char* str) &#x1f…

探索SideLlama:浏览器中的本地大型语言模型

在这个数字化时代,浏览器扩展程序已经成为我们日常网络体验中不可或缺的一部分。它们不仅为我们提供了便利,还为我们的浏览体验增添了更多的功能和乐趣。今天,我要介绍的是一个全新的Chrome浏览器扩展程序——SideLlama,它能够让你…

SOMEIPSRV_ONWIRE_03: 从请求中复制请求ID到响应消息

测试目的: 确保服务器在生成响应消息时将请求ID从请求消息复制到响应消息。 描述 本测试用例旨在验证DUT(Device Under Test,被测试设备)在处理SOME/IP请求和生成相应响应时,是否将请求消息中的请求ID正确复制到了响…

苹果相册里的视频删除了怎么恢复?只需3招,轻松拿捏

一个不小心手滑把苹果手机相册里的视频删除了怎么办?删除了是不是再也找不回来了?那些美好的回忆是不是也从此消散了?当然不是!苹果手机相册里的视频删除了怎么恢复?小编这里有3个秘诀,可以让它重新出现在你…

中智讯与黄淮学院共建“嵌入式边缘计算创客工坊”正式签约

7月13日,中智讯(武汉)科技有限公司与黄淮学院共建“嵌入式边缘计算创客工坊”正式签约。出席签约仪式的有黄淮学院电子信息学院党委书记魏迎军同志、院长高有堂教授、副院长吴忠林教授、党委副书记从卫东同志及全体教职工,中智讯(武汉)科技有限公司技术副…

Jackson详解

文章目录 一、Jackson介绍二、基础序列化和反序列化1、快速入门2、序列化API3、反序列化API4、常用配置 三、常用注解1、JsonProperty2、JsonAlias3、JsonIgnore4、JsonIgnoreProperties5、JsonFormat6、JsonPropertyOrder 四、高级特性1、处理泛型1.1、反序列化List泛型1.2、反…

Nexus3 批量上传 jar 包、pom文件

Nexus3 Maven 私服搭建及各种使用 详见**Maven私服搭建及各种使用汇总2020** Maven 配置 Nexus 私服 在 Maven 项目中配置 Nexus 私服,需要在项目的 pom.xml 或 maven 的 settings.xml 文件中添加 Nexus 仓库的配置。 示例: 以下是一个项目的 pom.xml…