Ubuntu24.04配置DINO-Tracker

一、引言

记录 Ubuntu 配置的第一个代码过程

二、更改conda虚拟环境的默认安装路径

鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历,在新系统装好后当然要先更改虚拟环境的默认安装路径。

输入指令:

conda info

在这里插入图片描述
可能因为我原本就没有把 Anacoda 安装在 home 文件夹下,所以我的默认安装路径都不是根目录?但是我还是想把下面那个根目录去掉。
打开根目录,点击左上角的三个横线标识,勾选“显示隐藏的文件”,打开 .condarc 文件。在文件末尾添加如下内容:

envs_dirs:- ...\envs
pkgs_dirs:- ...\pkgs

重新在命令行输入指令查看路径:
在这里插入图片描述
这里发现 pkgs 的路径更改成功了,但是 envs 的路径没有更改成功。我查看了两个文件夹的权限都是一样的。所以为什么有一个没改成功呢?
设置 envs 文件夹权限:
在这里插入图片描述
设置完还是没有变化。查看 base 环境的位置,发现也是我安装 anaconda 的位置,并不是根目录,所以这里我没有再更改了。

三、配置环境

1. 新建环境

按照 readme.md 中的要求:

conda create -n dino-tracker python=3.9
conda activate dino-tracker

(安装完成后发现路径没有问题)
在安装 requirements 文件中的包之前,我先安装了 CUDA+cudnn。

2. 安装 CUDA + CUDNN + torch

1)查看 CUDA 与 cudnn 的版本

在终端输入:

nvidia-smi

在这里插入图片描述
可以看到我能安装的最高版本为12.4。
打开 pytorch官网查看 cuda 对应版本。本项目所需的 torch 版本为 2.1.0:
在这里插入图片描述
可以选择的版本有11.8和12.1。这里我选择安装12.1。

2) 下载安装包

下载地址: https://developer.nvidia.com/cuda-toolkit
历史版本下载地址: https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述在这里插入图片描述
这里说明一下,cuda11.8 和 cuda12.1 都没有对应的 ubuntu24.04 版本,所以我选择了 22.04 版本。

3)安装 CUDA

(1) 方法1(失败)

按照官网给出的命令依次执行。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
由于我是 ubuntu24.04 版本,而我选择安装的是 cuda 对应的是 22.04 版本,这里需要安装一下 libtinfo5。
参考这位大佬和这位大佬的帖子,我需要执行下面这个命令安装 libtinfo5:

wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2_amd64.deb
dpkg -i libtinfo5_6.4-2_amd64.deb

在这里插入图片描述
我打开这个网页:http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses
在这里插入图片描述
发现根本没有 libtinfo5_6.4-2 这个版本。。。。。。然后我选择安装了 libtinfo5_6.3-2 这个版本,重新执行安装 cuda 的命令。这次没有出现 libtinfo5 这个错误,但是在安装过程中也没有弹出选择是否安装驱动的选项,而是直接执行到最后一步,然后出问题了:
在这里插入图片描述
在这里插入图片描述
然后我再次输入nvidia-smi
在这里插入图片描述
果然驱动出问题了。看到一些帖子的分享,说这个问题可能重启之后就会解决,于是我抱着试试的心态重启了一下,显然我不是那个幸运儿:
在这里插入图片描述
只好卸载驱动重新安装。
参考链接
移除所有关于 cuda 的内容:

sudo apt-get --purge -y remove 'cuda*'
# cuda10.1及以上的卸载
cd /usr/local/cuda-xx.x/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-xx.x

这里我的 cuda 应该是压根就没安装成功,因为 /usr/local/cuda-12.1 文件夹下面根本没有 bin 文件夹。
移除所有关于 nvidia 的内容:

sudo apt-get --purge -y remove 'nvidia*'

查看cuda文件夹

ls /usr/local/ | grep cuda

此时再次在终端输入 nvidia-smi,显示如下:

找不到命令 “nvidia-smi”,但可以通过以下软件包安装它:
sudo apt install nvidia-utils-470         # version 470.256.02-0ubuntu0.24.04.1, or
sudo apt install nvidia-utils-470-server  # version 470.256.02-0ubuntu0.24.04.1
sudo apt install nvidia-utils-535         # version 535.183.01-0ubuntu0.24.04.1
sudo apt install nvidia-utils-535-server  # version 535.216.01-0ubuntu0.24.04.1
sudo apt install nvidia-utils-550         # version 550.120-0ubuntu0.24.04.1
sudo apt install nvidia-utils-525         # version 525.147.05-0ubuntu1
sudo apt install nvidia-utils-525-server  # version 525.147.05-0ubuntu1
sudo apt install nvidia-utils-550-server  # version 550.127.05-0ubuntu0.24.04.1

