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

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

相关文章:

Ubuntu24.04配置DINO-Tracker

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历,在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令: conda info可能因为我原本就没有把 Anacod…...

抓包之查看websocket内容

写在前面 本文看下websocket抓包相关内容。 1:正文 websocket基础环境搭建参考这篇文章。 启动后,先看chrome的network抓包,这里我们直接使用is:running来过滤出websocket的请求: 可以清晰的看到发送的内容以及响应的内容。在…...

【Leetcode Top 100】21. 合并两个有序链表

问题背景 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 数据约束 两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 …...

账本模型

05-账本模型 1 账本模型 1.1 传统线性增长模型 传统的 MySQL 等系统采用线性增长的日志模型,通过一个 Leader 和多个 Follower 进行状态同步。这种方式有单点的带宽瓶颈问题。 1.2 区块链共享账本模型 共享账本:树形增长。在去中心化网络中,…...

openwrt利用nftables在校园网环境下开启nat6 (ipv6 nat)

年初写过一篇openwrt在校园网环境下开启ipv6 nat的文章,利用ip6tables控制ipv6的流量。然而从OpenWrt22版本开始,系统内置的防火墙变为nftables,因此配置方法有所改变。本文主要参考了OpenWRT使用nftables实现IPv6 NAT 这篇文章。 友情提示 …...

24.12.02 Element

import { createApp } from vue // 引入elementPlus js库 css库 import ElementPlus from element-plus import element-plus/dist/index.css //中文语言包 import zhCn from element-plus/es/locale/lang/zh-cn //图标库 import * as ElementPlusIconsVue from element-plus/i…...

记录QT5迁移到QT6.8上的一些问题

经常看到有的同学说网上的教程都是假的,巴拉巴拉,看看人家发布时间,Qt官方的API都会有所变动,多搜索,多总结,再修改记录。 下次遇到问题多这样搜索 QT 4/5/6 xxx document,对比一下就知道…...

清理Linux/CentOS7根目录的思路

在使用Linux服务器过程中,经常会遇到磁盘空间不足的问题,好多应用默认安装在根目录下,记录一下如何找到问题所在,清理根目录(/) 1. 检查空间使用情况 1.1 查看分区占用: df -h输出&#xff1…...

【LInux】kvm添加u盘启动引导

前提:要有一个u盘的启动盘 1、查看u盘设备信息 # lsusb ....忽略其他设备信息,查看到u盘设备 Bus 005 Device 005: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2## 主要记住ID 0951:1666确认id为ID 0951:1666 2、修改配置文件 如…...

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…...

GaussDB(类似PostgreSQL)常用命令和注意事项

文章目录 前言GaussDB&#xff08;类似PostgreSQL&#xff09;常用命令和注意事项1. 连接到GaussDB数据库2. 查看当前数据库中的所有Schema3. 进入指定的Schema4. 查看Schema下的表、序列、视图5. 查看Schema下所有的表6. 查看表结构7. 开始事务8. 查询表字段注释9. 注意事项&a…...

【HM-React】02. React基础-下

