GaussianAvatars
- Repo
- Installation
- Requirements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| tqdm numpy==1.22.3 matplotlib scipy chumpy tensorboard fvcore iopath plyfile tyro dearpygui roma git+https://github.com/NVlabs/nvdiffrast
submodules/diff-gaussian-rasterization submodules/simple-knn
|
项目工具安装
Ninja 是一种专注于速度和效率的构建工具,最初由 Google 工程师开发,用于加速大型项目的构建过程。它的设计哲学是通过简洁的构建规则和依赖关系描述来实现快速构建,尤其适合大规模项目和多核处理器环境。Ninja 的构建文件后缀为 .ninja,其语法简单,主要依赖其他工具(如 CMake)生成构建文件。
CMake 是一个开源、跨平台的编译、测试和打包工具,用于生成项目的构建文件。它通过简单的语法描述编译和安装过程,并输出适合不同平台的构建文件,如 Makefile 或 Ninja 文件。CMake 的核心配置文件是 CMakeLists.txt,开发者可以通过它定义项目的构建规则。
- CMake 生成构建文件:CMake 可以生成多种格式的构建文件,其中包括 Ninja 文件。通过指定 -G Ninja,CMake 会生成 build.ninja 文件。
- Ninja 执行构建:生成 build.ninja 文件后,Ninja 负责根据该文件执行实际的构建任务。
- 优势互补:CMake 提供了强大的跨平台能力和灵活的构建规则描述,而 Ninja 则专注于快速执行构建任务。这种组合使得开发人员可以专注于编写简单的 CMakeLists.txt 文件,同时享受 Ninja 的高速构建能力。
CMake
Windows 平台安装 CMake 相对简单,通过官网下载地址:https://cmake.org/download/ ,选择最新的版本即可下载,安装引导程序中记得选择添加到环境变量配置即可。
测试是否安装成功,以及环境变量是否配置,可以在终端检测 CMake 版本。
1 2 3 4
| (base) C:\Users\User>cmake --version cmake version 3.31.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
|
Ninja
Ninja 安装需要先安装 CMake 以及 Visual Studio,并配置好相应的环境变量。
Ninja 推荐的安装方式从源码编译安装,在 Windows 开始菜单中以管理员身份打开 “x64 Native Tools Command Prompt for VS 2019”,然后进入到 Ninja 文件夹目录,执行以下命令进行编译安装。
1
| python configure.py --bootstrap
|
编译完毕后,产生的 ninja.exe
即为编译结果,可以将其置于需要的目录下,并添加到环境变量中。
根据下图所示,添加 ninja.exe 所在目录到环境变量中,并在终端检测是否成功。

1 2
| > ninja.exe ninja: no work to do.
|
3D Vision 环境配置
经过多次安装测试,总结经验后对该环境配置流程有比较清晰的认识,这主要用于在其他任何涉及 3D Vision 的项目中,在此基础的环境上可以快速复现项目环境。
下面是全部的安装包,主要包含依赖于 3DGS 的库以及 Pytorch3d。
Source |
Conda/Pip |
Library |
Version |
3DGS |
Conda |
python |
3.9 |
3DGS |
Conda |
cudatoolkit |
11.3 |
3DGS |
Conda |
pytorch |
1.12.1 |
3DGS |
Conda |
torchvision |
0.13.1 |
3DGS |
Conda |
torchaudio |
0.12.1 |
3DGS |
Conda |
plyfile |
== |
3DGS |
Conda |
tqdm |
== |
3DGS |
Pip |
opencv-python |
== |
3DGS |
Pip |
joblib |
== |
3DGS |
Pip |
submodules/diff-gaussian-rasterization |
== |
3DGS |
Pip |
submodules/simple-knn |
== |
3DGS |
Pip |
submodules/fused_ssim |
== |
Pytorch3d |
== |
cub |
1.11.0 |
Pytorch3d |
conda |
fvcore |
== |
Pytorch3d |
conda |
iopath |
== |
Pytorch3d |
== |
pytorch3d |
0.7.1 |
Step 1 创建虚拟环境
1 2 3
| conda create -n 3dv python=3.9 conda activate 3dv
|
首先安装显卡驱动,一般通过 NVIDIA 应用程序进行安装。通过命令 nvidia-smi
可以查看显卡驱动版本以及最高可支持的 CUDA 版本。
选择的 CUDA 版本需要与 Pytorch 版本对应,可以在 CUDA Toolkit Archive 查询到对应版本并下载。
在这里我们选择的是 CUDA 11.3 的,下载选择的命令如下图所示:

下载完成后,按照提示进行安装,等待安装完成后,其会自动添加环境变量。
在命令行输入 nvcc --version
可以查看 CUDA 版本。成功安装后,将会显示如下图的版本信息:

当我们同时在 Windows 上安装了多个 CUDA 版本,并且希望能够通过指定环境变量进行切换。
- Step 1: 修改系统环境变量 CUDA_PATH,将其改为目标 CUDA 版本对应的路径;

- Step 2: 修改 Path 中对应的 CUDA bin 和 libnvvp 两个路径,使得目标 CUDA 的这两个路径在所有 CUDA 版本的最上方。

Step 3 安装 Pytorch
最好的安装方式就是对照 CUDA 版本,直接从 Pytorch 官网 INSTALLING PREVIOUS VERSIONS OF PYTORCH 中选择对应的安装命令进行安装。
1 2
| conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
|
这里的 cudatoolkit=11.3 虽然能够在虚拟环境中作为一个安装包安装上(如下图所示),但是其不等于 CUDA Toolkit,仍需要 Step 2 中安装 CUDA Toolkit并配置好环境变量。

Step 4 安装 3DGS 的子模块
一般在用到这些子模块的项目中,首先通过递归式地克隆项目仓库以使得包含对应的子模块,然后在项目环境中直接安装即可。
对虚拟环境的要求仅仅是 CUDA 版本和 Pytorch 版本对应起来,并且需要确保 CUDA Toolkit 也已经正确安装。
1 2 3
| pip install submodules/diff-gaussian-rasterization pip install submodules/simple-knn
|
Step 5 安装 NVIDIA CUB
从 NVIDIA CUB 根据 cuda 版本对应以下表格下载对应的 cub 版本(本机选择cub-1.11.0),解压并设置环境变量 CUB_HOME。
CUB Release |
Included In |
2.0.1 |
CUDA Toolkit 12.0 |
2.0.0 |
TBD |
1.17.2 |
TBD |
1.17.1 |
TBD |
1.17.0 |
TBD |
1.16.0 |
TBD |
1.15.0 |
NVIDIA HPC SDK 22.1 & CUDA Toolkit 11.6 |
1.14.0 |
NVIDIA HPC SDK 21.9 |
1.13.1 |
CUDA Toolkit 11.5 |
1.13.0 |
NVIDIA HPC SDK 21.7 |
1.12.1 |
CUDA Toolkit 11.4 |
1.12.0 |
NVIDIA HPC SDK 21.3 |
1.11.0 |
CUDA Toolkit 11.3 |
1.10.0 |
NVIDIA HPC SDK 20.9 & CUDA Toolkit 11.2 |
1.9.10-1 |
NVIDIA HPC SDK 20.7 & CUDA Toolkit 10.2 |
Step 6 安装 Pytorch3d 依赖项
根据 Pytorch3d 官方文档,需要安装依赖项如下:
1 2 3 4
| conda install -c fvcore -c iopath -c conda-forge fvcore iopath conda install jupyter pip install scikit-image matplotlib imageio plotly opencv-python pip install black usort flake8 flake8-bugbear flake8-comprehensions
|
Step 7 安装 Pytorch3d
推荐的做法是通过源码编译安装,按照 Pytorch3d Installation 说明,从 Pytorch3d Release 中根据 Pytorch 的版本选择合适的 Pytorch3d 版本,并且尽量使得 Pytorch 版本处于 Pytorch3d 支持的版本范围中间。
选择下载 pytorch3d-0.7.2,解压后进入编译安装环节。
在 Windows 开始菜单中以管理员身份打开 x64 Native Tools Command Prompt for VS 2019
,然后进入 pytorch3d
解压后的文件夹目录,配置 Visual Studio 环境变量。
1 2
| set DISTUTILS_USE_SDK=1 set PYTORCH3D_NO_NINJA=1
|
最后切换到 Anaconda 环境,进入 pytorch3d 文件夹的目录,在虚拟环境 Pytorch3d
下执行以下命令编译安装。
最后直接执行命令,测试 Pytorch3d 是否安装成功。
1 2 3
| >>> import pytorch3d >>> pytorch3d.__version__ '0.7.2'
|
配置的环境依赖
environment.yml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253
| name: pytorch3d channels: - pytorch - iopath - conda-forge - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - defaults dependencies: - anyio=4.6.2=py39haa95532_0 - argon2-cffi=21.3.0=pyhd3eb1b0_0 - argon2-cffi-bindings=21.2.0=py39h827c3e9_1 - asttokens=2.0.5=pyhd3eb1b0_0 - async-lru=2.0.4=py39haa95532_0 - attrs=24.3.0=py39haa95532_0 - babel=2.16.0=py39haa95532_0 - backcall=0.2.0=pyhd3eb1b0_0 - beautifulsoup4=4.12.3=py39haa95532_0 - blas=1.0=mkl - bleach=6.2.0=py39haa95532_0 - brotli-python=1.0.9=py39h5da7b33_9 - ca-certificates=2025.1.31=h56e8100_0 - certifi=2025.1.31=py39haa95532_0 - cffi=1.17.1=py39h827c3e9_1 - charset-normalizer=3.3.2=pyhd3eb1b0_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.1=py39haa95532_0 - cudatoolkit=11.3.1=h59b6b97_2 - debugpy=1.8.11=py39h5da7b33_0 - decorator=5.1.1=pyhd3eb1b0_0 - defusedxml=0.7.1=pyhd3eb1b0_0 - exceptiongroup=1.2.0=py39haa95532_0 - executing=0.8.3=pyhd3eb1b0_0 - freetype=2.4.10=0 - fvcore=0.1.5.post20221221=pyhd8ed1ab_0 - h11=0.14.0=py39haa95532_0 - httpcore=1.0.2=py39haa95532_0 - httpx=0.27.0=py39haa95532_0 - icu=73.1=h6c2663c_0 - idna=3.7=py39haa95532_0 - importlib-metadata=8.5.0=py39haa95532_0 - importlib_metadata=8.5.0=hd3eb1b0_0 - intel-openmp=2023.1.0=h59b6b97_46320 - iopath=0.1.9=py39 - ipykernel=6.29.5=py39haa95532_1 - ipython=8.15.0=py39haa95532_0 - ipywidgets=8.1.5=py39haa95532_0 - jedi=0.19.2=py39haa95532_0 - jinja2=3.1.5=py39haa95532_0 - jpeg=9e=h827c3e9_3 - json5=0.9.25=py39haa95532_0 - jsonschema=4.23.0=py39haa95532_0 - jsonschema-specifications=2023.7.1=py39haa95532_0 - jupyter=1.1.1=py39haa95532_0 - jupyter-lsp=2.2.0=py39haa95532_0 - jupyter_client=8.6.3=py39haa95532_0 - jupyter_console=6.6.3=py39haa95532_0 - jupyter_core=5.7.2=py39haa95532_0 - jupyter_events=0.10.0=py39haa95532_0 - jupyter_server=2.14.1=py39haa95532_0 - jupyter_server_terminals=0.4.4=py39haa95532_1 - jupyterlab=4.3.4=py39haa95532_0 - jupyterlab_pygments=0.1.2=py_0 - jupyterlab_server=2.27.3=py39haa95532_0 - jupyterlab_widgets=3.0.13=py39haa95532_0 - krb5=1.20.1=h5b6d351_0 - lerc=4.0.0=h5da7b33_0 - libclang13=14.0.6=default_h8e68704_2 - libdeflate=1.22=h5bf469e_0 - libpng=1.6.39=h8cc25b3_0 - libpq=17.2=h70ee33d_0 - libsodium=1.0.18=h62dcd97_0 - libtiff=4.5.1=h44ae7cf_1 - libuv=1.48.0=h827c3e9_0 - libwebp=1.2.4=h2bbff1b_0 - libwebp-base=1.2.4=h2bbff1b_1 - lz4-c=1.9.4=h2bbff1b_1 - markupsafe=3.0.2=py39h827c3e9_0 - matplotlib-inline=0.1.6=py39haa95532_0 - mistune=2.0.4=py39haa95532_0 - mkl=2023.1.0=h6b88ed4_46358 - mkl-service=2.4.0=py39h827c3e9_2 - mkl_fft=1.3.11=py39h827c3e9_0 - mkl_random=1.2.8=py39hc64d2fc_0 - nbclient=0.8.0=py39haa95532_0 - nbconvert=7.16.4=py39haa95532_0 - nbformat=5.10.4=py39haa95532_0 - nest-asyncio=1.6.0=py39haa95532_0 - notebook=7.3.2=py39haa95532_0 - notebook-shim=0.2.3=py39haa95532_0 - openssl=3.4.1=ha4e3fda_0 - overrides=7.4.0=py39haa95532_0 - packaging=24.2=py39haa95532_0 - pandocfilters=1.5.0=pyhd3eb1b0_0 - parso=0.8.4=py39haa95532_0 - pickleshare=0.7.5=pyhd3eb1b0_1003 - pip=25.0=py39haa95532_0 - platformdirs=3.10.0=py39haa95532_0 - ply=3.11=py39haa95532_0 - portalocker=3.0.0=py39hcbf5309_0 - prometheus_client=0.21.0=py39haa95532_0 - prompt-toolkit=3.0.43=py39haa95532_0 - prompt_toolkit=3.0.43=hd3eb1b0_0 - psutil=5.9.0=py39h827c3e9_1 - pure_eval=0.2.2=pyhd3eb1b0_0 - pycparser=2.21=pyhd3eb1b0_0 - pygments=2.15.1=py39haa95532_1 - pyqt=5.15.10=py39h5da7b33_1 - pyqt5-sip=12.13.0=py39h827c3e9_1 - pysocks=1.7.1=py39haa95532_0 - python=3.9.21=h8205438_1 - python-dateutil=2.9.0post0=py39haa95532_2 - python-fastjsonschema=2.20.0=py39haa95532_0 - python-json-logger=3.2.1=py39haa95532_0 - python_abi=3.9=2_cp39 - pytorch=1.12.1=py3.9_cuda11.3_cudnn8_0 - pytorch-mutex=1.0=cuda - pywin32=307=py39ha51f57c_3 - pywinpty=2.0.14=py39h72d21ff_0 - pyyaml=6.0.2=py39hf73967f_2 - pyzmq=26.2.0=py39h5da7b33_0 - qt-main=5.15.2=h19c9488_12 - qtconsole=5.6.1=py39haa95532_0 - qtpy=2.4.1=py39haa95532_0 - referencing=0.30.2=py39haa95532_0 - requests=2.32.3=py39haa95532_1 - rfc3339-validator=0.1.4=py39haa95532_0 - rfc3986-validator=0.1.1=py39haa95532_0 - rpds-py=0.22.3=py39h636fa0f_0 - send2trash=1.8.2=py39haa95532_1 - setuptools=75.8.0=py39haa95532_0 - sip=6.7.12=py39h5da7b33_1 - six=1.16.0=pyhd3eb1b0_1 - sniffio=1.3.0=py39haa95532_0 - soupsieve=2.5=py39haa95532_0 - sqlite=3.45.3=h2bbff1b_0 - stack_data=0.2.0=pyhd3eb1b0_0 - tabulate=0.9.0=pyhd8ed1ab_2 - tbb=2021.8.0=h59b6b97_0 - termcolor=2.5.0=pyhd8ed1ab_1 - terminado=0.17.1=py39haa95532_0 - tinycss2=1.4.0=py39haa95532_0 - tk=8.6.14=h0416ee5_0 - tomli=2.0.1=py39haa95532_0 - torchaudio=0.12.1=py39_cu113 - torchvision=0.13.1=py39_cu113 - tornado=6.4.2=py39h827c3e9_0 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=py39haa95532_0 - typing-extensions=4.12.2=py39haa95532_0 - typing_extensions=4.12.2=py39haa95532_0 - tzdata=2025a=h04d1e81_0 - ucrt=10.0.22621.0=h57928b3_1 - urllib3=2.3.0=py39haa95532_0 - vc=14.42=haa95532_4 - vc14_runtime=14.42.34433=h6356254_24 - vs2015_runtime=14.42.34433=hfef2bbc_24 - wcwidth=0.2.5=pyhd3eb1b0_0 - webencodings=0.5.1=py39haa95532_1 - websocket-client=1.8.0=py39haa95532_0 - wheel=0.45.1=py39haa95532_0 - widgetsnbextension=4.0.13=py39haa95532_0 - win_inet_pton=1.1.0=py39haa95532_0 - winpty=0.4.3=4 - xz=5.6.4=h4754444_1 - yacs=0.1.8=pyh29332c3_2 - yaml=0.2.5=h8ffe710_2 - zeromq=4.3.5=hd77b12b_0 - zipp=3.21.0=py39haa95532_0 - zlib=1.2.13=h8cc25b3_1 - zstd=1.5.6=h8880b57_0 - pip: - absl-py==2.1.0 - astunparse==1.6.3 - backgroundmattingv2==1.0 - black==25.1.0 - cachetools==5.5.1 - contourpy==1.2.1 - cython==3.0.12 - dearpygui==2.0.0 - diff-gaussian-rasterization==0.0.0 - dlib==19.24.6 - docstring-parser==0.16 - eval-type-backport==0.2.2 - face-detection-tflite==0.6.0 - ffmpeg-python==0.2.0 - flake8==7.1.2 - flake8-bugbear==24.12.12 - flake8-comprehensions==3.16.0 - flatbuffers==25.2.10 - future==1.0.0 - gast==0.4.0 - gdown==5.2.0 - google-auth==2.38.0 - google-auth-oauthlib==1.0.0 - google-pasta==0.2.0 - h5py==3.12.1 - imgaug==0.4.0 - jax==0.4.30 - jaxlib==0.4.30 - keras==2.12.0 - libclang==18.1.1 - libcst==1.6.0 - lxml==5.3.1 - matplotlib==3.8.0 - mccabe==0.7.0 - ml-dtypes==0.5.1 - moreorless==0.4.0 - mypy-extensions==1.0.0 - narwhals==1.26.0 - numpy==1.22.3 - nvdiffrast==0.3.3 - oauthlib==3.2.2 - opt-einsum==3.4.0 - pandas==2.0.3 - pathspec==0.12.1 - pillow==9.5.0 - plotly==6.0.0 - plyfile==1.1 - protobuf==4.25.6 - pyasn1==0.6.1 - pyasn1-modules==0.4.1 - pycodestyle==2.12.1 - pyflakes==3.2.0 - python-gflags==3.1.2 - pytorch3d==0.7.2 - requests-oauthlib==2.0.0 - roma==1.5.1 - rsa==4.9 - scikit-image==0.22.0 - scipy==1.11.4 - shapely==2.0.7 - shtab==1.7.1 - simple-knn==0.0.0 - star==0.1.0 - stdlibs==2024.12.3 - tensorboard==2.12.3 - tensorflow==2.12.0 - tensorflow-estimator==2.12.0 - tensorflow-intel==2.12.0 - tensorflow-io-gcs-filesystem==0.31.0 - terminaltables==3.1.10 - toml==0.10.2 - trailrunner==1.4.0 - typeguard==4.4.2 - tyro==0.9.14 - usort==1.0.8.post1 - vhap==0.0.2 - wrapt==1.14.1 prefix: D:\00MyWorkplace\01anaconda\envs\pytorch3d
|