Ubuntu24.04配置STMTrack

项目地址:https://github.com/fzh0917/STMTrack

一、安装 CUDA

参考链接:
Ubuntu24.04配置DINO-Tracker
Ubuntu多CUDA版本安装及切换
由于之前在其他项目中已经安装了 CUDA12.1,这次需要安装另一个版本。

1. 查看安装版本

按照 requirement.txt 中的要求,CUDA的版本为10.0,torch版本高于1.4。在 pytorch 官网上查看对应版本:
在这里插入图片描述
这里可以看到 pytorch1.4 对应 torchvision0.5,对应 CUDA10.1。

2. 安装CUDA

1) 下载安装包

下载地址: https://developer.nvidia.com/cuda-toolkit
历史版本下载地址: https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述
在这里插入图片描述
依次执行两条指令。
安装过程中如果提示 gcc 版本不匹配导致安装失败,需要在指令后添加--override
安装过程中注意不安装驱动,提示“A symlink already exists at /usr/local/cuda. Update to this installation?”选择 No。

2) 创建软链接

参考链接:
anzhuang
Ubuntu多CUDA版本安装及切换
由于我电脑中已经存在了一个 12.1 版本,CUDA 软链接是指向 12.1 的。上面那个选项选了 yes 会改变 CUDA 的软链接。

  1. 查看当前使用的 CUDA版本
    /usr/local路径下通过stat cuda命令查看当前使用的 CUDA 版本:
  2. 删除原本的 CUDA 软链接
sudo rm -rf /usr/local/cuda
  1. 建立新的指向 CUDA-10.1 的软链接
sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda
  1. 重新查看当前 CUDA 版本
    在这里插入图片描述

  2. 检查是否添加到环境变量

sudo gedit ~/.bashrc

在最后确认有没有下面这几行内容

export PATH=/usr/local/cuda/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

如果没有,将其添加到~/.bashrc的最后,然后运行命令

source ~/.bashrc

使配置的环境变量生效。

3. 安装 cudnn

1) 下载对应版本cudnn

官网
在这里插入图片描述

2) cd到cudnn所在的文件夹下进行解压等操作:

tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64/ 
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
     
cd /usr/local/cuda-10.0/lib64/
sudo ln -sf libcudnn.so.7.4.2 libcudnn.so.7

4. 新建环境

conda create -n STMTrack python=3.7 -y
conda activate STMTrack

二、安装 torch

参考链接:

  1. Ubuntu18.04+Cuda10.1+Python3.6 下安装 PyTorch1.4.0+torchvision0.5.0,成功安装torch1.4.0和torchvision并解决安装速度过慢
  2. ubuntu linux安装pytorch和torchvision

1. 添加镜像源安装(失败)

在这里插入图片描述

2. 使用 whl 文件安装(成功)

1) 下载镜像

镜像网址:https://download.pytorch.org/whl/torch_stable.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2) 安装

在whl文件目录打开终端,输入:

pip install torch-1.4.0+cu100-cp36-cp36m-linux_x86_64.whl
 
pip install torchvision-0.5.0+cu100-cp36-cp36m-linux_x86_64.whl

在这里插入图片描述

3) 检查是否安装成功

python

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

三、安装其他库

在项目地址打开终端,运行:

pip install -r requirements.txt

四、实验设置

参考链接:

  1. 把STMTrack跑起来
  2. CVPR2021跟踪算法STMTrack的配置

1. 预训练模型下载

在got上训练的https://drive.google.com/file/d/1AT6SAieig8oNQ-MJ6dUhCfgYCyJEdxfj/view
在全部数据集上训练的https://drive.google.com/file/d/1w7nhGZR53FQnh3fVbIcbj08hxa2Zjvub/view
将下载的预训练模型放入工程目录下新建的pretrain_model路径中

2. 其他设置

  1. STMTrack-main/experiments/stmtrack/test/目录下对 otb,uav,got 等数据集进行配置,以 uav 为例,打开STMTrack/experiments/stmtrack/test/UAV123/stmtrack-googlenet-uav123.yaml
    1). 更改预训练模型所在路径
    pretrain_model_path: "/root/STMTrack/epoch-19_fulldata.pkl" ,注意冒号与双引号之间有一个空格,提醒一下,要看一下原来文件中的与训练文件写的是 fulldata.pk1 还是 gotdata.pk1,改成对应文件的路径
    2). 更改 device_num
    好像是可用于计算任务的 GPU 数量,这里原代码中为10,我改为了1,可以通过以下方式在终端查询:
python
import torch
print(torch.cuda.device_count())

在这里插入图片描述
3). 添加数据集所在路径
在yaml 文件的最后一行添加数据集的路径 data_root: “数据集的绝对路径”
在这里插入图片描述
4). 下载 uav123.json 和 lasot.json
链接:git clone https://github.com/megvii-research/video_analyst/tree/master/videoanalyst/evaluation/got_benchmark/datasets 。
下载好后放入/videoanalyst/evaluation/got_benchmark/datasets

3.测试代码

在终端输入:

python main/test.py --config testing_dataset_config_file_path

或直接在test.py中添加默认 config 路径。

五、问题

RuntimeError: CUDA error: no kernel image is available for execution on the device

经过查阅,大部分帖子都说是 CUDA 版本和 torch 版本不匹配造成的,但我这个应该是匹配的:

python
import torch
print(torch.__version__)
# 显示torch和cuda版本
print(torch.cuda.is_available())
# 显示True

在这里插入图片描述
也有人说是由于算力和 CUDA 不匹配造成的,但是在浏览的过程中发现大家提到的由于算力不匹配导致的 CUDA erroe 似乎会详细提示算力不匹配,但我这里也没有提示,而且输入:

torch.ones((1, 1, 1, 1, 1)).cuda()

输出:

tensor([[[[[1.]]]]], device='cuda:0')

这算是能够调用成功?所以我也不太确定是不是算力问题导致的。按照这位大佬的方法,在 .bashrc 文件中改了算力也没用。

我的显卡为 RTX4090,在浏览的过程中发现有人说 4090 对应的最低 CUDA 版本为 11.8,有人说是 11.7, 在官方文档中查看 CUDA 与 算力的对应关系,没看懂,似乎是与 cudnn 有关?但是这个问题我始终不知道怎么改,抱着试试的心态重新配置了一个环境 CUDA11.7+torch1.13.0+torchvision0.14.0,配置完成后直接运行 test.py,成功。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Luckysheet 实现 excel 多人在线协同编辑(全功能实现增强版)

前言 感谢大家对 Multi person online edit(多人在线编辑器) 项目的支持,mpoe 项目使用 quill、luckysheet、canvas-editor 实现的 md、excel、word 在线协同编辑,欢迎大家Fork 代码,多多 Start哦~ Multi person online edit 多人协同编辑器…

workflow笔记

workflow 介绍 搜狗公司C服务器引擎,编程范式。支撑搜狗几乎所有后端C在线服务,包括所有搜索服务,云输入法,在线广告等,每 日处理数百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数后端与…

【Vulkan入门】09-CreateFrameBuffer

目录 先叨叨git信息关键代码VulkanEnv::FindHostVisitbaleMemoryTypeIndex()TestPipeLine::CreateFramebuffers() 与网上大多数文章不同,其他文章基本上都使用窗口框架(X11、GLFW、WSL等)提供的surface来显示Vulkan渲染出的图像。我认为那样会…

【人工智能】5G-A技术及应用

文章目录 前言一、5G-A基本概念及产业进展1、5G-A概述2、移动通信发展历史:不断扩大联结规模,扩展业务边界的过程3、标准Ready:首版本R18将于2024年H1冻结4、标准Ready:IMT2020完成5G-A技术测试5、频谱Ready:超大带宽是实现万兆体验的基础6、5G-A全球商用…

与 Cursor AI 对话编程:2小时开发报修维修微信小程序

本文记录了如何通过与 Cursor AI 对话,全程不写一行代码的情况下,完成一个完整的报修小程序。整个过程展示了 AI 如何帮助我们: 生成代码 、解决问题、优化实现、完善细节。 先看一下效果图: 一、项目配置 首先我是这样和 AI 对…

多模态大语言模型 MLLM 部署微调实践

1 MLLM 1.1 什么是 MLLM 多模态大语言模型(MultimodalLargeLanguageModel)是指能够处理和融合多种不同类型数据(如文本、图像、音频、视频等)的大型人工智能模型。这些模型通常基于深度学习技术,能够理解和生成多种模…

