文章目录
最近在看深度估计方面的文章,发现了Marigold,它是一种基于扩散模型的单目深度估计技术,通过在Stable Diffusion图像生成模型的基础上进行微调,实现了在多个真实世界数据集上的高准确度和强泛化能力,无需从头开始训练即可高效地预测单个图像的深度信息。接下来我将展示从零开始Marigold的复现。
系统环境
首先介绍一下我所使用的环境,我是在Ubuntu20.04.5,RTX3090(24G显存)的服务器上进行实验的,其中我的磁盘空间为4T(为了下载原始的数据集,后续处理完之后数据集就压缩到很小了,如果你有500G的空间就可以复现该项目,如果你从头开始复现的话,那么你至少要准备一块2T以上的磁盘)。
克隆代码
从论文的摘要部分点击链接进入Github中Marigold的项目地址,或者点击链接进入官方地址,然后使用以下命令来克隆项目到本地或服务器(需要准备提前安装git):
git clone https://github.com/prs-eth/Marigold
cd Marigold
然后使用使用cd命令进入到Marigold项目根目录。
安装conda
环境
根据官方文档的说明,Marigold项目需要在Python 3.10,CUDA 11.7及以上的环境中可以正常运行,这里我使用的环境是Python3.10,CUDA 11.7。
当把项目克隆到本地之后就会发现在项目的根目录下有environment.yaml
、requirements.txt
、requirements+.txt
、requirements++.txt
四个文件,其中environment.yaml
和requirements.txt
是基础环境依赖项,requirements+.txt
和requirements++.txt
是在项目运行环境已经创建成功之后需要额外下载的依赖,根据官方的说明,这边有两种环境创建方法:
-
使用Mamba命令创建环境(前提是你已经安装Mamba环境,在你的base环境中使用
pip install mamba
命令安装mamba
到你的base环境中然后在你项目的根目录下在终端使用以下命令创建marigold环境)mamba env create -n marigold --file environment.yaml # 根据environment.yaml文件创建环境 conda activate marigold # 激活marigold环境
-
使用
conda
或者pip
创建环境:使用conda
环境创建一个虚拟环境或者使用pip
创建一个Python本机虚拟环境并在其中安装依赖项# 1.使用conda创建,使用requirements.txt文件下载相关依赖项 conda create -n marigold python=3.10 conda activate marigold conda install -r requirements.txt # 2.使用pip创建,使用requirements.txt文件下载相关依赖项 python -m venv venv/marigold source venv/marigold/bin/activate pip install -r requirements.txt
这里需要注意的是如果你使用第二种方法进行创建环境的话,那么如果你使用conda
就尽量一直使用conda
,如果你使用pip
那么就尽量一直使用pip
进行下载其他依赖项,可以使用conda
创建环境然后使用pip
安装依赖,但是不要多次交叉使用,因为conda
和pip
对依赖项的管理是不同的,如果两个交叉使用的话可能会报错(比如说使用conda
下载了一个numpy
1.18版本的,但是pip
又下载了一个numpy
1.25版本的,那么就会产生冲突,后续可能会出现一些奇怪的bug。)我这边使用的是conda
创建环境,环境创建成功之后就一直使用pip
命令。
当你创建好环境并把以上基础依赖项安装成功之后,那么可以使用以下命令安装额外的依赖项,这样就不用以后运行项目的时候再回过头配置环境安装依赖项了
pip install -r requirements+.txt -r requirements.txt
数据集与权重文件
当我们把项目的环境配置完成之后接下来就是重头戏了,根据论文中的说明,Marigold使用训练数据集是Hypersim
和vkitti
两个合成的数据集