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.whlpip install torchvision-0.5.0+cu100-cp36-cp36m-linux_x86_64.whl

在这里插入图片描述

3) 检查是否安装成功

pythonimport 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,成功。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—热备盘上线过程中硬盘离线导致raid5阵列崩溃的数据恢复案例

服务器数据恢复环境: 两组分别由4块SAS接口硬盘组建的raid5阵列,两组raid5阵列划分LUN并由LVM管理,格式化为EXT3文件系统。 服务器故障: RAID5阵列中一块硬盘未知原因离线,热备盘自动激活上线替换离线硬盘。在热备盘上…

【Java学习笔记】Map接口和常用方法

一、 Map接口实现类的 特点[很实用] key是自己存的java对象 value是一个固定的 //当有相同的 k ,就等价于替换. 二、 Map常用方法 (根据键–>k) 三、Map接口遍历方法 package com.hspedu.map_; import java.util.*; /** * author 韩顺平 * ver…

1.网络知识-IP与子网掩码的关系及计算实例

IP与子网掩码 说实话,之前没有注意过,今天我打开自己的办公地电脑,看到我的网络配置如下: 我看到我的子网掩码是255.255.254.0,我就奇怪了,我经常见到的子网掩码都是255.255.255.0啊?难道公司配…

SpringBoot中bean的生命周期

文章目录 概述使用场景代码演示bean初始化TestSupportBeanPostProcessorImpllog 代码 概述 Bean 生命周期管理是 Spring Boot 中的关键功能之一。它负责管理应用程序中的 Java 对象,这些对象被称为 Beans。Spring Boot 通过创建、配置、初始化和销毁这些 Beans 来确…

【数据结构——栈和队列】括号配对(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序利用栈判断左、右圆括号是否配对。 相关知识 为了完成本关任务,你需要掌握:栈对括号的处理。 栈对括号的处理 &…

让PPT不再“难搞”:智能工具如何改变办公体验

PPT的世界是一场属于设计感与逻辑力的双重较量。那些字体配色的小心思,排版设计的大考验,无不让人抓耳挠腮。然而,科技的加持让这一切正悄然改变。比如,随着 ai生成ppt 工具的兴起,许多复杂操作正被重新定义&#xff0…

OpenLayers基础教程——WebGLPoints设置不同图标样式的方法

1、前言 在OpenLayers中,WebGLPoints与VectorLayer设置不同图标样式的方法有所不同。本文就来介绍一下如何在WebGLPoints图层中根据要素类型设置不同的图标样式。 2、ol.layer.Vector的实现方法 ol.layer.Vector设置不同图标的样式很简单,直接上代码&…

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表,并保证相应类型的Pod的数量与期望相符合,如果Pod数量过少,它会根据Pod模板创建新的副本,反之则会删除多余副本。通过RC可实现了应用服务的高可用…

es 3期 第14节-全文文本分词查询

#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性&#xff…

如何保证消息队列的高可用?(RabbitMQ)

RabbitMQ 是基于主从(非分布式)做高可用性的,RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式 1、单机模式:一般没人生产用单机模式 2、普通集群模式: 普通集群模式用于提高系统的吞吐量&…

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

在CANoe中创建网络节点作为以太网主机时,可以给其配置独立的TCP/IP Stack。 配置的协议栈有一些底层配置参数可以在界面上设置或修改,比如: MTU上图中MTU显示500只是图形界面显示错误,正确值是1500。 TCP延迟确认这些参数也可以通过CAPL动态配置,甚至CAPL还可以配置很多界…

Linux中vi和vim的区别详解

文章目录 Linux中vi和vim的区别详解一、引言二、vi和vim的起源与发展三、功能和特性1、语法高亮2、显示行号3、编辑模式4、可视化界面5、功能扩展6、插件支持 四、使用示例1、启动编辑器2、基本操作 五、总结 Linux中vi和vim的区别详解 一、引言 在Linux系统中,vi和…

如何将自己的PHP类库发布到composer仓库

将自己的 PHP 类库发布到 Composer 仓库,需要经过一系列的准备和操作步骤,以下是详细说明: 准备工作 创建类库项目:确保你的 PHP 类库项目具有清晰的目录结构,遵循 PSR-4 等 PHP 编码规范。通常,类文件应…

android——录制屏幕

录制屏幕 1、界面 2、核心代码 import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent import android.app.Service import android.content.Context import android.content.Intent import android.graphics.Bi…

自学高考的挑战与应对:心理调适、学习方法改进与考试技巧提升

一、自学参加高考的成功条件 (一)报名条件 基本要求 自学参加高考,首先需严格遵守国家的法律法规,这是参与高考的基本前提。具备高中同等学力是核心要素之一,意味着考生需通过自学掌握高中阶段的知识体系与学习能力…

SQL语句错误号:Incorrect integer value: ‘‘ for column ‘poi_id‘ at

SQL语句错误号:Incorrect integer value: for column poi_id at通用解决方案 在MySQL 5.7中,如果你遇到 Incorrect integer value: for column poi_id at row 1 错误,这通常意味着你尝试将一个空字符串插入到需要整数值的字段中。以下是几…

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法,其官方名称为SMS4(SMS4.0),相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…

Qt Xlsx安装教程

Qt Xlsx安装教程 安装perl 如果没有安装perl,请参考perl Window安装教程 下载QtXlsxWriter源码 下载地址 ming32-make编译32 lib库 C:\Qt\Qt5.12.12\5.12.12\mingw73_32>d: D:\>cd D:\Code\QtXlsxWriter-master\QtXlsxWriter-master D:\Code\QtXlsxWrit…

1. 机器学习基本知识(3)——机器学习的主要挑战

1.5 机器学习的主要挑战 1.5.1 训练数据不足 对于复杂问题而言,数据比算法更重要但中小型数据集仍然很普遍,获得额外的训练数据并不总是一件轻而易举或物美价廉的事情,所以暂时不要抛弃算法。 1.5.2 训练数据不具有代表性 采样偏差&#…

通配符SSL证书申请

一、通配符SSL证书点击DV类型通配符SSL证书 二、点击立即生成证书,可以自己在线生成CSR提交,生成的时候私钥代码保存一下。 三、点击继续【建议选择DNS,DNS是指域名解析方式认证】 四、然后去域名注册商添加解析,解析如果可以设置…