yolov8环境配置可能遇到的问题

YOLOv8环境配置中可能出现的问题

环境配置基于:【yolov8】从0开始搭建部署YOLOv8,环境安装+推理+自定义数据集搭建与训练,一小时掌握_哔哩哔哩_bilibili

yolov5环境配置可能遇到的问题-CSDN博客

CUDA版本我是延续YOLOv5的11.1大家可以自行选择(最好提前看下pytorch支持的版本,可以减少不必要的麻烦)

有了前面yolov5的环境配置作为铺垫,对于yolov8环境配置还是比较轻松的~

下面来说下我的配置流程:(我选择的CUDA版本为11.1.1)
 

1.CUDA下载(参考yolov5环境配置可能遇到的问题-CSDN博客

2.Anconda(参考yolov5环境配置可能遇到的问题-CSDN博客

3.pytorch环境创建(这个有点点不一样)

(我创建了一个新的环境yolov8,环境 python版本为3.8!!!我用3.7发生模块错误,所有模块重新下载)

conda create -n yolov8 python=3.8

创建好后:

conda activate yolov8

进入环境,然后看下一步:

进入pytorch官网(PyTorch

 

官网那里默认的版本都别选,因为会版本对应不上

我的选择是点击:左下角Previous version of PyTorch(选择更多版本)

然后因为我的是11.1.1的所以,我选择

对应的是CUDA 11.1的,注意是v1.8.0    前面的对应的不是11.1.1可能是11.1.0

                                                (下一步重要跟着我来,不然速度很慢)

从上图我们可以得到安装代码如下:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

但是,根据文章(yolov5环境配置可能遇到的问题-CSDN博客)反映,如果直接输入安装代码会非常慢,一直卡在Solving environment,通过查CSDN,我找到了比较快的方法:pytorch下载太慢的解决办法-CSDN博客

该方案就是将官网的下载路径,改到清华镜像源的路径,先用activate激活自己之前创建的环境后,在命令行输入以下代码:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

这时候我们输入安装代码,会发现出现错误:

可能是在镜像里找不到这个版本的cudatoolkit 11.1

我的思路如下:

先安装cudatoolkit=11.1再执行安装指令(单独分开来,这样到时候他会检测到你已经安装了cudatoolkit 11.1 后就会跳过寻找这个包了)不知道佬们有没有别的方法

conda install cudatoolkit=11.1 -c nvidia/label/cuda-11.1.1 -c conda-forge

安装完后再执行:(不需要填写 -c pytorch -c conda-forge就不会一直卡在Solving environment)

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1

                                                       然后等待安装...... 20-30分钟吧

4. pycharm安装

如:yolov5环境配置可能遇到的问题-CSDN博客

到这里最难的环境基本配置好了!                                           

pycharm部分:

5. 安装依赖:

在yolov8环境终端输入指令(第一个好像安装不了,不过没关系)

pip install -e ultralytics
pip install ultralytics
pip install yolo

6.训练:

训练部分也容易出现很多问题,出现的问题我都堆在下面了,先说下我的流程:

首先我们需要自定义数据集。自定义数据集跟yolov5有挺大区别,代码也不一样。我也是看了很多csdn的资料,最终通过尝试,以下的方法比较好用:

YOLOv8教程系列:一、使用自定义数据集训练YOLOv8模型(详细版教程,你只看一篇->调参攻略),包含环境搭建/数据准备/模型训练/预测/验证/导出等_yolov8训练自己的数据集-CSDN博客

下面我说下我对上面文章的理解

1.打标签:

跟yolov5打标签一样,使用labelimg进行标注(存放格式有讲究,请看下面)

2.文件说明

但是文件格式有所不同。根据上面文章可知yolov8有四个文件:Annotations, images, ImageSets, labels

打标签的时候:

Open Dir是图片路径是images

Change Save Dir是保存路径也就是Annotations

然后需要在ImageSets里面创建四个txt文件(test.txt train.txt trainval.txt val.txt)用来集中保存yolo文件

labels文件放的是全部txt文件(后面运行代码会生成txt文件)

3.按比例划分数据集

因为训练集train 验证集val 测试集test比例不同所以需要划分下数据集

按照文章调好自己的路径就好了,建议是绝对路径

4.将xml文件转换成YOLO系列标准读取的txt文件

填好自己的分类

classes = ['xxx']

5.修改数据加载配置文件

进入data/文件夹,新建xxx.yaml,内容如下,注意txt需要使用绝对路径

我的叫做bomb.yaml

6.模型训练

这一步有点问题 

我一开始输入的是yolo task=detect mode=train model=yolov8s.pt data==D:\yolov8\data\bomb.yaml epochs=100 imgsz=640 resume=True workers=2

会出现各种报错。经过排查,应该是model=yolov8s.pt这里出现问题了。我看b站视频上说的是用yolov8n.yaml(在目前版本找不到这个文件,好像是换了个名字)

我是找到了D:\yolov8\ultralytics-main\ultralytics\cfg\models\v8\yolov8.yaml

把他复制去了我的data文件夹下面。

但是我输入yolo task=detect mode=train model=D:\yolov8\data\yolov8.yaml data=D:\yolov8\data\bomb.yaml epochs=250 imgsz=640 workers=2 会出现以下报错:

可能是没有给他一个大小文件(像下图这种格式)

所以,我把yolov8.yaml的名字改成yolov8n.yaml后运行代码

 yolo task=detect mode=train model=D:\yolov8\data\yolov8n.yaml data=D:\yolov8\data\bomb.yaml epochs=350 imgsz=640 resume=True workers=2

                                                                成功开始训练......
 

7.推理问题

代码部分:

1.推理设置:

经过探索,我发现,如果想要修改参数值,只不需要找到相应文件的。而是通过代码进行设置。

具体方法如下:(以视频为例)

import cv2
from ultralytics import YOLO

# 模型加载权重
model = YOLO(r'D:\yolov8\runs\detect\train\weights\best.pt')
# 视频路径
cap = cv2.VideoCapture(0)
# 对视频中检测到目标画框标出来
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

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

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

只需要在捕获的图像帧中,在mode(frame,conf=?,show=?)设置即可。就跟终端的推理代码一样。(yolo task=detect mode=predict model=D:\yolov8\runs\detect\train\weights\best.pt source=0 device=0 show=True)

2.自己发现的问题

我一开始推理的时候非常卡,我以为是电脑是不行,通过查询,我得知是因为我调用函数的问题。

我一开始的代码是:

while cap.isOpened():
    success, frame = cap.read()  # 读取摄像头的一帧图像
    results = model(frame)
    if success:
        model.predict(source=frame, show=True)  # 对当前帧进行目标检测并显示结果
    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

啊错错错!这样卡死了!

后面经过排查,确认了是因为通过函数model.predict(source=frame, show=True)显示图片结果很慢!

后面改了一种显示方法:

while cap.isOpened():
    success, frame = cap.read()  # 读取摄像头的一帧图像
    results = model(frame)
    annotated_frame = results[0].plot()
    if success:
        cv2.imshow("YOLOv8 Inference", annotated_frame)
    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

啊对对对,通过cv.imshow来显示,速度快多了。

8.问题合集

1 import importlib.metadata ModuleNotFoundError: No module named 'importlib.metadata'

额,好好好,原来你也安装了3.8以下版本。。

没办法,重新安装环境吧......下次改成python=3.8就好

删除环境:conda remove -n 环境名字 --all

2 “ImportError: DLL load failed while importing _imaging: 找不到指定的模块”的错误

[完美解决]出现“ImportError: DLL load failed while importing _imaging: 找不到指定的模块”的错误-CSDN博客

3 Usage: yolo [OPTIONS] COMMAND [ARGS]...
Try 'yolo -h' for help.
Error: No such command 'task=detect'.

解决办法:

YOLOv8推理使用(指令讲解+报错解决方法)_yolov8 pt推理代码-CSDN博客

4.ConnectionError:   Download failure for https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt. Retry limit reached.

这个是说连不上github,搞个加速器就好了。

 5. raise RuntimeError(emojis(f"Dataset '{clean_url(self.args.data)}' error ❌ {e}")) from e     e
RuntimeError: Dataset '

听不懂思密达,估计是网络不太好。我是再输入同样的指令,等他训练

下面一堆问题我把它归结为设备性能问题:

6.raise RuntimeError( DataLoader worker (pid(s) {}) exited unexpectedly .format(pids_str)) from e RuntimeError: DataLoader worker (pid(s) 23984, 15984) exited unexpectedly

这个问题解决后我就可以开始训练了...(性能问题优先考虑我这个方法,下面的问题我都没找到好的解决办法,只有解决这个问题,我的程序才开始训练)

一开始我在终端输入的是:yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=100 imgsz=640 resume=True 

然后就会出现各种报错,通过查找资料,我发现是因为在yolov8中,默认workers=8好像,这样的话,对电脑要求特别高。通过修改代码:

yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=100 imgsz=640 resume=True workers=2

我就可以开始训练了......

7.for i, (f, n, m, args) in enumerate(d[backbone] + d[head]):  # from, number, module, args KeyError:  backbone

这个我不太懂,当时我再运行一遍就出现了别的问题

8.RuntimeError: cuda runtime error (2) : out of memory at ..\aten\src\THC\THCCachingHostAllocator.cpp:278

网上说显卡内存不足,在任务管理器关闭程序

9.OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading

解决办法:(OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “E:\Anaconda3\envs\yolov5\lib\site-packages\to_oserror: [winerror 1455] 页面文件太小,无法完成操作。 error load-CSDN博客

10.RuntimeError: CUDA out of memory. Tried to allocate 76.00 MiB (GPU 0; 8.00 GiB  total capacity; 112.42 MiB already allocated; 5.61 GiB free; 130.00 MiB reserved in total by PyTorch)

同8.一样显存爆炸,我也是通过修改workers=2解决的。

磁盘分配虚拟内存问题,设置完应该要重启电脑。

11.WARNING ⚠️ no labels found in detect set, can not compute metrics without labels

检查数据集,可能是名字没有按照规定来填写,或者转换xml转换成txt中间出现错误

如果都没有问题,看看是不是因为你cd .../进去了一个路径然后在终端执行的命令。这样的话它找不到根目录里面的图片。退出pycharm再重进

12.TensorFlow installation not found - running with reduced feature set.
没安装TensorFlow
 13.No dashboards are active for the current data set.

这个你得进入你的训练路径,例如:cd D:\yolov8\runs\detect\train

然后再输入 tensorboard --logdir="D:\yolov8\runs\detect\train"

14.WARNING ⚠️ data\images\90fdf0069a4b337d9181dd2b1a2b0de.jpg: corrupt JPEG restored and saved

应该跟11类似,数据集的问题。检查一下路径,名字,还有文件里面的内容

15.ValueError: not enough values to unpack (expected 3, got 0)

很大可能是你cd D:\yolov8\runs\detect\train进去了一个文件,里面执行训练代码,导致他找不到这个文件以外的东西。退出pycharm重新进去执行训练代码即可。

遇到的问题大概就这么多,还有问题的话可以再评论区问,我找到解决方法就会更新下文章。

  • 24
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值