[Neural_SDFs tutorial]

概要



 これはDNN技術を応用したGLSLグラフイックの技術デモです。

彼女の解説動画を元に作成しました。

 ディープラーニング技術を利用して距離関数の算出を行いデータ化しました。
Windiws10 20H2以降 ubuntu環境でもCUDAのが動くようになり、機械学習が大変やりやすくなりました。

ここでは環境構築からSDFデータ作成までの道のりを説明していきます。
この技術を応用すると、あらゆる「波形」「画像」「3次元データ」を距離関数化することが出来るようになります。





■事前準備■

1.BIOSのVirtualization Technologyをオンにする


2.「Windows の機能の有効化または無効化」の「Hyper-V」にチェックする
3.「Linux 用 Windows サブシステム」と 「仮想マシンプラットフォーム」にもチェック


4.Windows10バージョン21H2以降にする


5.Nvidiaドライバを最新にする。(GameReadyでも可)
https://www.nvidia.co.jp/Download/index.aspx

~再起動~





■WSL2のインストール■

Linux カーネル更新プログラム パッケージをインストールする
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

Windows Terminal あるいはPowerShellを,管理者で実行して以下のコマンドを実行する

Windows Subsubsystem for Linux を有効化する
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

仮想マシンプラットフォームのオプションコンポーネントを有効化する
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSL の既定(デフォルト)のバージョンを 2 に設定する
wsl --set-default-version 2




■Ubntuのインストール■

マイクロソフト・ストアを開いて「Ubuntu 20.04 LTS」をインストールする


コマンドプロンプトを起動してwslのバージョンを確認する
wsl --set-version Ubuntu-20.04 2
wsl -l -v

~ubuntuを起動し、ユーザー名とパスワードを決める~

※ubntuが起動できない場合、仮想化の設定が失敗しているのでBIOS管理から見直す。



■CUDA for WSLのセットアップ■

ubuntu内で必要なプログラムをインストールして行く

カーネルのアップデートをする
sudo apt -y update
sudo apt -yV upgrade

WSL2のインストール(ubuntu)
wsl --install -d Ubuntu-20.04

Docker-CEのインストール
curl https://get.docker.com | sh
※途中、WSLを見付けたのでDocker Desktopにしませんか的な英語のメッセージが出るが、放っておく

CUDA Toolkit のインストール(一行ずつ呪文を唱える。折り返し注意)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo service docker start
CUDA for WSLが動くかどうか確認する
sudo docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

※エラー等が出ていなければ成功




■ツールのセットアップ■

引き続きubuntu内で必要なプログラムをインストールして行く

pythonのインストール
sudo apt -y install build-essential python3-dev python3-pip
pipのアップグレード
pip install -U pip
pytorchのインストール(折り返し注意)
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
必要なライブラリのインストール(一行づつ)
pip install numpy
pip install pandas
pip install matplotlib
pip install scikit-image
pip3 install mesh-to-sdf
GLUTのインストール
sudo apt-get install libglu1-mesa-dev mesa-common-dev
jupyter-notebookのインストール
sudo pip3 install jupyterlab
google-chromeのインストール(一行づつ)
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y




■MobaXtermのインストール■

windows上でubuntuのGUIを動かすためにMobaXtermをDLしてインストールします。
Free版のDownload nowを押してインストールします。
https://mobaxterm.mobatek.net/download.html

こんな感じで画面が開ければセットアップ完了です。

※知識がある人はVcXsrvでもいいです。

ubuntuのコンソールをダブルクリックで開きます。
Blackle MoriさんのgoogleDriveからneural_experimentsのプロジェクトをダウンロードして
解凍後、ubuntuのフォルダへコピーします。
https://drive.google.com/drive/folders/13-ks7iyLyI0vcS38xq1eeFdaMdfNlUC8







■プロジェクトの開始■

ubumtuのコンソールを2つほど開いてプログラムをスタートさせます

WSL-Ubuntu-20.04側ではGUI
sudo service docker start 
google-chrome
WSL-Ubuntu側ではjupyter-notebook
jupyter-notebook

jupyter-notebookに記載されているURLを、ubuntuから立ち上がったgoogle-chromeのURLに張り付けます。


ubuntuのフォルダが表示されるので、sdf.ipynbをクリックして開きます。


あとは動画の解説通りに、Is[n]部分をクリックしてRUNを押していけば実行できます。


※注意:ここのserialize_to_shadertoy(sdf_siren, "f")の行は削除しないとエラーが出ます。


全てがうまく行けばここから計算結果が出力されるので、shadertoyに張り付ければ確認できます。




プロジェクトフォルダ内には他にも猫画像のsad_catや色まで含んだ距離関数のサンプルなどが入っています。この手法は応用範囲が広いので波形を距離関数にしたり二次元画像を変換したり後処理のシェーダーで加工するなどアイデア次第で色々な事がきそうです。





■QA■

Q:計算結果がぐちゃぐちゃになる
A:球のような閉じた形(水密構造)でないと結果が発散します。
 Blenerで球からこねてみましょう

Q:思ったより形がぬるい
A:そんなもんです。sdf_siren = train_siren(sdfloader, 16←の数字を上げれば良くなります
 が重くなります

Q:環境構築でくじけそう
A:頑張れ!どうしてもうまくいかない場合はDM下さい

参考:
Microsoft:https://docs.microsoft.com/en-us/windows/wsl/install-win10
WSL2にCUDA on WSLをインストールする:https://ascii.jp/elem/000/004/020/4020410/
CUDA on WSL User Guide https://docs.nvidia.com/cuda/wsl-user-guide/index.html