当前位置: 首页 > news >正文

Ubuntu24.04配置yolov5

一、前言

记录一下在 Ubuntu24.04 系统上配置 yolov5 算法的过程。系统、anaconda3 都前期都已配置好,下载链接也已替换为镜像源。

1. 参考链接:

基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi

2. 项目链接

yolov5 官网

二、安装vscode

1. 安装vscode

【Vscode官网】https://code.visualstudio.com/Download

选择linux版本的.deb_x64版本,点击下载
在这里插入图片描述
下载完成后,在文件的下载中找到安装包,右键用应用中心打开,安装。

2. 配置 vscode

打开 vscode,点击拓展,下载拓展中文包
在这里插入图片描述

输入 chinese 找到中文包,点击 install 下载
在这里插入图片描述

下载完成后,右下角更改系统语言并且重启 vscode。
在这里插入图片描述

接下来配置 Python 拓展,同样在 vscode 拓展里输入 python 下载拓展并安装:
在这里插入图片描述

三、配置 yolov5

1. 新建虚拟环境

在终端输入:

conda create -n yolov5 python=3.8

yolov5 是我新建的虚拟环境的名称
激活虚拟环境:

conda activate yolov5

2. 安装 CUDA+cudnn+pytorch

这一部分我安装的版本不正确,后面测试的时候才发现,匹配我显卡的版本应为 CUDA11.8,具体见第五节第2部分,但安装过程没有问题

全程参考链接

1)查看 CUDA 与 cudnn 版本

在终端输入nvcc -V查看显卡信息,这里我能安装的 CUDA 的最高版本为 12.4。
在 pytorch 官网查看对应版本信息:
yolo5 要求安装的 torch 版本需要 >= 1.7,这里我选择安装 1.8 版本,对应的 CUDA 版本我选择 10.2:
在这里插入图片描述

2)安装 CUDA+cudnn

下载地址: https://developer.nvidia.com/cuda-toolkit
历史版本下载地址: https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述依次执行上面的两条命令:

wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run

在这里插入图片描述

然后出现:

A symlink already exists at /usr/local/cuda. Update to this installation?

因为我之前安装过一个 12.1 的版本,所以问我是否要覆盖之前的软链接。这里我选择 No。

创建新的软链接:

cd /usr/local 
sudo rm -r cuda
sudo ln -s cuda-10.2 cuda # 更改为cuda10.2

输入nvcc -V查看是否安装成功:
在这里插入图片描述
成功。

3) 安装 CUDNN

在官网选择合适的版本安装。
在这里插入图片描述

这里我选择8.7.0。解压后进入文件夹,并在文件夹中打开终端,执行以下命令:

sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

测试是否安装成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

4)安装 torch

  1. 打开官网
  2. 选择合适的版本

在这里插入图片描述
输入指令:

conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=10.2 -c pytorch

检测是否安装成功:

pythonimport torch
print(torch.version.cuda)
print(torch.backends.cudnn.version())

在这里插入图片描述

3. 安装其它包

  1. 在 yolov5 主文件夹中打开终端,激活虚拟环境
  2. 在终端输入指令:
pip install -U -r requirements.txt

四、测试 yolov5

  1. 打开 vscode,点击打开文件夹,点击 yolov5 文件夹
    在这里插入图片描述

  2. 打开后,信任文件夹
    在这里插入图片描述

  3. 点击 detect.py 文件,点击右下角的环境解释器,在上面选框中找到 yolov5 解释器。
    在这里插入图片描述

  4. 点击右上角的三角运行。
    在这里插入图片描述
    这里出现了一些问题,具体在第五节进行了详细描述。问题解决后测试结果如下:
    在这里插入图片描述
    在这里插入图片描述

五、出现问题

1. 没有 SPPF 模块

  1. 问题描述:
AttributeError: Can't get attribute 'SPPF' on <module 'models.common' from '/.../yolov5-5.0/models/common.py'>

