YOLOv8的目标对象的分类,分割,跟踪和姿态估计的多任务检测实践(Netron模型可视化)

news2024/11/16 0:43:31

YOLOv8是目前最新版本,在以前YOLO版本基础上建立并加入了一些新的功能,以进一步提高性能和灵活性,是目前最先进的模型。YOLOv8旨在快速,准确,易于使用,使其成为广泛的目标检测和跟踪,实例分割,图像分类和姿态估计任务的绝佳选择。

1、安装YOLOv8

YOLOv8的安装条件

Python>=3.8
PyTorch>=1.7 

安装参考方法:

conda create -n yolov8torch python=3.8
activate yolov8torch
#进入到环境之后,克隆下来进行安装
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

或者直接pip安装(推荐) 

pip install ultralytics -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

安装完了之后,我们pip list查看下包的情况:

 

可以看到默认安装的这个torch2.0.1版本,对应的torchvision0.15.2版本,这个跟上一节的YOLOv5的

torch               1.9.0+cu111
torchvision         0.10.0+cu111

版本升级了,torch从1.9到2.0,torchvision也从0.1到0.15

2、YOLO一些命令

2.1、yolo help

一些如何使用的帮助信息:

    Arguments received: ['yolo', 'help']. Ultralytics 'yolo' commands use the following syntax:

        yolo TASK MODE ARGS

        Where   TASK (optional) is one of ('detect', 'segment', 'classify', 'pose')
                MODE (required) is one of ('train', 'val', 'predict', 'export', 'track', 'benchmark')
                ARGS (optional) are any number of custom 'arg=value' pairs like 'imgsz=320' that override defaults.
                    See all ARGS at https://docs.ultralytics.com/usage/cfg or with 'yolo cfg'

    1. Train a detection model for 10 epochs with an initial learning_rate of 0.01
        yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01

    2. Predict a YouTube video using a pretrained segmentation model at image size 320:
        yolo predict model=yolov8n-seg.pt source='https://youtu.be/Zgi9g1ksQHc' imgsz=320

    3. Val a pretrained detection model at batch-size 1 and image size 640:
        yolo val model=yolov8n.pt data=coco128.yaml batch=1 imgsz=640

    4. Export a YOLOv8n classification model to ONNX format at image size 224 by 128 (no TASK required)
        yolo export model=yolov8n-cls.pt format=onnx imgsz=224,128

    5. Run special commands:
        yolo help
        yolo checks
        yolo version
        yolo settings
        yolo copy-cfg
        yolo cfg

    Docs: https://docs.ultralytics.com
    Community: https://community.ultralytics.com
    GitHub: https://github.com/ultralytics/ultralytics

2.2、yolo checks

安装的信息和本地CPU,内存和硬盘情况

Ultralytics YOLOv8.0.121  Python-3.8.16 torch-2.0.1+cpu CPU
Setup complete  (4 CPUs, 16.0 GB RAM, 128.4/152.1 GB disk)

2.3、yolo version

当前的YOLO版本

8.0.121

2.4、yolo settings

一些设置信息

Printing 'C:\Users\Tony\AppData\Roaming\Ultralytics\settings.yaml'

datasets_dir: C:\Users\Tony\datasets
weights_dir: weights
runs_dir: runs
uuid: 6d4f9bb21b7de61b6e347095d24af1791873a87c908b54735ad4c38b58d6e67d
sync: true
api_key: ''
settings_version: 0.0.3

2.5、yolo copy-cfg和yolo cfg

yolo copy-cfg拷贝模型配置文件

D:\Anaconda3\envs\yolov8torch\Lib\site-packages\ultralytics\yolo\cfg\default.yaml copied to C:\Users\Tony\ultralytics\default_copy.yaml
Example YOLO command with this new custom cfg:
    yolo cfg='C:\Users\Tony\ultralytics\default_copy.yaml' imgsz=320 batch=8

yolo cfg直接查看或者打开.yaml文件也可以查看,里面是一些模型相关信息配置和参数等设置