应该是卸载成功了。按照提示输入sudo apt install nvidia-utils-550,安装失败。
还好不是第一次安装 nvidia 驱动。详细过程不再赘述了,按照之前的笔记安装。
安装过程中我第一次安装的是 550.107 版本,但是不知道为什么nvidia-smi出来显示的是 550.120 版本。这次重装我选择的是最新的版本 550.135,但是安装完成后一直黑屏开不了机,不得已又卸载了重新安装的 550.120 版本,然后非常顺利,安装过程没有任何问题。

(2) 方法2(成功)

在这里插入图片描述
依次执行上面两条命令。
在这里插入图片描述
在这里插入图片描述
按下空格取消安装驱动。中途出现了这个问题:
在这里插入图片描述

搜索之后发现只需在命令后面加一个--override
在这里插入图片描述

添加环境变量:

export PATH=$PATH:/usr/local/cuda-12.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.1/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.1
source ~/ .bashrc

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

4) 安装 CUDNN

  1. 选择版本
    在官网选择合适的版本安装。
    在这里插入图片描述
    为了选择与 ubuntu24.04 匹配的版本,我选择了9.3.0。

在这里插入图片描述

  1. 安装
    依次执行上述命令:
wget https://developer.download.nvidia.com/compute/cudnn/9.3.0/local_installers/cudnn-local-repo-ubuntu2404-9.3.0_1.0-1_amd64.debsudo 
dpkg -i cudnn-local-repo-ubuntu2404-9.3.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2404-9.3.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn-cuda-12
  1. 执行文件复制
sudo cp usr/include/cudnn* /usr/local/cuda-12.1/include
  1. 测试是否安装 cudnn 成功
cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

  1. 查看版本信息
dpkg -l |grep cudnn
查看版本信息

在这里插入图片描述

5) 安装 torch

  1. 打开官网
  2. 选择合适的版本
    在这里插入图片描述
    输入指令:
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=12.1 -c pytorch -c nvidia

检测是否安装成功:

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

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

conda install numpy==1.26

重新检测:
在这里插入图片描述
成功。

6) 安装其他包

pip install -r requirements.txt

查看是否安装成功:

conda list

这里我都安装成功了。

7) 配置环境变量

cd dino-tracker
export PYTHONPATH=`pwd`:$PYTHONPATH

8) 添加解释器

选择配置 Python 解释器,conda 路径为安装路径下的 anaconda3/bin/conda.bat,然后就可以找到自己创建的虚拟环境。
在这里插入图片描述

四、运行

1. 修改路径

  1. preprocessing/main_preprocesseng.py
    在 main 函数中添加 config 和 data-path 的路径。这里我直接下载的代码中原本写的是 configs,而实际代码中的文件夹名称为 config。
    dat-path 直接改成项目中自带的 horsejump 即可。

2. 修改项目路径

我最开始只能在终端中输入python ./preprocessing/main_preprocessing.py时可以运行,直接点项目上方的绿色三角会报错误找不到./preprocessing/main_preprocessing.py 。此时需要修改工作目录。
点击绿色三角旁边的三个点->编辑->工作目录
在这里插入图片描述
在这里插入图片描述
现在的工作目录为dino-tracker-main/preprocessing,改为dino-tracker即可。

3. 下载预训练模型

运行代码时需要离线下载预训练模型,这里我提前下载一下。
下载地址:https://github.com/facebookresearch/dinov2?tab=readme-ov-file

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

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

相关文章

vulnhub靶场【哈利波特】三部曲之Aragog

前言 使用virtual box虚拟机 靶机:Aragog : 192.168.1.101 攻击:kali : 192.168.1.16 主机发现 使用arp-scan -l扫描,在同一虚拟网卡下 信息收集 使用nmap扫描 发现22端口SSH服务,openssh 80端口HTTP服务,Apach…

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab) 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

getchar()

getchar():从计算机终端(一般是键盘)输入一个字符 1、getchar返回的是字符的ASCII码值(整数)。 2、getchar在读取结束或者失败的时候,会返回EOF 输入密码并确认: scanf读取\n之前的内容即12345678 回车符…

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1:状态表示2:状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结: 下降最小路径和 1:状态表示 假设:用dp[i][j]表示:到达[i,j]的最小路径 2:状态转…

实现PDF文档加密,访问需要密码

01. 背景 今天下午老板神秘兮兮的来问我,能不能做个文档加密功能,就是那种用户下载打开需要密码才能打开的那种效果。boss都发话了,那必须可以。 需求:将 pdf 文档经过加密处理,客户下载pdf文档,打开文档需…

HarmonyOS Next 模拟器安装与探索

HarmonyOS 5 也发布了有一段时间了,不知道大家实际使用的时候有没有发现一些惊喜。当然随着HarmonyOS 5的更新也带来了很多新特性,尤其是 HarmonyOS Next 模拟器。今天,我们就来探索一下这个模拟器,看看它能给我们的开发过程带来什…