问题原因就是在 models 文件夹下的 common.py 文件中没有找到 SPPF 模块。因为这里我下载的是 yolov5-v5.0 版本,而训练好的模型则下载的 7.0 版本,运行环境与模型版本不一致。

  1. 参考链接:
    link1
    link2
    link3

  2. 解决方案
    这里有两种解决方案,一种是将新版本 common.py 中的 SPPF 类复制过来,二是重新下载合适版本的训练模型。这里我选择第二种方法。
    更改utils/google_utils文件的内容:

response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json()  # github api

我这里是在第 25 行,可以看到现在下载的就是最新的模型。将他改为如下形式:

response = requests.get(f'https://api.github.com/repos/{repo}/releases/tags/v5.0').json()  # github api

我更改了以后还是无法成功下载,最终我是手动下载的,下载地址。

2. 显卡算力与 CUDA 不匹配

  1. 问题描述
UserWarning: 
NVIDIA GeForce RTX 4090 with CUDA capability sm_89 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37.
If you want to use the NVIDIA GeForce RTX 4090 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

也就是说我当前显卡的算力为 89,但是我安装的 pytorch 不支持这个算力,所以需要安装对应的版本。

  1. 参考链接
    link1

  2. 解决方案
    (1)查看显卡算力

    CUDA GPUs - Compute Capability | NVIDIA Developer

    4090对应8.9。

    (2)查看算力对应的cuda版本

    NVIDIA Datacenter Drivers :: NVIDIA Data Center GPU Driver Documentation

    对应 8.9 的是 cuda11.8,只能高不能低。

    (3)卸载 CUDA10.2

    参考链接

    这里我采用的是第一种方法,直接进入 /usr/local/cuda-10.2/bin文件夹,打开终端,输入命令:

sudo ./cuda-uninstaller

在这里插入图片描述
这里我是把除了 12.1 版本以外的都选中删除了。

(4)卸载 pytorch
参考链接
在终端输入以下命令:

conda remove pytorch torchvision torchaudio

(5)重装 CUDA+cudnn+pytorch

1)首先安装 CUDA11.8
在这里插入图片描述

输入第一行指令时出现如下问题:

无法写入 ‘cuda_11.8.0_520.61.05_linux.run’ (成功)

我重启了一下电脑好了。
在这里插入图片描述
在这里插入图片描述
创建新的软链接

cd /usr/local 
sudo rm -r cuda
sudo ln -s cuda-11.8 cuda

输入nvcc -V查看是否安装成功:
在这里插入图片描述
2)安装 cudnn
这里我选择8.9.7。解压后进入文件夹,并在文件夹中打开终端,执行以下命令:

sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

测试是否安装成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

3)安装 torch

  1. 打开官网
  2. 选择合适的版本
    pytorch 与 python 对应版本关系
    在这里插入图片描述
    验证是否安装成功:
pythonimport torch
print(torch.version.cuda)
print(torch.backends.cudnn.version())
print(torch.cuda.is_available())

在这里插入图片描述

3. charset-normalizer 库不匹配

  1. 问题描述:
AttributeError: partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most likely due to a circular import)
  1. 参考链接
    link1
    link2
  2. 解决方案
    我的 charset-normalizer 已经是 3.3.10 版本,应该不是版本过低导致的。这里我还是选择安装 3.1.0 版本。在终端输入以下内容:
pip install --force-reinstall charset-normalizer==3.1.0

问题解决。

4. undefined symbol: nvrtcGetCUBIN

  1. 问题描述
