【Pytorch】Yolov5中CPU转GPU过程报错完善留档归纳

2024-04-22 08:52

本文主要是介绍【Pytorch】Yolov5中CPU转GPU过程报错完善留档归纳,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Yolov5 + 从CPU转GPU + Python多版本切换 + Conda包处理

文章目录

    • Yolov5 + 从CPU转GPU + Python多版本切换 + Conda包处理
    • 1.Pytorch套件中存在版本不匹配
    • 2.numpy停留在3.8没跟上pytorch2.2.2
    • 3.ModuleNotFoundError: No module named 'pandas._libs.interval'
    • 4.ImportError: cannot import name '_c_internal_utils' from partially initialized module 'matplotlib' (most likely due to a circular import)
    • 5. 单升级matplotlib导致依赖缺失未升级
    • 6.ImportError: The scipy install you are using seems to be broken, (extension modules cannot be imported)
    • 7.If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management 炸空间
    • 8.NotImplementedError: Could not run ‘torchvision::nms' with arguments from the 'cuDA' backend.

1.Pytorch套件中存在版本不匹配

这是后续一系列惨烈报错的起点,包括但不限于pytorch与torch,torch与torchvision,numpy与python,升级python及numpy导致matplotlib多版本残留,处理matplotlib又导致scipy包损坏,最后一切修好后出现炸掉空间无法启动。。。。。。

ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchvision 0.17.2 requires torch==2.2.2, but you have torch 1.8.0 which is incompatible.