机器学习:全面学习路径指南

摘要: 本文精心规划了一条从入门到精通机器学习的学习路线,详细涵盖了基础理论构建、核心技术栈掌握、主流算法学习、实践项目锻炼以及前沿领域探索等多个关键阶段。通过逐步深入各个层面,介绍必备的数学知识、编程工具、经典与现代机器学习算…

Kingbase V8R6 数据库自动(逻辑)备份、删除脚本-Linux

脚本说明 1.该脚本为Linux环境下自动备份、删除Kingbase数据库备份脚本(逻辑备份); 2.执行脚本前,请先对脚本进行修改后,再使用。脚本效果 1.执行脚本时,若备份目录不存在,则自动创建备份目录…

网络应用技术 实验六:通过 DHCP 管理园区网 IP 地址(华为ensp)

一、实验简介 构建园区网,通过 DHCP 服务器为全网的用户主机提供 IP 地址。 二、实验目的 1 、理解 DHCP 的工作原理; 2 、掌握 DHCP 服务器的创建和配置方法; 3 、掌握将 VirtualBox 虚拟机引入 eNSP 的方法; …

Elasticsearch使用(2):docker安装es、基础操作、mapping映射

1 安装es 1.1 拉取镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:7.17.3 1.2 运行容器 运行elasticsearch容器,挂载的目录给更高的权限,否则可能会因为目录权限问题导致启动失败: docker r…

Flink 核心知识总结:窗口操作、TopN 案例及架构体系详解

目录 一、FlinkSQL 的窗口操作 (一)窗口类型概述 (二)不同时间语义下窗口实践 EventTime(事件时间) ProcessTime(处理时间) 二、窗口 TopN 案例解析 三、Flink架构体系 &…

Vscode配置自动切换node版本

Vscode配置自动切换node版本 问题描述 开发环境安装了很多Node JS版本,项目经常切换也常常忘记了使用了什么版本,所以最好在打开项目terminal,安装依赖,启动项目前自动设置好版本 具体配置 .vscode/settings.json中,添加如下代…

【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行

文章目录: 【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行前言安装docker-centos7 【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行 💬欢迎交流:在学习…

leetcode108.将有序数组转换为二叉搜索树

标签:二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,…

C# 探险之旅:第二节 - 定义变量与变量赋值

欢迎再次踏上我们的C#学习之旅。今天,我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下,你正站在一个魔法森林里,手里拿着一本空白的魔法书(其实就是你的代码编辑器),准备记录下各种神奇…

基于事件驱动的websocket简单实现

websocket的实现 什么是websocket? WebSocket 是一种网络通信协议,旨在为客户端和服务器之间提供全双工、实时的通信通道。它是在 HTML5 规范中引入的,可以让浏览器与服务器进行持久化连接,以便实现低延迟的数据交换。 WebSock…

libaom 源码分析:av1_rd_use_partition 函数

libaom libaom 是 AOMedia Video 1 (AV1) 视频编码格式的参考实现库,由 Alliance for Open Media (AOMedia) 开发和维护。AV1 是一个高效、开放、免专利授权的下一代视频编解码标准,设计目标是提供较高的视频压缩效率,同时适配各种分辨率、码率和平台。下载:git clone http…

如何恢复使用 Cursor 免费试用

当用户尝试创建过多免费试用账户时,会收到提示:“Too many free trial accounts used on this machine. Please upgrade to pro.” 这限制了用户的试用次数。AI大眼萌帮助大家绕过 Cursor 的设备指纹验证,以继续享受免费试用。 🚨…

【Excel学习记录】01-认识Excel

1.之前的优秀软件Lotus-1-2-3 默认公式以等号开头 兼容Lotus-1-2-3的公式写法,不用写等号 : 文件→选项→高级→勾选:“转换Lotus-1-2-3公式(U)” 备注:对于大范围手动输入公式可以使用该选项,否则请不要勾选&#x…

网络安全——防火墙

基本概念 防火墙是一个系统,通过过滤传输数据达到防止未经授权的网络传输侵入私有网络,阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障,因为网上总有黑客和恶意攻击入侵私有网络来破坏,防火…