当前位置:首页 > 系统教程 > 正文

3D Gaussian Splatting复现指南:Ubuntu22.04从零基础到实战(双系统+CUDA+Conda+COLMAP详细安装教程)

3D Gaussian Splatting复现指南:Ubuntu22.04从零基础到实战(双系统+CUDA+Conda+COLMAP详细安装教程)

手把手教你搭建3DGS环境,实现实时神经渲染

在计算机视觉和图形学领域,3D Gaussian Splatting (3DGS)作为一种突破性的实时渲染技术,正迅速成为研究与应用的热点。它通过数百万个可优化的3D高斯球来表达场景,实现了比传统神经辐射场(NeRF)更快的训练速度和更高质量的实时渲染-7。然而,对于初学者而言,从零开始在Linux环境下搭建完整的3DGS复现环境往往充满挑战。本文将提供一份超级详细的保姆级教程,基于Ubuntu22.04系统,涵盖从双系统安装、CUDA配置、Conda环境管理到COLMAP从源码编译的全流程,让你也能轻松踏入3DGS的奇妙世界。

3D Gaussian Splatting复现指南:Ubuntu22.04从零基础到实战(双系统+CUDA+Conda+COLMAP详细安装教程) Ubuntu22.04安装3DGS  Splatting复现教程 COLMAP从源码编译 Conda环境配置 第1张

第一步:基石铺设——安装Ubuntu22.04双系统

为了获得最佳的GPU性能发挥和开发体验,我们选择安装原生Ubuntu22.04双系统,而非使用虚拟机。

  1. 准备工作:准备一个至少8GB的空U盘,并下载Ubuntu22.04 LTS的桌面版ISO镜像文件。同时,在Windows磁盘管理中压缩出一个至少有100GB空间的未分配区域(建议200GB以上,因为后续的3DGS项目数据和COLMAP依赖库会占用不少空间-8)。
  2. 制作启动盘:使用Rufus等工具将下载好的ISO镜像写入U盘。
  3. 安装系统:重启电脑,进入BIOS设置(通常按F2、F12或Del键),将U盘设置为第一启动项。保存退出后,系统将进入Ubuntu安装界面。选择语言后,在“安装类型”这一步,务必选择“其他选项”,手动找到之前预留的空白磁盘空间,创建分区(建议方案:交换空间swap(与内存大小相当),挂载点“/”作为根目录)。选择正确的磁盘空间后,点击“现在安装”即可。

第二步:动力核心——安装NVIDIA驱动与CUDA 11.8

3DGS的高效渲染严重依赖GPU,而CUDA是连接PyTorch与NVIDIA显卡的桥梁。官方推荐使用CUDA 11.8以确保最佳兼容性-5-6。

  1. 安装NVIDIA显卡驱动:打开终端(Ctrl+Alt+T)。首先更新系统软件包列表:sudo apt update。然后,可以自动安装推荐驱动:sudo ubuntu-drivers autoinstall。安装完成后,重启系统:sudo reboot。重启后,在终端输入nvidia-smi,如果能看到显卡信息列表,则说明驱动安装成功。
  2. 安装CUDA 11.8:前往NVIDIA官网找到CUDA 11.8的下载链接。根据系统架构选择对应的安装命令。推荐使用runfile或deb(local)方式进行安装。以deb方式为例:
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.debsudo dpkg -i cuda-keyring_1.0-1_all.debsudo apt-get updatesudo apt-get -y install cuda-11-8
    安装完成后,需要配置环境变量。编辑~/.bashrc文件:sudo nano ~/.bashrc,在文件末尾添加以下内容:
    export PATH=/usr/local/cuda-11.8/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATHexport CUDA_HOME=/usr/local/cuda-11.8
    保存退出后,使配置生效:source ~/.bashrc。最后,输入nvcc --version验证是否显示CUDA 11.8版本信息-6。

第三步:环境隔离——安装Conda并创建虚拟环境

Conda是一个强大的包管理和环境管理工具,可以为3DGS复现创建一个干净、隔离的Python环境。

  1. 下载并安装Miniconda:Miniconda是Conda的精简版本。在终端中执行:wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh。然后运行脚本:bash Miniconda3-latest-Linux-x86_64.sh。按照提示,一直按Enter直到询问,输入“yes”同意许可协议,并确认安装路径。安装完成后,关闭并重新打开终端,你会看到命令行前面出现(base)字样-10。
  2. 创建3DGS专用环境:我们创建一个名为gaussian_splatting,Python版本为3.8的虚拟环境。官方推荐Python 3.7/3.8能最大程度避免依赖冲突-7。执行命令:conda create -n gaussian_splatting python=3.8 -y。创建完成后,激活环境:conda activate gaussian_splatting。注意,后续所有操作都应在这个活跃的环境中进行。

第四步:项目获取——克隆3DGS仓库

从GitHub上克隆官方3DGS代码仓库。这里有一个关键点:必须使用--recursive参数来同时克隆所有子模块,因为这些子模块(如diff-gaussian-rasterization)包含了核心的CUDA扩展代码-1-10。

      git clone https://github.com/graphdeco-inria/gaussian-splatting --recursivecd gaussian-splatting    