3、运行YOLOv8

3.1、检测图片

安装好了之后,我们来检测下模型:

yolo predict model=yolov8n.pt source='https://tenfei03.cfp.cn/creative/vcg/veer/1600water/veer-327742747.jpg'

其中yolov8n.pt的权重参数文件,对于不能科学上网的朋友或者下载速度特别慢,我也上传到了CSDN,可以点击下载:
yolov8n.pt和yolov8n-seg.pt权重参数文件
下载好了之后,放入到ultralytics目录即可:

Ultralytics YOLOv8.0.121  Python-3.8.16 torch-2.0.1+cpu CPU
YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients

Downloading https:\tenfei03.cfp.cn\creative\vcg\veer\1600water\veer-327742747.jpg to veer-327742747.jpg...
100%|███████████████████████████████████████████████████████████████████████████████| 348k/348k [00:00<00:00, 3.73MB/s]
image 1/1 C:\Users\Tony\ultralytics\veer-327742747.jpg: 448x640 4 persons, 124.0ms
Speed: 4.0ms preprocess, 124.0ms inference, 3.0ms postprocess per image at shape (1, 3, 640, 640)
Results saved to runs\detect\predict

检测的图片在runs\detect\predict目录里面,如下图:

3.2、检测视频 

同样的也可以检测视频:

yolo predict model=yolov8n-seg.pt source='https://youtu.be/Zgi9g1ksQHc' imgsz=320
https://www.youtube.com/watch?v=au9k1QRTPlw

这里是油管的4分33秒时长的视频,需要科学上网,其中的权重参数文件yolov8n-seg.pt一起放在上面那个下载地址。

3.3、错误处理

处理视频的时候,不出意外这里出现缺失模块:ModuleNotFoundError: No module named 'pafy'

pafy是一个用于下载油管视频内容和检索元数据的Python库

pip install pafy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
更多详情可以查阅:https://pythonhosted.org/pafy/ 

ImportError: pafy: youtube-dl not found; you can use the internal backend by setting the environmental variable PAFY_BACKEND to "internal". It is not enabled by default because it is not as well maintained as the youtube-dl backend.
ModuleNotFoundError: No module named 'youtube_dl'

还需要安装一个对油管视频操作的库youtube_dl:

pip install youtube_dl -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

安装这两个库之后,可以先查看下是否成功

import pafy
dir(pafy)

#['GdataError', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'backend', 'backend_shared', 'call_gdata', 'channel', 'dump_cache', 'g', 'get_categoryname', 'get_channel', 'get_playlist', 'get_playlist2', 'load_cache', 'new', 'pafy', 'playlist', 'set_api_key', 'util']

youtube-dl --help

也正常显示出这个库的用法。再来测试下:

youtube_dl.utils.RegexNotFoundError: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

查看版本:

youtube-dl --version 或者 youtube_dl.version.__version__
'2021.12.17'
还以为是版本低了的缘故,于是进行升级
pip install --upgrade youtube_dl
但是发现问题不在这,这个就是最新版本,哈哈  

直接下载试下:youtube-dl --list-formats https://www.youtube.com/watch?v=au9k1QRTPlw

依然报错:

ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

 然后加一个 --verbose 参数看下具体错误,如图:

编码问题,于是将系统编码按上图步骤进行修改,之后,出现新的问题:

Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: 65001

Current thread 0x000027b8 (most recent call first):
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: 65001

Current thread 0x00002da0 (most recent call first):
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: 65001

Current thread 0x0000098c (most recent call first):

这整的编码造成不能初始化了,哈哈,然后修改回来,使用一个临时的编码修改来试下:

chcp 65001

这样就将默认的936修改成了65001,也就是中文变UTF-8,再来看下会不会成功:
Encodings: locale cp936, fs utf-8, out utf-8, pref cp936
什么鬼,编码还是没有变化啊。恩,想想也对,这个也只是在当前的命令行界面是更改过的编码。

