NeRFをgoogle colabで動かしてみる

始めに

いまさらかもしれませんが、NeRFすごいです。
フォトグラメトリによる3D再構成結果と比べると革新的な技術に思えます。

www.matthewtancik.com
GitHubにコードがあるので私の環境でも動かしてみようとしたのですが、
- Windows PC(RTX3070搭載):WSL2のCUDA対応がうまくいかず。
 OSをWindows10のinsiderPreviewかWindows11に更新すれば
 動かせそうな気配もあったがまだOSを更新したくなかったので断念。
- Intel Mac:CUDA非対応なので断念。

NeRF作者のgithubをみるとGoogle Colabでも動くようなのでトライ。

残念ながら、最近Google Colabではtensorflow 1.xが非サポートとなったようでそのままでは動きませんでした。試行錯誤した結果、それっぽく動くようになったので、手順をシェアします。

環境構築

最初にgoogleアカウントを用意します。
持っていない人は下記のページで作成してください。

www.google.com


次に下記のリンクから「Google Colaboratory」を開き、ノートブックを新規作成します。

colab.research.google.com

次に、下記ページを参考に、Google Colaboratoryにてgoogleドライブをマウントします。
www.teamxeppet.com
フォルダを移動します。
Google Colaboratoryの入力ボックスに下記のコマンドを入力後、左側の再生ボタンを押します(これ以降の部分も同様の手順でコマンドを実行していきます)。

cd drive/MyDrive/


次に、githubからNeRFのコード一式を持ってきます。

github.com

!git clone https://github.com/bmild/nerf.git --recursive




Google Colab「ファイル」のファイルメニューから「ドライブで探す」を実行



nerfフォルダの中にGitHubからダウンロードしたtiny_nerf.ipynbがあるので、ダブルクリックして開く。



ランタイム→「ランタイムのタイプを選択」ハードウェアアクセラレータをGPUにして保存

[重要]先頭のセルを次のように書き換える。
修正前

try:
  import google.colab
  IN_COLAB = True
except:
  IN_COLAB = False

if IN_COLAB:
    %tensorflow_version 1.x

import os, sys
import tensorflow as tf
tf.compat.v1.enable_eager_execution()

from tqdm import tqdm_notebook as tqdm
import numpy as np
import matplotlib.pyplot as plt


修正後

!pip install tensorflow-gpu==1.15
!pip install numpy==1.19.5
try:
  import google.colab
  IN_COLAB = True
except:
  IN_COLAB = False

#if IN_COLAB:
#    %tensorflow_version 1.x

import os, sys
import tensorflow as tf
#tf.compat.v1.enable_eager_execution()

from tqdm import tqdm_notebook as tqdm
import numpy as np
import matplotlib.pyplot as plt


あとは順次セルを実行していくだけです。
ランライムの再起動を求められたら、適宜「ランタイム」メニューから再起動してください。


では、また。