解决办法
与此前自动升级了torch而落下torchvision相反,这次是torch被落下(
发生原因是用conda create -n yolov5 python=3.8后,考虑原项目使用的是

torch==1.80+python3.8.16

把torch,torchvision,python都从低版本升级到高版本后,各种问题开始浮上水面。

2.numpy停留在3.8没跟上pytorch2.2.2

torch OSError: [WinError 126] 找不到指定的模块

升级numpy

pip install --upgrade numpy

3.ModuleNotFoundError: No module named ‘pandas._libs.interval’

(yolo5) C:\Users\ASUS\Desktop\yolo\yolov5>python train.py --img 640 --batch 32 --epoch 3 --data data/horse.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt
Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 49, in
import val as validate # for end-of-epoch mAP
^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\val.py”, line 39, in
from models.common import DetectMultiBackend
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\common.py”, line 18, in
import pandas as pd
File “E:\anaconda3\envs\yolo5\Lib\site-packages\pandas_init_.py”, line 22, in
from pandas.compat import is_numpy_dev as is_numpy_dev # pyright: ignore # noqa:F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\anaconda3\envs\yolo5\Lib\site-packages\pandas\compat_init
.py", line 25, in
from pandas.compat.numpy import (
File “E:\anaconda3\envs\yolo5\Lib\site-packages\pandas\compat\numpy_init_.py”, line 4, in
from pandas.util.version import Version
File “E:\anaconda3\envs\yolo5\Lib\site-packages\pandas\util_init_.py”, line 2, in
from pandas.util._decorators import ( # noqa:F401
File “E:\anaconda3\envs\yolo5\Lib\site-packages\pandas\util_decorators.py”, line 14, in
from pandas.libs.properties import cache_readonly
File "E:\anaconda3\envs\yolo5\Lib\site-packages\pandas_libs_init
.py", line 13, in
from pandas._libs.interval import Interval
ModuleNotFoundError: No module named ‘pandas._libs.interval’

缺了pandas小小的库依赖。。。

pip install --force-reinstall pandas

4.ImportError: cannot import name ‘_c_internal_utils’ from partially initialized module ‘matplotlib’ (most likely due to a circular import)

Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\common.py”, line 27, in
import ultralytics
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics_init_.py”, line 5, in
from ultralytics.data.explorer.explorer import Explorer
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data_init_.py”, line 3, in
from .base import BaseDataset
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data\base.py”, line 17, in
from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\utils_init_.py”, line 21, in
import matplotlib.pyplot as plt
File “E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib_init_.py”, line 157, in
from . import _api, _version, cbook, docstring, rcsetup
File "E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib\cbook_init
.py", line 35, in
from matplotlib import _api, _c_internal_utils
ImportError: cannot import name ‘_c_internal_utils’ from partially initialized module ‘matplotlib’ (mos

Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 49, in
import val as validate # for end-of-epoch mAP
^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\val.py”, line 39, in
from models.common import DetectMultiBackend
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\common.py”, line 34, in
import ultralytics
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics_init_.py”, line 5, in
from ultralytics.data.explorer.explorer import Explorer
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data_init_.py”, line 3, in
from .base import BaseDataset
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data\base.py”, line 17, in
from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\utils_init_.py”, line 21, in
import matplotlib.pyplot as plt
File “E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib_init_.py”, line 157, in
from . import _api, _version, cbook, docstring, rcsetup
File "E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib\cbook_init
.py", line 35, in
from matplotlib import _api, _c_internal_utils
ImportError: cannot import name 'c_internal_utils’ from partially initialized module ‘matplotlib’ (most likely due to a circular import) (E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib_init.py)

比较复杂,问题分析:

1.项目中存在与matplotlib同名的文件,修改同名的文件(因为matplotlib是库名不能修改,即只要项目中没有同名的文件即可),再三检查后,没有同名的文件,果断放弃这一方法。

2.因多次安装卸载Python的不同版本,可能存在多个matplotlib,重新卸载matplotlib库,使用:pip uninstall matplotlib,相关的也建议删除,然后再重新安装:pip install matplotlib.
如果因为相关库删除后无法找到库,要记得重新安装(下面马上就要考)
用这个方法解决了。

另外更新库是没有用的。

pip uninstall matplotlib
pip install matplotlib

5. 单升级matplotlib导致依赖缺失未升级

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 49, in
import val as validate # for end-of-epoch mAP
^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\val.py”, line 39, in
from models.common import DetectMultiBackend
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\common.py”, line 34, in
import ultralytics
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics_init_.py”, line 5, in
from ultralytics.data.explorer.explorer import Explorer
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data_init_.py”, line 3, in
from .base import BaseDataset
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\data\base.py”, line 17, in
from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
File “E:\anaconda3\envs\yolo5\Lib\site-packages\ultralytics\utils_init_.py”, line 21, in
import matplotlib.pyplot as plt
File “E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib_init_.py”, line 272, in
check_versions()
File "E:\anaconda3\envs\yolo5\Lib\site-packages\matplotlib_init
.py", line 266, in check_versions
module = importlib.import_module(modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\anaconda3\envs\yolo5\Lib\importlib_init
.py", line 90, in import_module
return _bootstrap.gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\anaconda3\envs\yolo5\Lib\site-packages\kiwisolver_init
.py", line 8, in
from ._cext import (
ModuleNotFoundError: No module named ‘kiwisolver._cext’

重新安装依赖

华丽的归来——缺失了相关的小依赖,重新按一遍吧。。。

pip uninstall matplotlib kiwisolver
pip install matplotlib

6.ImportError: The scipy install you are using seems to be broken, (extension modules cannot be imported)

Traceback (most recent call last):
File “E:\anaconda3\envs\yolo5\Lib\site-packages\scipy_init_.py”, line 184, in
from scipy._lib._ccallback import LowLevelCallable
File “E:\anaconda3\envs\yolo5\Lib\site-packages\scipy_lib_ccallback.py”, line 1, in
from . import _ccallback_c
ImportError: cannot import name ‘_ccallback_c’ from 'scipy.lib’ (E:\anaconda3\envs\yolo5\Lib\site-packages\scipy_lib_init.py)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 49, in
import val as validate # for end-of-epoch mAP
^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\val.py”, line 60, in
from utils.plots import output_to_target, plot_images, plot_val_study
File “C:\Users\ASUS\Desktop\yolo\yolov5\utils\plots.py”, line 18, in
from scipy.ndimage.filters import gaussian_filter1d
File “E:\anaconda3\envs\yolo5\Lib\site-packages\scipy_init_.py”, line 189, in
raise ImportError(msg) from e
ImportError: The scipy install you are using seems to be broken, (extension modules cannot be imported), please try reinstalling.

scipy是重要的包,损坏要到全局层面去修

这次不在conda或者pip来处理,需要直接到cmd再开个黑框框终端

打开Windows控制台命令窗口:
Win + R 打开Windows命令运行框 输入 cmd 
修复对应环境缺失的包,输入:
conda install -n 环境名xxx scipy

7.If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management 炸空间

Traceback (most recent call last):
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 850, in
main(opt)
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 625, in main
train(opt.hyp, opt, device, callbacks)
File “C:\Users\ASUS\Desktop\yolo\yolov5\train.py”, line 384, in train
pred = model(imgs) # forward
^^^^^^^^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\modules\module.py”, line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\modules\module.py”, line 1520, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\yolo.py”, line 263, in forward
return self._forward_once(x, profile, visualize) # single-scale inference, train
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ASUS\Desktop\yolo\yolov5\models\yolo.py”, line 167, in _forward_once
x = m(x) # run
^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\modules\module.py”, line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\modules\module.py”, line 1520, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\modules\upsampling.py”, line 157, in forward
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “E:\anaconda3\envs\yolo5\Lib\site-packages\torch\nn\functional.py”, line 4001, in interpolate
return torch._C._nn.upsample_nearest2d(input, output_size, scale_factors)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 26.00 MiB. GPU 0 has a total capacity of 4.00 GiB of which 0 bytes is free. Of the allocated memory 3.55 GiB is allocated by PyTorch, and 37.67 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)

思路分析:
显卡上空间不够,实在是绷不住,此前在4090上跑GLM3-32k-6B也遇到了这种情况,还有离谱的报错,尚待解决——
在这里插入图片描述

8.NotImplementedError: Could not run ‘torchvision::nms’ with arguments from the ‘cuDA’ backend.

在这里插入图片描述
NotImplementedError: Could not run ‘torchvision::nms’ with arguments from the ‘cuDA’ backend.This could be because the operator doesn’t exist for this backend,or was omitted during the selective/custom build process (if using custom build). If you are a Facebook employee using PyTorch on mobile,please visit…

嘛,如果对您有帮助的话就开心的复制吧,整理不易转载请注明qwq!
如果有更好的建议或意见欢迎补充!
我是亓云鹏(亓Qí),努力与大家一同分享算法的快乐!

每博一图(1/1)↓
在这里插入图片描述

下一个坑:

解决完所有可能的问题后胆战心惊(bushi)地开始启动
开始执行训练
在这里插入图片描述
小测试下训练结果
在这里插入图片描述在这里插入图片描述
跑出来的效果图

下面进行验证
python val.py --weights runs/train/exp/weights/best.pt --data ./data/horse.yaml --img 320
在这里插入图片描述
看一下效果
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

下一个坑:torch版本自动升级导致torchvision不一致报错

这篇关于【Pytorch】Yolov5中CPU转GPU过程报错完善留档归纳的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925334

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

如何用GPU算力卡P100玩黑神话悟空?

精力有限,只记录关键信息,希望未来能够有助于其他人。 文章目录 综述背景评估游戏性能需求显卡需求CPU和内存系统需求主机需求显式需求 实操硬件安装安装操作系统Win11安装驱动修改注册表选择程序使用什么GPU 安装黑神话悟空其他 综述 用P100 + PCIe Gen3.0 + Dell720服务器(32C64G),运行黑神话悟空画质中等流畅运行。 背景 假设有一张P100-

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文