————————————————————————————————
看来这个问题只能暂时搁置了,有解决办法的大佬欢迎留言,感谢!

4、JupyterLab中操作

上面是在命令行中操作,很多时候在JupyterLab操作还是要方便直观很多。 

列出在JupyterLab中的核心:jupyter kernelspec list
删除不需要的:jupyter kernelspec remove xxx

activate yolov8torch
conda install -c conda-forge jupyterlab
conda install ipykernel
python -m ipykernel install --user --name=yolov8torch --display-name yolov8torch

代码如下:

from ultralytics import YOLO

#加载模型
model = YOLO("yolov8n.yaml") 
model = YOLO("yolov8n.pt")

#若没有,将会下载coco128数据集(datasets\coco128下面的图片与标签)
model.train(data="coco128.yaml", epochs=3)
#在验证集上评估模型性能
metrics = model.val()
#预测
results = model("https://tenfei03.cfp.cn/creative/vcg/veer/1600water/veer-327742747.jpg")
#将模型导出为ONNX格式的
path = model.export(format="onnx")

训练速度还是很快的,然后将会在runs\detect检测目录下面生成trainval的训练和验证的目录,里面有一些训练和验证的图片、权重文件、损失函数等可视化图片,比如说验证的其中一张:

其中需要转换成onnx格式的模型文件,所以需要安装onnx
pip install onnx -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
将会生成在\runs\detect\train\weights目录

上面生成的onnx文件可以在 https://netron.app/ 这个站点上传,将显示整个模型的流程图和一些属性等,还可以导出,比如我将上面生成的best.onnx文件上传之后,生成的图,截图如下:

5、其他任务

当然除了上面的检测任务之外,还可以将里面的对象进行分类,分割,跟踪和姿态估计这样的任务。

5.1、分类任务

分类是最简单的一种,只需要检测里面的对象即可,不需要指定位置等情况

from ultralytics import YOLO

#加载分类模型(可以是官方给定模型,也可以是训练之后的模型)
model = YOLO('yolov8n-cls.yaml')
model = YOLO('yolov8n-cls.pt')
model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt')
#训练模型,数据集为MNIST
model.train(data='mnist160', epochs=100, imgsz=64)
results = model("https://alifei02.cfp.cn/creative/vcg/veer/1600water/veer-451045761.jpg")

训练之后的结果在ultralytics\runs\classify目录里面。

其中权重参数文件和MNIST手写数字数据集(每个类8张图片,训练和测试总计160张),也为了方便大家,上传在CSDN,可以点击下载:数据集与权重参数文件
下载好的权重参数文件放在ultralytics当前项目里面,数据集放在上个目录的datasets中,解压之后为datasets\mnist160

命令行同样跟上面检测命令一样,这里是分类,然后指定预训练模型为分类,数据集这里选择imagenet100,对于不方便下载的朋友,也包含在上面的下载中

yolo task=classify mode=predict model=yolov8n-cls.pt data=imagenet100 source='https://alifei02.cfp.cn/creative/vcg/veer/1600water/veer-451045761.jpg'

分类如图:

5.2、分割任务

对于实例分割是在检测的基础上做的改进,除了识别对象之外,还要知道对象的确切形状,好进行分割。我们来看下分割的情况,当然官方给出的例子是COCO数据集,这个都没关系,我这里依然使用imagenet100数据集

yolo task=segment mode=predict model=yolov8n-seg.pt data=imagenet100 source='https://alifei02.cfp.cn/creative/vcg/veer/1600water/veer-451045761.jpg'

分割如图:

5.3、姿态估计

姿态估计可以识别图像中对象上关键点的位置,关键点可以代表物体的各个部分,如关节、地标或其他显著特征。关键点的位置通常表示为一组二维[x, y]三维[x, y,visible]坐标。
姿态估计模型的输出是一组点,这些点代表图像中物体上的关键点,通常还有每个点的置信度分数。当你需要识别场景中物体的特定部分,以及它们彼此之间的位置时,姿势估计是一个很好的选择。

