【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】

目录

  • 1.简介
  • 2.环境安装
    • 2.1安装torch相关库
    • 2.2 获取yolov8最新版本,并安装依赖
  • 3. 如何使用模型用于各种CV任务
    • 3.1 目标检测任务实现
      • 检测图片代码
      • 检测视频代码
    • 3.2 分割任务实现
      • 分割图片代码
      • 分割视频代码
    • 3.3 追踪任务
    • 3.4 姿态检测任务
      • 姿态检测(图片)代码
      • 姿态检测(视频)代码
  • 4. 模型中相关参数及结果说明
    • 4.1模型预测可以设置的参数
    • 4.2 results[0].plot()图形展示可以设置的参数说明
    • 4.3 模型支持的图片与视频格式
    • 4.4 各任务检测结果results信息说明
  • 总结

1.简介

YOLOv8是Ultralytics的最新版本YOLO。作为最先进的 SOTA 模型,YOLOv8 建立在以前版本成功的基础上,引入了新功能和改进,以增强性能、灵活性和效率。YOLOv8 支持全方位的视觉 AI 任务,包括检测分割姿势估计跟踪分类。这种多功能性使用户能够在不同的应用程序和域中利用YOLOv8的功能。模型中只需要设定不同的训练模型,就可以得到不同的检测结果。

本文主要介绍如何使用该模型框架进行CV中各种任务的推理使用,包含检测分割姿势估计跟踪,关于模型的训练等相关内容,后续有空再进行更新,感兴趣的小伙伴,可以点赞关注我~谢谢

为了方便小伙伴们学习,我已将本文的所有源码、相关预训练模型及视频等打包好,需要的小伙伴可以通过以下方式获取:

关注GZH【阿旭算法与机器学习】,回复【YOLOV8】可获取本文所有源码、预训练模型及示例图片视频数据

在这里插入图片描述

2.环境安装

2.1安装torch相关库

官网地址:https://pytorch.org/get-started/locally

安装命令:

pip install torch torchvision torchaudio

在这里插入图片描述

2.2 获取yolov8最新版本,并安装依赖

github地址: https://github.com/ultralytics/ultralytics

通过克隆仓库到本地来获得yolov8最新版本。
在这里插入图片描述
安装依赖环境:

pip install ultralytics

3. 如何使用模型用于各种CV任务

安装好yolov8需要的运行环境之后,就可以直接使用模型了,目前,该模型可以直接用于检测分割姿势估计跟踪分类这5类检测任务。
支持两种运行方式:
方式一:命令行形式示例

yolo TASK MODE ARGS

举例: yolo detect predict model=yolov8n.pt source='1.jpg'
表示对图片1.jpg进行目标检测

参数说明:

TASK (optional) 表示模型任务类型,可以从列表 [detect, segment, classify, pose]选一个. 分别代表检测、分割、分类、姿态检测任务
MODE (required) 表示模型需要执行的操作,可以从列表 [train, val, predict, export, track, benchmark]选一个,分别代表训练、验证、预测、模型转换、追踪、基准模型评估
ARGS (optional) 表示其他的一些参数设置,后面详细说明

方式二:python代码形式示例

from ultralytics import YOLO

# 加载预训练模型,
model = YOLO('yolov8n.pt',task='detect')
# yolov8n.pt表示预训练模型
# task代表需要执行的任务:detect, segment, classify, pose
# 使用模型进行指定任务
results = model(ARGS)

3.1 目标检测任务实现

检测图片代码

from ultralytics import YOLO
import cv2
# 加载预训练模型
model = YOLO("yolov8n.pt", task='detect') 
# model = YOLO("yolov8n.pt") task参数也可以不填写,它会根据模型去识别相应任务类别
# 检测图片
results = model("./ultralytics/assets/bus.jpg")
res = results[0].plot()
cv2.imshow("YOLOv8 Inference", res)
cv2.waitKey(0)

在这里插入图片描述

检测视频代码

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
print('111')
# Open the video file
video_path = "1.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