Could not load library libcudnn_cnn_infer.so.8. Error: /.../yolov5/lib/python3.8/site-packages/torch/lib/../../../../libnvrtc.so: undefined symbol: nvrtcGetCUBIN
已中止 (核心已转储)
  1. 参考链接
    link1
    link2
    link3
  2. 解决方案
    我在搜索解决方案的过程中发现,大家的错误后面几乎都是无法加载或找不到 libnvrtc.so,而我显示的却是有未定义的符号 nvrtcGetCUBIN。我这里确实也没有 libnvrtc.so 文件,因此我按照 link2 的方法创建了一个软链接,然而运行后问题依然存在。然后我猜想可能是 CUDA 与 cudnn 版本不匹配造成的?结果发现我的 cudnn 似乎根本没有安装成功。
    在命令行输入conda list,输出:
    在这里插入图片描述
    没有 cudnn,而且 cudatoolkit 版本也不对,还是 10.2 的版本。所以首先需要安装正确版本的 cudatoolkit。这里我运行命令conda uninstall cudatoolkit 失败了,没有成功卸载 cudatoolkit。于是我先卸载了 CUDA,再执行conda uninstall cudatoolkit ,卸载成功。之后又重新安装了 CUDA11.8。
    接下来是继续安装 cudnn。在命令行中输入dpkg -l | grep cudnn
    在这里插入图片描述
    然后发现我只有一个 9.3.0 版本的 cudnn。在网上搜索了一下,感觉 cudnn 的安装过程应该是没问题的,可能是有些地方没有配置成功。然后我看到了 link3。在 link3 中博主输入了一个命令sudo ldconfig用来更新库链接,这一步我没执行过,所以我也执行了一下,然后就报了错:
    在这里插入图片描述

然后我按照博主的方法创建了符号链接,并对 cudnn 进行了验证:

# 检查目标库是否存在
ls /usr/local/cuda-11.8/lib64/libcudnn_cnn_infer.so.8*# 查看cuDNN版本
cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述
成功。

5. 未找到 recompute_scale_factor 属性

  1. 问题描述
AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'
  1. 参考链接
    link1
    link2
  2. 解决方案
    找到 upsampling.py 文件的 forward 函数,如下:
def forward(self, input: Tensor) -> Tensor:return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,recompute_scale_factor=self.recompute_scale_factor)

注释掉,改为如下形式:

def forward(self, input: Tensor) -> Tensor:return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)
http://www.xdnf.cn/news/1361683.html

相关文章:

  • 使用 Gemini CLI作为 Claude Code的 subagent
  • 分布式锁设计实战:多级缓存防御设计优化同步性能
  • 《眼科学》10月版面征稿论文速递
  • Nestjs生命周期中全局方法执行顺序
  • 嵌入式开发学习———Linux环境下网络编程学习(六)
  • MySQL 行转列与列转行的实现方式
  • 在新塘SDK下面,有四中文件夹,GCC、IAR、KEIL、和Keil_AC6.这4个工程有什么区别。各自是怎样配置寄存器并实现SPI功能的
  • Aligning Effective Tokens with Video Anomaly in Large Language Models
  • Node.js面试题及详细答案120题(43-55) -- 性能优化与内存管理篇
  • 《飞算Java开发实战:从入门安装到项目部署》
  • 【GEE+Python 实战】用 Sentinel-2 监测 2024 年研究区 NDVI 变化(附完整源码与避坑指南)
  • Codejock Suite ProActiveX COM Crack
  • 一文掌握 Java 键盘输入:从入门到高阶(含完整示例与避坑指南)
  • LIANA | part1 intro部分
  • VMware Workstation 不可恢复错误:(vcpu-0)
  • 详细的周任务清单(Week1-Week24,每周具体目标+任务)
  • Socket some functions
  • 基于PHP服装租赁管理系统/基于php的服装管理系统的设计与实现
  • C#_gRPC
  • 【图像处理基石】基于 Python 的图像行人删除技术:实现街景无干扰化处理
  • 6.1Element UI布局容器
  • leetcode 162 寻找峰值
  • Polkadot - JAM
  • 13种常见机器学习算法总结
  • 青少年软件编程(python六级)等级考试试卷-客观题(2023年3月)
  • 学习制作记录(选项UI以及存档系统)8.24
  • 基于RISC-V架构的国产MCU在eVTOL领域的应用研究与挑战分析
  • 【Ollama】本地OCR
  • 波兰密码破译机bomba:二战密码战的隐形功臣
  • Shell 循环实战:while 与 until 的趣味编程之旅