yolo task=pose mode=predict model=yolov8n-pose.pt data=imagenet100 source='https://alifei02.cfp.cn/creative/vcg/veer/1600water/veer-451045761.jpg'

姿态估计如图:

这些官方的.pt权重参数文件都保存在上面的一个下载地址中,当然也是可以自己训练得到pt权重文件,然后加载训练出来的权重文件,比如train\weights里面的best.pt,如果对于下载特慢或有需求的可以下载试试,体验下最新版本的YOLO。

引用来源
github:https://github.com/ultralytics/ultralytics

 

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

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

相关文章

MATLAB 之 Simulink 操作基础和系统仿真模型的建立

这里写目录标题 一、Simulink 操作基础1. Simulink 的启动与退出1.1 Simulink 的启动1.2 模型文件的打开1.3 Simulink 的退出 2. Simulink 仿真初步2.1 模型元素2.2 仿真步骤2.3 简单实例 二、系统仿真模型的建立1. Simulink 的基本模块2. 模块操作2.1 添加与删除模块2.2 选取模…

快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

目录 1. 选用工程&#xff1a;lit-llama2. 下载工程3. 安装环境4. 下载LLAMA-7B模型5. 做模型转换6. 初步测试7. 为什么要进行指令微调&#xff1f;8. 开始进行指令微调8.1. 数据准备8.2 开始模型训练8.3 模型测试 前言&#xff1a; 系统&#xff1a;ubuntu 18.04显卡&#xff…

大数据ETL工具对比(Sqoop, DataX, Kettle)

前言 在实习过程中&#xff0c;遇到了数据库迁移项目&#xff0c;对于数据仓库&#xff0c;大数据集成类应用&#xff0c;通常会采用ETL工具辅助完成&#xff0c;公司和客户使用的比较多的是Sqoop, DataX和Kettle这三种工具。简单的对这三种ETL工具进行一次梳理。 ETL工具&…

无法更新iPhone,提示“无法检查更新”怎么办?

当我们需要 iPhone更新系统时&#xff0c;可以前往iPhone设置-通用-软件更新中获取更新推送。不过一些用户可能会遇到无法更新的问题&#xff0c;例如会提示“无法检查更新&#xff0c;检查软件更新时出错”。 以上情况可能是网络问题&#xff0c;可以尝试重新打开设置&#xf…

vue2实现公式规则编辑校验弹窗功能

文章目录 需求描述技术栈最终效果演示功能实现逻辑拆分代码目录结构实现思路光标实现底部单个符号或字段结构设计监听键盘事件&处理光标公式规则校验 总结 需求描述 需要一个弹窗&#xff0c;弹窗内部需要能够进行公式规则的配置并进行公式规则合法性校验。 技术栈 vue2e…

Thymeleaf的常用语法

&#x1f31f; Thymeleaf的常用语法 Thymeleaf是一个Java模板引擎&#xff0c;用于处理HTML、XML、JavaScript、CSS等文件。它可以与Spring框架无缝集成&#xff0c;为Web应用程序提供优雅的模板解决方案。本文将介绍Thymeleaf的常用语法&#xff0c;包括th属性、表达式、内置…

Spring Boot 中的 @RestController 注解,如何使用

Spring Boot 中的 RestController 注解 在 Spring Boot 中&#xff0c;我们经常需要编写 RESTful Web 服务&#xff0c;以便于客户端与服务器之间的通信。为了简化 RESTful Web 服务的开发&#xff0c;Spring Boot 提供了 RestController 注解&#xff0c;它可以让我们更方便地…

Jmeter实现参数加密

目录 一、使用__digest自带函数 以md5加密算法演示使用方法 二、在BeanShell 中使用JAVA代码实现算法加密 规避BUG的方法 JMeter有两种方法可以实现算法加密 一、使用__digest自带函数 参数说明&#xff1a; Digest algorithm&#xff1a;算法摘要&#xff0c;可输入值&a…

