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

这篇具有很好参考价值的文章主要介绍了【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简介

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

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

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

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

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

2.环境安装

2.1安装torch相关库

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

安装命令:

pip install torch torchvision torchaudio

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

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

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

通过克隆仓库到本地来获得yolov8最新版本。
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】
安装依赖环境:

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)

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

检测视频代码

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()

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

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)

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

分割视频代码

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()

显示预测框结果
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】
不显示预测框结果
将代码中的boxes设为False即可:
annotated_frame = results[0].plot(boxes=False)
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】

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)

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

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)

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

姿态检测(视频)代码

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()

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

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

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

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

此处可以设置许多不同的参数,参数说明如下:
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】

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

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

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

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

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

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】可获取本文所有源码、预训练模型及示例图片视频数据

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

参考:https://docs.ultralytics.co文章来源地址https://www.toymoban.com/news/detail-455498.html

到了这里,关于【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mediapipe框架介绍及使用说明

            Mediapipe是Google开发的一款开源的跨平台框架,用于构建基于机器学习的应用程序,特别是涉及到计 算机视觉、音频处理、姿势估计 等领域。Mediapipe库提供了一系列预训练模型和工具,可以帮助开发者快速构建和部署计算机视觉和音频处理应用。它提供了一套易于

    2024年01月20日
    浏览(38)
  • 【VxWorks】VxWorks系统详细介绍说明,环境搭建说明,使用场景,使用实例

    目录 1.VxWorks 概述 2.详细介绍 2.环境搭建说明 3.使用场景 4.使用实例         VxWorks 是一款实时操作系统(RTOS),广

    2024年02月15日
    浏览(42)
  • chmod命令详细使用说明

    chmod命令详细使用说明 chmod 是Unix和类Unix系统上用于更改文件或目录权限的命令。它是\\\"change mode\\\"的缩写。在Linux和其他类Unix操作系统中,文件和目录具有权限位,用来控制哪些用户可以访问、读取、写入或执行它们。 chmod 命令允许用户修改这些权限位,以实现更精细的文件和

    2024年02月15日
    浏览(44)
  • TensorFlow 决策森林详细介绍和使用说明

    使用TensorFlow训练、调优、评估、解释和部署基于树的模型的完整教程 两年前TensorFlow (TF)团队开源了一个库来训练基于树的模型,称为TensorFlow决策森林(TFDF)。经过了2年的测试,他们在上个月终于宣布这个包已经准备好发布了,也就是说我们可以真正的开始使用了。所以这篇文

    2023年04月24日
    浏览(41)
  • strip()函数详细说明及使用方法

    strip() 函数是Python字符串方法之一,用于处理字符串的前导和尾随空白字符。它返回一个新字符串,该字符串是原始字符串去除前导和尾随空格(包括空格、制表符、换行符等)后的结果。 详细说明 self :表示要操作的字符串对象。 chars :是一个可选参数,用于指定要去除的

    2024年02月07日
    浏览(42)
  • 详细说明使用husky规范前端项目搭建

    什么是husky: 操作git hook的工具,主要实现代码提交前 eslint 校验和 commit 信息的规范校验,也可以避免多人合作时代码格式化不统一造成的冲突 什么是git hook: 通常分为客户端钩子和服务端钩子,这里主要介绍客户端钩子。 pre-commit: 该钩子在键入提交信息前运行。 它用于检

    2024年02月11日
    浏览(50)
  • 使用nginx进行负载均衡配置详细说明

    nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提

    2024年02月07日
    浏览(48)
  • idea中git的使用详细说明

    一.克隆项目 1. 打开FileNewProject from Version Control... 2. 打开gitLab,复制项目地址 3. 粘贴到第1步中的URL中,点击“Clone” 二.代码提交 1. 修改文件后需要提交时,可以在git-Local Changes中看到你修改的文件及修改内容 2. 选中要提交的文件,右键,选择“Commit File” 3. 填写本次提交的

    2024年02月04日
    浏览(37)
  • 网络测试工具——iperf3详细使用说明

    iperf3是一款带宽测试工具,它支持调节各种参数,比如通信协议,数据包个数,发送持续时间,测试完会报告网络带宽,丢包率和其他参数。 操作系统:Ubuntu20.04LTS 打开终端,直接输入 说明:不同的系统安装方式不同,这里只介绍ubuntu系统 环境假设: 假设两台设备。 A(客

    2024年02月03日
    浏览(56)
  • 使用SSM框架基于SpringBoot的个人博客+源代码+文档说明

    点击这里下载源码 项目介绍 通过从零开始搭建整个项目,了解整个开发流程,如何设计,如何实现,一步步发现,一步步解决。系统的运用SpringBoot与它集成的各种框架,对于学习了SpringBoot却没有实际运用的人是一个很好的练手项目。 主要技术与框架 项目构建:Maven web框架

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包