🎆

3D Gaussian Splattingの環境構築

2023/11/24に公開

概要

  • 3D Gaussian Splatting for Real-Time Radiance Field Renderingの環境構築をした
  • GitHubに解説があり、解説通りに実施すれば問題ないのだが、自身がつまずいた部分を補足する
  • Microsoft Visual Studio、Anaconda、CUDA Toolkit、Gitの意味やインストール方法などを理解している方を対象とする
    • 細かな手順、インストール方法などは言及しない

環境

  • Windows 11
  • conda 23.5.2 (miniconda)
  • Microsoft Visual Studio 2022 Ver.17.7.1
    • C++ によるデスクトップ開発
  • コマンドプロンプト(Powershellではない)
  • CUDA Toolkit 11.8 (conda環境にインストール)

ハードウェア要件

  • VRAM 24GBという、かなりハイエンドのNVIDIA(CUDA搭載)のGPUを要求するので注意
    • CUDA-ready GPU with Compute Capability 7.0+
    • 24 GB VRAM (to train to paper evaluation quality)

C++ によるデスクトップ開発の準備

その他

  • 必要に応じて、以下のツールもインストールする

  • COLMAP

    • Gaussian Splatting用のデータを作成するときに使う
  • ImageMagick

    • 画像のリサイズなどを行うときに使う
  • FFmpeg

    • 動画から画像を抽出するときに使う

手順

  • GitHubからコードをダウンロードする
  • 環境が定義されたymlファイルを使って、condaの環境の構築する
  • これだけで環境構築ができることを期待したのだが、自身が遭遇したトラブルと解決方法を述べる
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

cd gaussian-splatting

SET DISTUTILS_USE_SDK=1 # Windows only
conda env create --file environment.yml
conda activate gaussian_splatting

「CUDA_HOME」が設定されていないというエラーに遭遇

Pip subprocess error:
  error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
raise EnvironmentError('CUDA_HOME environment variable is not set. '
  • GitHubで用意されているenvironment.ymlの内容を確認するとdependenciescudatoolkit=11.6と書かれている
    • CUDA Toolkitの依存関係も解決してくれる(conda環境にCUDA Toolkitがインストールされる)と期待するのだが、そういう記述ではないのだろうか(要調査)
  • conda install -c "nvidia/label/cuda-11.8.0" cuda で手動でインストールする
    • GitHubによると11.8がよさそうだ
    • environment.ymlは、11.6になっているので注意
    • (we used 11.8, known issues with 11.6) 11.6では既知の問題があるとのこと
  • CUDA Toolkitがインストールされたかは、nvcc --versionで動作確認できる
    • condaでのインストールでは、CUDA_HOMEという環境変数は設定されないようなので、エラーが出る場合は、環境変数を設定してみる価値はあると思う(筆者は設定不要であった)
    • where nvccを行えば、condaの環境側にインストールされてことを確認できる

CUDA Toolkitのインストールの他の方法

  • うまくいかない場合は、NVIDIAの公式のインストーラーを使って、CUDA Toolkit 11.8をインストールする方が確実だと考える
  • 自身は、環境をあまり汚したくないので(他でもCUDA Toolkitを使うので)、conda管理を選択した
  • NVIDIAのインストーラーでも複数のバージョンのCUDA Toolkitをインストールできるようだが、パスは手動で切り替えることになると思われる

C++のコンパイラが存在しないというエラーに遭遇

  • エラーから察するに、サブモジュール diff-gaussian-rasterization をインストールするのにC++のコンパラが必要と思われる
Installing collected packages: diff-gaussian-rasterization
  Running setup.py install for diff-gaussian-rasterization ... error
  error: subprocess-exited-with-error

  × Running setup.py install for diff-gaussian-rasterization did not run successfully.
  │ exit code: 1
  ╰─> [34 lines of output]
nvcc fatal   : Cannot find compiler 'cl.exe' in PATH

方法1「Developer Command Promptを使う」

  • 「Developer Command Prompt for VS 2022」というショートカットを使ってコマンドプロンプトを起動する
  • Visual Studioをインストールすると以下あたりにインストールされる(と思われる)
  • cl.exeとコマンドを打って、動作確認する
    • パスが通れば、バージョン番号などが出る
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools

方法2「batを使う」

  • Visual Studioが用意してくれている、以下のbatファイルを実行する
    • パスは環境によって異なる可能性があるので、*.batなどで検索するとよい
  • cl.exeとコマンドを打って、動作確認する
    • パスが通れば、バージョン番号などが出る
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat

方法2の余談

  • ふと、Developer Command Promptの中身を確認すると以下のようになっていた
  • 今まで、上記のbatを使ってきたが、こちらの方がよいのだろうか
  • %comspec%は、コマンドプロプントを抽象化した環境変数のようだ
%comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"

方法3「パスを通す」

  • cl.exeへのパスを通す
  • 恒久的に設定するのは、トラブルのもとなのでおすすめしない(が、好みの問題である)
  • 筆者は、昔に古いcl.exeへのパスが通っていたせいで、1日つぶしたことがあるので、日常的に使わないアプリに対して恒久的にパスを通すのは嫌いである
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\{{VERSION}}\bin\Hostx86\x86\cl.exe

雑談

  • cl.exeを知らないとエラーの意味が不明なのだが、検索したり、AIに聞けば一瞬で答えがみつかるので、良い時代と感じる
  • cl.exeは、おそらく、Compile(r)とLink(er)の頭文字を取ったものと思われる
  • 恒久的にパスを通していても、通していなくても、どちらでもハマることがあるので、色々と大変な時代でもある(複雑で変化が激しい時代)
    • 筆者の最近の好みは、必要最低限の環境にして、必要になったときだけ呼び出す、手法だ
    • そういう意味では仮想環境などのを用意するのが理想的だが、GPUなどのハードウェアが絡むと、はまりやすい印象(便利だが、複雑な時代だ)

次回

  • 3D Gaussian Splattingのデータの用意について述べようと思う
    • 30分ぐらいで本題に行く想定が、2、3時間消費してしまった

参考にしたサイト

Discussion