如何避免在处理数据时出现错误?

介绍 当业务运营管道中发生大量事情时&#xff0c;数据输入任务的优先级往往较低。但是&#xff0c;数据输入被认为是所有行业部门中经常发生的最重要的任务之一。从销售数据到客户分析&#xff0c;从财务数据到库存管理&#xff0c;每项工作都依赖于数据输入&#xff0c;这意…

前端vue入门(纯代码)16

【18.如何在Vue中配置代理服务器】 vue脚手架配置代理总结&#xff1a;修改了vue.config.js文件后必须重启项目【npm run serve】 方法一 ​ 在vue.config.js中添加如下配置&#xff1a; devServer:{proxy:"http://localhost:5000" }说明&#xff1a; 优点&#…

家政上门预约小程序;

家政上门预约小程序开发是一款本地生活类服务上门预约系统&#xff0c;覆盖家政保洁、保姆月嫂、上门维修、管道疏通、上门安装等各种到家服务。可以帮助创业者在不需要相关技术人员及大量资金投入的情况下&#xff0c;就能够轻松搭建并运营一个上门家政服务平台。 那么开发一…

【零基础入门学习Python---Python错误处理和异常保姆级教程】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【图像处理OpenCV(C++版)】——5.3 图像平滑之均值平滑(滤波)

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

Flutter学习四:Flutter开发基础(一)Widget

目录 0 引言 1 Widget 简介 1.1 Widget 概念 1.2 Widget 接口 1.3 Flutter中的四棵树 1.4 StatelessWidget 1.4.1 简介 1.4.2 Context上下文 1.5 StatefulWidget 1.6 State 1.6.1 简介 1.6.2 State生命周期 1.7 在 widget 树中获取State对象 1.7.1 通过Context…

详解如何使用nvm管理Node.js多版本

目录 NVM进行NodeJS多版本管理 背景 安装步骤 1. 下载nvm安装包 2. 安装nvm 使用步骤 下载nodejs 切换版本nodejs ​编辑 常用命令 NVM进行NodeJS多版本管理 背景 有的时候开发环境需要多个NodeJS的版本&#xff0c;这个时候就可以用NVM进行管理。 安装步骤 1. 下载n…

9 从0开始学PyTorch | 过拟合欠拟合、训练集验证集、关闭自动求导

这一小节在开始搞神经网络之前&#xff0c;我们先熟悉几个概念&#xff0c;主要还是把模型训练的流程打通。 过拟合和欠拟合 我们在日常的工作中&#xff0c;训练好的模型往往是要去评价它的准确率的&#xff0c;通过此来判断我们的模型是否符合我的要求。 几个可能的方案是&…

国外学位论文去哪里查找下载

查找下载国外博士论文最合适的文献数据库就是ProQuest学位论文全文数据库。 ProQuest学位论文全文数据库覆盖了大部分北美地区高等院校以及世界其他地区数千个高等院校每年获得通过的博硕士论文。是将ProQuest公司PQDD文摘库&#xff08;现名PQDT&#xff09;中适合中国科研人…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2023)

Windows 11 绕过 TPM 方法总结&#xff0c;通用免 TPM 镜像下载 (2023 年 6 月更新) 在虚拟机、Mac 电脑和 TPM 不符合要求的旧电脑上安装 Windows 11 的通用方法总结 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11-no-tpm/&#xff0c;查看最新版。原创作品…

nuxt3 多级动态路由

需求&#xff1a; 写法&#xff1a; 对应 文件目录 pages\product\[class]\[brand]\[SPU].vue pages/ --| product/ ----| [class] ------| [brand] --------| [SPU].vue script 内跳转方法 const router useRouter() const nuxtApp useNuxtApp()const jumpSPU () >…

caffeine和google-guava cache缓存使用详解和源码介绍

google-guava cache 1.pom引入其依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency> 2.具体使用 com.google.common.cache.LoadingCache<Strin…