React表单控制 受控绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 function App(){const [value, setValue] useState()return (<input type"text" value{value} onChange{e > setValue(e.target.value)}/>) …...

【力扣热题100】—— Day3.反转链表

你不会永远顺遂&#xff0c;更不会一直年轻&#xff0c;你太安静了&#xff0c;是时候出发了 —— 24.12.2 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&…...

【k8s深入学习之 event 记录】初步了解 k8s event 记录机制

event 事件记录初始化 一般在控制器都会有如下的初始化函数&#xff0c;初始化 event 记录器等参数 1. 创建 EventBroadcaster record.NewBroadcaster(): 创建事件广播器&#xff0c;用于记录和分发事件。StartLogging(klog.Infof): 将事件以日志的形式输出。StartRecording…...

redhat 7.9配置阿里云yum源

1、mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2、添加dns vim/etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 114.114.114.114 #配置完先检查下通不通 3、vi /etc/yum/pluginconf.d/subscription-manager.conf # 将 “enabled1” 改为 “ena…...

深入探索Flax:一个用于构建神经网络的灵活和高效库

深入探索Flax&#xff1a;一个用于构建神经网络的灵活和高效库 在深度学习领域&#xff0c;TensorFlow 和 PyTorch 作为主流的框架&#xff0c;已被广泛使用。不过&#xff0c;Flax 作为一个较新的库&#xff0c;近年来得到了越来越多的关注。Flax 是一个由Google Research团队…...

Nginx auth_request详解

网上看到多篇先关文章&#xff0c;觉得很不错&#xff0c;这里合并记录一下&#xff0c;仅供学习参考。 模块 nginx-auth-request-module 该模块是nginx一个安装模块&#xff0c;使用配置都比较简单&#xff0c;只要作用是实现权限控制拦截作用。默认高版本nginx&#xff08;比…...

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…...

vue3图片报错转换为空白不显示的方法

vue3图片报错转换为空白不显示的方法 直接上代码&#xff1a; <el-table-column label"领料人" align"center"><template #default"scope"><el-imagev-if"scope.row.receiver":src"scope.row.receiver"style…...

mysq之快速批量的插入生成数据

mysq之快速批量的插入生成数据 1.insert inot select2.存储过程3.借助工具 在日常测试工作时&#xff0c;有时候需要某张表有大量的数据&#xff0c;如&#xff1a;需要有几百个系统中的用户账号等情况&#xff1b;因此&#xff0c;记录整理&#xff0c;如何快速的在表中插入生…...

浅谈C#库之DevExpress

一、DevExpress库介绍 DevExpress是一个功能强大、界面美观的UI组件库&#xff0c;广泛应用于桌面应用程序和Web应用程序的开发中。它提供了丰富的控件和工具&#xff0c;帮助开发人员快速构建现代化的用户界面。DevExpress控件库以其功能丰富、应用简便、界面华丽以及方便定制…...

聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

一、触发器(Trigger) Trigger 决定了一个窗口&#xff08;由 window assigner 定义&#xff09;何时可以被 window function 处理。 每个 WindowAssigner 都有一个默认的 Trigger。 如果默认 trigger 无法满足你的需要&#xff0c;你可以在 trigger(…) 调用中指定自定义的 tr…...

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好&#xff0c;今天给大家分享一个基于PyTorch的OCR库EasyOCR&#xff0c;它允许开发者通过简单的API调用来读取图片中的文本&#xff0c;无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目&#xff0c;它提供了一个简单易用的光学字符识别&#xff…...

Flink四大基石之CheckPoint(检查点) 的使用详解

目录 一、Checkpoint 剖析 State 与 Checkpoint 概念区分 设置 Checkpoint 实战 执行代码所需的服务与遇到的问题 二、重启策略解读 重启策略意义 代码示例与效果展示 三、SavePoint 与 Checkpoint 异同 操作步骤详解 四、总结 在大数据流式处理领域&#xff0c;Ap…...

JVM 常见面试题及解析(2024)

目录 一、JVM 基础概念 二、JVM 内存结构 三、类加载机制 四、垃圾回收机制 五、性能调优 六、实战问题 七、JVM 与其他技术结合 八、JVM 内部机制深化 九、JVM 相关概念拓展 十、故障排查与异常处理 一、JVM 基础概念 1、什么是 JVM&#xff1f;它的主要作用是…...

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计&#xff08;概要/详细&#xff09; 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时&#xff0c;往往基于过往采购合同数据&#xff0c;给出现在采购或报价的金额…...

K8S资源之secret资源

secret资源介绍 secret用于敏感数据存储&#xff0c;底层基于base64编码&#xff0c;数据存储在etcd数据库中 应用场景举例&#xff1a; 数据库的用户名&#xff0c;密码&#xff0c;tls的证书ssh等服务的相关证书 secret的基础管理 1 在命令行响应式创建 1.响应式创建 …...

QT:信号和槽01

QT中什么是信号和槽 概念解释 在 Qt 中&#xff0c;信号&#xff08;Signals&#xff09;和槽&#xff08;Slots&#xff09;是一种用于对象间通信的机制。信号是对象发出的事件通知&#xff0c;而槽是接收并处理这些通知的函数。 例如&#xff0c;当用户点击一个按钮时&#…...

针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇

文章目录 Agent继承链Agent类总体架构初始化方法`__init__` 方法:`_init_tool` 方法:对话生成方法`_call_llm` 方法:工具调用方法`_call_tool` 方法:`_detect_tool` 方法:整体执行方法`run` 方法:`_run` 方法:`run_nonstream` 方法总结回顾本文在 基于Qwen-Agent框架的Functio…...

XML 查看器:深入理解与高效使用

XML 查看器:深入理解与高效使用 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它通过使用标签来定义数据结构,使得数据既易于人类阅读,也易于机器解析。在本文中,我们将探讨 XML 查看器的功能、重要性以及如何高效使用它们。 什么是 XML 查看器? XML 查看…...