深入探索进程间通信:System V IPC的机制与应用

目录 1、System V概述 2.共享内存(shm) 2.1 shmget — 创建共享内存 2.1.2 ftok(为shmmat创建key值) 2.1.3 为什么一块共享内存的标志信息需要用户来传递 2.2 shmat — 进程挂接共享内存 2.3 shmdt — 断开共享内存连接 2.4…

Rust : 生成日历管理markdown文件的小工具

需求: 拟生成以下markdown管理小工具,这也是我日常工作日程表。 可以输入任意时间段,运行后就可以生成以上的markdown文件。 一、toml [package] name "rust-workfile" version "0.1.0" edition "2021"[d…

mean,median,mode,var,std,min,max函数

剩余的函数都放在这篇里面吧 m e a n mean mean函数可以求平均值 a a a为向量时, m e a n ( a ) mean(a) mean(a)求向量中元素的平均值 a a a为矩阵时, m e a n ( a , 1 ) mean(a,1) mean(a,1)求矩阵中各列元素的平均值; m e a n ( a , 2 )…

Android studio 签名加固后的apk文件

Android studio打包时,可以选择签名类型v1和v2,但是在经过加固后,签名就不在了,或者只有v1签名,这样是不安全的。 操作流程: 1、Android studio 对项目进行打包,生成有签名的apk文件&#xff…

【计算机网络】实验2:总线型以太网的特性

实验 2:总线型以太网的特性 一、 实验目的 加深对MAC地址,IP地址,ARP协议的理解。 了解总线型以太网的特性(广播,竞争总线,冲突)。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…

PHP RabbitMQ连接超时问题

问题背景 Error: The connection timed out after 3 sec while awaiting incoming data 看到这个报错,我不以为意,认为是我设置的超时时间不够导致的,那就设置长一点 Error: The connection timed out after 300 sec while awaiting incom…

asp.net core过滤器应用

筛选器类型 授权筛选器 授权过滤器是过滤器管道的第一个被执行的过滤器,用于系统授权。一般不会编写自定义的授权过滤器,而是配置授权策略或编写自定义授权策略。简单举个例子。 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCo…

Linux DNS解释器

作用 DNS(Domain Name System)是互联网上的一项服务,用于将域名和IP地址进行相互映射,使人 更方便的访问互联网 正向解析:域名->IP 反向解析:IP->域名 连接方式 DNS使用53端口监听网络 查看方法&a…

3.STM32通信接口之SPI通信---SPI实战(W25Q64存储模块介绍)《精讲》

上一节介绍了SPI的通信过程和方法,接下来就要进行STM32与外围模块通信了,这个模块是一块非易失型存储芯片,能够提供8MB的存储空间。接下来跟着Whappy脚步,进行探索新大陆吧!【免费】W25Q64(中英文数据手册)资源-CSDN文…

嵌入式系统应用-LVGL的应用-平衡球游戏 part2

平衡球游戏 part2 4 mpu60504.1 mpu6050 介绍4.2 电路图4.3 驱动代码编写 5 游戏界面移植5.1 移植源文件5.2 添加头文件 6 参数移植6.1 4 mpu6050 4.1 mpu6050 介绍 MPU6050是一款由InvenSense公司生产的加速度计和陀螺仪传感器,广泛应用于消费电子、机器人等领域…

java将word docx pdf转换为图片(不需要额外下载压缩包,直接导入maven坐标)

(本代码实现的是将第1页转为图片,主要用于制作文件缩略图) pdf转图片容易 docx转图片麻烦,看其他博客可以直接导入maven坐标,但我知道那是需要付费且有时限的包 本着简单实用的心,我找到法子了 pdf转图片:有库直接转…

C#学写了一个程序记录日志的方法(Log类)

1.错误和警告信息单独生产文本进行记录; 2.日志到一定内存阈值可以打包压缩,单独存储起来,修改字段MaxLogFileSizeForCompress的值即可; 3.Log类调用举例:Log.Txt(JB.信息,“日志记录内容”,"通道1"); usi…

linux(centos) 环境部署,安装JDK,docker(mysql, redis,nginx,minio,nacos)

目录 1.安装JDK (非docker)1.1 将文件放在目录下: /usr/local/jdk1.2 解压至当前目录1.3 配置环境变量 2.安装docker2.1 验证centos内核2.2 安装软件工具包2.3 设置yum源2.4 查看仓库中所有docker版本,按需选择安装2.5 安装docker2.6 启动docker 并 开机…

电阻改善信号完整性

1.为什么电路端接电阻能改善信号完整性 由于电信号在PCB上传输,因此在PCB设计中可以把PCB走线认为是信号的通道,当该通道的 物理结构(线宽,线到参考面的距离等)发生变化,特别是有一些突变时,都会…