请添加图片描述

3.2 分割任务实现

分割图片代码

from ultralytics import YOLO
import cv2
# Load a model
model = YOLO('yolov8n-seg.pt')  
# Predict with the model
results = model('./ultralytics/assets/bus.jpg')  # predict on an image
res = results[0].plot(boxes=False) #boxes=False表示不展示预测框,True表示同时展示预测框
# Display the annotated frame
cv2.imshow("YOLOv8 Inference", res)
cv2.waitKey(0)

在这里插入图片描述

分割视频代码

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n-seg.pt', task='segment')
# Open the video file
video_path = "1.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()
        # annotated_frame = results[0].plot(boxes=False)不显示预测框

        # Display the annotated frame
        cv2.imshow("YOLOv8 Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

显示预测框结果
请添加图片描述
不显示预测框结果
将代码中的boxes设为False即可:
annotated_frame = results[0].plot(boxes=False)
请添加图片描述

3.3 追踪任务

代码如下:【与目标检测不同的是,每个物体有一个ID。

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt',task='detect')  
# model = YOLO('yolov8n-seg.pt')  

# Track with the model
results = model.track(source="1.mp4", show=True)

请添加图片描述

3.4 姿态检测任务

姿态检测(图片)代码

from ultralytics import YOLO
import cv2
# Load a model
model = YOLO('yolov8n-pose.pt')  # load a pretrained model (recommended for training)
results = model('./ultralytics/assets/bus.jpg')
res = results[0].plot()
cv2.imshow("YOLOv8 Inference", res)
cv2.waitKey(0)

在这里插入图片描述

姿态检测(视频)代码

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n-pose.pt', task='pose')
# Open the video file
video_path = "1.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

请添加图片描述

4. 模型中相关参数及结果说明

4.1模型预测可以设置的参数

results = model(source= ‘./ultralytics/assets/bus.jpg’)

此处可以设置许多不同的参数,参数说明如下:
在这里插入图片描述

4.2 results[0].plot()图形展示可以设置的参数说明

results= model(img)
res_plotted = results[0].plot()
cv2.imshow("result", res_plotted)

在这里插入图片描述

4.3 模型支持的图片与视频格式

图片格式:
在这里插入图片描述
视频格式:
在这里插入图片描述

4.4 各任务检测结果results信息说明

上述各任务中的检测结果results均为一个列表,每一个元素为result对象,包含以下属性,不同任务中使用的属性不相同。详细说明如下:

Results.boxes:表示Boxs对象,具有属性和操作边界框的方法
Results.masks:用于获取分割相关信息
Results.probs:表示预测各类别的概率
Results.orig_img:表示内存中加载的原始图像
Results.path:表示输入图像路径的路径

results = model("./ultralytics/assets/bus.jpg")
for result in results:
    **# Detection 目标检测**
    result.boxes.xyxy   # box with xyxy format, (N, 4)
    result.boxes.xywh   # box with xywh format, (N, 4)
    result.boxes.xyxyn  # box with xyxy format but normalized, (N, 4)
    result.boxes.xywhn  # box with xywh format but normalized, (N, 4)
    result.boxes.conf   # confidence score, (N, 1)
    result.boxes.cls    # cls, (N, 1)
    **# Segmentation  分割**
    result.masks.data      # masks, (N, H, W)
    result.masks.xy        # x,y segments (pixels), List[segment] * N
    result.masks.xyn       # x,y segments (normalized), List[segment] * N
    **# Classification  分类**
    result.probs     # cls prob, (num_class, )

总结

由于篇幅原因,本文只是介绍了如何使用预训练模型进行相关的任务检测,关于模型的训练及其他相关内容,后续有时间再进行更新,感兴趣的小伙伴,可以点赞关注我~谢谢

个人觉得这套YOLOv8框架还是十分强大的,一套框架几乎可以解决大部分CV领域的检测任务,只需更换不同的训练模型就行,文章如果对你有帮助,感谢小伙伴们的一键3连哦~我们下次再见

为了方便小伙伴们学习,我已将本文的所有源码、相关预训练模型及视频等打包好,需要的小伙伴可以通过以下方式获取:

关注下方名片【阿旭算法与机器学习】,回复【YOLOV8】可获取本文所有源码、预训练模型及示例图片视频数据

在这里插入图片描述

参考:https://docs.ultralytics.co

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之“树”——二叉树、红黑树、B树、B+树、B*树

这篇文章主要简单总结下二叉树、红黑树、B树、B树、B*树的基本结构和原理。 一、二叉树 二叉树就是度不超过2的树(每个结点最多有两个子结点)。 二叉树是有序树(二叉排序树),若将其左右子树颠倒,则成为另一棵不同的二叉树。 二叉…

php+vue+mysql医院医护人员医生排班系统

本医护人员排班系统管理员,医护。管理员功能有个人中心,医院信息管理,医护信息管理,医护类型管理,排班信息管理,排班类型管理,科室信息管理,投诉信息管理。医护人员可以修改自己的个…

「二线豪华」或成历史,理想反超沃尔沃再树「里程碑」

今年的上海车展,除了占据C位的新能源汽车,还有传统车企。 上海车展开幕前,沃尔沃汽车大中华区销售公司总裁钦培吉在新车发布会上直言:“新势力会的,我们三年就学会了;我们会的,新势力十年都学不…

Android安装apk出现 “安装包无效”或“安装包不兼容”的解决方案

Android 安装apk出现“安装包无效”或“安装包不兼容”解决方案 1. 问题出现2. 配置 build.gradle3. 生成Signed APK 1. 问题出现 使用Android Studio安装apk到手机一切正常,但是分享出去出现安装apk出现“安装包无效”或“安装包不兼容”问题 这种情况需要我们设…

4 IK分词器

4 IK分词器 4.1测试分词器 在添加文档时会进行分词,索引中存放的就是一个一个的词(term),当你去搜索时就是拿关键字去匹配词,最终 找到词关联的文档。 测试当前索引库使用的分词器: post 发送&#xff…

【分布式理论】聊一下 ACID、BASE、CAP、FLP

分布式理论基础 今天我们来聊一下分布式相关基础理论基础,上一篇文章中,我描述了一下分布式系统的纲,但是想要入手学习分布式系统设计,其实需要先从基本理论开始。而知名的ACID、BASE、CAP、FLP都是相关的理论基础。 ACID ACID…

六、FM1288调试方案-调试过程及细节

本篇文章,主要讲述实际调试操作:具体到需要调节哪些寄存器,调节完后,会有什么样的变化。但是整体效果不能达到我们期望的绝对感觉,所以我先把我们调试的结果放在前面,如果觉得不理想,也可以不看后面的内容了。 文章目录 1. 调试准备1.1 建立与FM1288芯片通信1.2 Uart结…

什么是多相流?在熟悉工业中常见的两相及多相流的分类及特点

文章目录 一、多相流的概览1.相的概念 二、多相流的引入单相流与多相流: 三、多相流及特性介绍四、常见的多相流的分类及特点1、常见的两相及多相流3、两相流动力学的发展简史4、两相流的研究方法和理论模型 一、多相流的概览 1.相的概念 物理学: 自然界中物质的态…

基于simulink使用麦克风阵列的声波束成形

一、前言 此示例演示如何对麦克风阵列接收到的信号进行波束化,以在嘈杂环境中提取所需的语音信号。 二、模型的结构 该模型模拟在 10 元件均匀线性麦克风阵列 (ULA) 上接收来自不同方向的三个音频信号。在接收器处添加热噪声后,应…

智慧厕所引导系统的应用

智慧公厕引导系统是一种基于智能化技术的公厕管理系统,可以为如厕者提供更加便捷、舒适、安全的如厕环境和服务,同时也可以引导如厕者文明如厕,营造文明公厕的氛围。智慧公厕引导系统可以通过智能引导屏、手机小程序等方式,为如厕…

【存储数据恢复】NetApp存储WAFL文件系统数据恢复案例

存储数据恢复环境: NetApp存储设备,WAFL文件系统,底层是由多块硬盘组建的raid磁盘阵列。 存储故障: 工作人员误操作导致NetApp存储内部分重要数据被删除。 存储数据恢复过程: 1、将存储设备的所有磁盘编号后取出&…

Linux上Nacos基本使用:连接MySQL并修改密码、启动、停止命令等

Nacos如何连接MySQL并修改密码 说明如何将内嵌数据库Derby切换为MySQL数据库直接新建MySQL数据库: 必须是MySQL5.7及以上 如何修改密码启动、停止命令 说明 nacos默认: 使用内嵌的数据库(Derby)默认登录地址 ip:8848/nacos; 账号&#xff1…

React 组件

文章目录 React 组件复合组件 React 组件 本节将讨论如何使用组件使得我们的应用更容易来管理。 接下来我们封装一个输出 “Hello World&#xff01;” 的组件&#xff0c;组件名为 HelloMessage&#xff1a; React 实例 <!DOCTYPE html> <html> <head> &…

JVM系列-第7章-对象的实例化内存布局与访问定位

对象的实例化内存布局与访问定位 对象的实例化 大厂面试题 美团&#xff1a; 对象在JVM中是怎么存储的&#xff1f;对象头信息里面有哪些东西&#xff1f; 蚂蚁金服&#xff1a; 二面&#xff1a;java对象头里有什么 对象创建的方式 new&#xff1a;最常见的方式、单例…

系统分析师之系统设计(十五)

目录 一、软件流程设计 1.1 业务流程分析方法 1.2 业务流程建模 1.2.1 标杆瞄准 1.2.2 IDEF 1.2.3 DEMO 1.2.4 流程建模语言 1.2.5 基于服务的BPM 1.2.6 业务流程重组BPR 1.2.7 业务流程管理BPM 二、软件架构设计 2.1 概念 2.2 软件架构风格 三、 结构化设计 四…

为什么停更ROS2机器人课程-2023-

机器人工匠阿杰肺腑之言&#xff1a; 我放弃了ROS2课程 真正的危机不是同行竞争&#xff0c;比如教育从业者相互竞争不会催生ChatGPT…… 技术变革的突破式发展通常是新势力带来的而非传统行业的升级改革。 2013年也就是10年前在当时主流视频网站开启分享&#xff1a; 比如 …

Vulfocus-struts2初了解

CVE-2013-2135 漏洞原理&#xff1a; 配置了通配符*&#xff0c;访问name.action时使用name.jsp来渲染页面&#xff0c;但是在提取name解析时&#xff0c;对其执行了OGNL表达式解析&#xff0c;所以导致了命令执行。如果一个请求与任何其他定义的操作不匹配&#xff0c;它将匹…

AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享

安科瑞 耿敏花 一、 行业背景 近年来&#xff0c;在国家政策引导与技术革新驱动的双重作用下&#xff0c;锂电产业保持快速增长态势&#xff0c;产业规模持续扩大&#xff0c;同时新能源产业工厂锂电池生产线对于电的依赖性很高&#xff0c;因而对供电设备的可靠性提出…

stable diffusion模型讲解

AI模型最新展现出的图像生成能力远远超出人们的预期&#xff0c;直接根据文字描述就能创造出具有惊人视觉效果的图像&#xff0c;其背后的运行机制显得十分神秘与神奇&#xff0c;但确实影响了人类创造艺术的方式。 AI模型最新展现出的图像生成能力远远超出人们的预期&#xf…

JAVA代码规范审查

JAVA代码规范审查 1. 添加必要的注释 所有的类都必须添加创建者和创建日期&#xff0c;以及简单的注释描述 方法内部的复杂业务逻辑或者算法&#xff0c;需要添加清楚的注释 一般情况下&#xff0c;注释描述类、方法、变量的作用 任何需要提醒的警告或TODO&#xff0c;也要注…