第五步:关键安装——配置PyTorch环境

PyTorch的版本必须与之前安装的CUDA 11.8严格匹配。进入刚才克隆的gaussian-splatting目录,官方提供了environment.yml文件,我们可以直接用Conda来创建几乎一模一样的环境,但为了确保CUDA版本正确,推荐手动安装核心库。

  1. 安装PyTorch:gaussian_splatting环境下,执行以下命令安装适配CUDA 11.8的PyTorch 2.0.1-10:
    conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
  2. 安装其他Python依赖:接着,使用pip安装项目所需的其他常见库:pip install plyfile tqdm tensorboard opencv-python。为了防止与numpy 2.x版本冲突,建议安装numpy 1.x版本:pip install numpy==1.24-7。
  3. 安装子模块:这是最容易出错的一步。在gaussian-splatting项目根目录下,依次安装两个核心的CUDA扩展-10:
    pip install submodules/diff-gaussian-rasterizationpip install submodules/simple-knn
    如果编译过程中报错,请检查是否安装了ninja编译工具:sudo apt-get install ninja-build。同时确保GCC版本不超过11(CUDA 11.8对高版本GCC支持不佳)-7。

第六步:数据准备——从源码编译COLMAP

3DGS的训练需要输入一个场景的稀疏点云和相机参数,这通常由COLMAP(一种通用的运动恢复结构(SfM)软件)提供。官方Ubuntu仓库中的COLMAP版本可能不支持GPU加速,因此我们必须从源码编译,特别是编译支持CUDA的版本-6。

  1. 安装COLMAP依赖:这是一个庞大的依赖列表,确保逐一安装-7:
    sudo apt-get install -y libeigen3-dev libgtest-dev libabsl-dev libmetis-dev libboost-all-dev libopencv-dev libglew-dev libassimp-dev libglfw3-dev libsuitesparse-dev libgoogle-glog-dev libsqlite3-dev libceres-dev
  2. 下载COLMAP 3.8源码:高版本(3.9/3.10)可能存在兼容性问题,推荐使用3.8版本-6。访问COLMAP的GitHub Releases页下载源码压缩包,或使用git clone指定tag。
  3. 配置并编译:
    cd colmap-3.8mkdir build && cd buildcmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES=你的显卡计算能力
    注意:-DCMAKE_CUDA_ARCHITECTURES参数非常重要,它告诉编译器为你的特定显卡架构生成代码。例如,RTX 3060/3070/3080对应“86”,RTX 3090也是“86”,RTX 4090对应“89”-6。如果不确定,可以查一下自己显卡的计算能力(Compute Capability)。然后执行编译和安装:ninja && sudo ninja install。安装完成后,在终端输入colmap -h,如果显示帮助信息,则表示安装成功。
  4. 使用COLMAP处理自己的数据:你可以用自己的照片或视频来生成数据集。对于视频,先使用ffmpeg抽帧:ffmpeg -i your_video.mp4 -qscale:v 2 images/%05d.jpg-7。然后在包含images文件夹的目录下,使用COLMAP的GUI或命令行进行特征提取、匹配和稀疏重建,最终得到包含cameras.binimages.binpoints3D.binsparse文件夹-7。或者,你也可以直接下载官方提供的已处理好的数据集(如Tanks&Temples)进行快速测试-2-4。最终的数据集目录结构应类似于:
    data/your-dataset/├── images/│   ├── 00001.jpg│   ├── 00002.jpg│   └── ...└── sparse/    └── 0/        ├── cameras.bin        ├── images.bin        └── points3D.bin

第七步:运行时刻——训练你的第一个3DGS模型

一切准备就绪!现在让我们开始训练。确保你在gaussian_splatting的conda环境中,并且位于项目根目录。

  1. 开始训练:使用以下命令,指定你的数据路径-2:python train.py -s /path/to/your/colmap-dataset。如果你也想评估模型质量,可以加上--eval参数将数据集划分为训练集和测试集-5。
  2. 可视化监控:训练过程中,可以通过两种方式查看进度。一是开启另一个终端,激活环境,在项目目录下运行Tensorboard:tensorboard --logdir=./output/,然后在本地浏览器访问localhost:6006查看损失曲线和渲染样例-10。二是编译并使用官方提供的实时查看器SIBR_gaussianViewer,在训练的同时查看3D高斯点的优化过程-2-4。编译查看器需要安装额外的OpenGL依赖:sudo apt install libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev,然后按照官方指南编译SIBR_viewers。训练完成后,使用render.pymetrics.py可以生成最终渲染结果并计算量化指标-5。

至此,你已经成功在Ubuntu22.04上完整地搭建了3DGS环境并运行了第一个训练任务。虽然过程繁琐,但每一步都是为了将来更深入的研究打下坚实基础。现在,尽情探索3D高斯泼溅带来的视觉震撼吧!