# MobileNeRF Installation Steps ### 注意事項 - 安裝套件之前,請先確認環境是否已切換成Mobile NeRF環境(不要安裝在base環境) ### 安裝步驟 1. 更新Nvidia driver,並重新開機 2. 安裝WSL 2。可以參考[官方網站](https://learn.microsoft.com/en-us/windows/wsl/install) 3. 下載並安裝Anaconda ``` wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh bash Anaconda3-2023.07-2-Linux-x86_64.sh ``` 注意最新Anaconda版本,別直接複製貼上以上指令 4. 建立Anaconda環境,Python版本爲3.8,並開啟該環境 ``` conda create --name <env_name> python=3.8 conda activate <env_name> ``` 5. [optional if use pip]下載並安裝Cuda。可以參考[Cuda官方網站](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=runfile_local) ``` wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo sh cuda_12.2.2_535.104.05_linux.run --override ``` - 注意最新Cuda版本,別直接複製貼上以上指令 - 安裝完之後,建議再次重新開機 - 重開之後,可以確認Cuda是否安裝成功,並確認系統是否有檢測到顯卡 ``` nvcc -V nvidia-smi ``` 6. 找尋`.bashrc`檔,並加入PATH以及LD_LIBRARY路徑 ``` # 用vim來編輯檔案 vim .bashrc # 將以下行加入至檔案(注意你的cuda版本) export PATH=/usr/bin:$PATH export PATH="/usr/local/cuda-12.2/bin:$PATH" export LD_LIBRARY="/usr/local/cuda-12.2/lib64:$LD_LIBRARY" # 想要離開vim的話,按Esc並輸入 :wq 或者 :x ``` - 編輯完後,呼叫`source .bashrc`,使Ubuntu重新設定環境 - 別忘再切換環境`conda activate <env_name>` 7. ~~下載cuDNN~~ [~~開連結後, 並需要申請developer~~](https://developer.nvidia.com/rdp/cudnn-download) <details> <summary> 這步驟不用做了 </summary> - 複製下載好的檔案到WSL環境裡, 然後extract. - ($distro 為 ubuntu2004, ubuntu2204, 等等. 本教程是用ubuntu2204)版本查看lsb_release -a - (必須把 X.Y 以及 8.x.x.x 替換到您特定CUDA和cuDNN版本) ``` sudo dpkg -i cudnn-local-repo-$distro-8.x.x.x_1.0-1_amd64.deb sudo cp /var/cudnn-local-repo-ubuntu2204-8.x.x.x/cudnn-local-275FA572-keyring.gpg /usr/share/keyrings/ ``` - Refresh repository metadata ``` sudo apt-get update ``` - 安裝 Runtime Library ``` sudo apt-get install libcudnn8=8.x.x.x-1+cudaX.Y ``` - 安裝 Developer Library ``` sudo apt-get install libcudnn8-dev=8.x.x.x-1+cudaX.Y ``` </details> 8. 下載jax 此步驟有兩種方式(local 跟 pip) 8-1 : (pip 推薦) ``` pip install --upgrade pip # CUDA 12 installation # Note: wheels only available on linux. pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html ``` 8-2 : (locally) Jax有很多種類,各個有不同安裝方式。我們想要的是[用顯卡、local的jax](https://github.com/google/jax#pip-installation-gpu-cuda-installed-locally-harder) ``` pip install --upgrade pip # Installs the wheel compatible with CUDA 12 and cuDNN 8.9 or newer. # Note: wheels only available on linux. pip install --upgrade "jax[cuda12_local]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html ``` 9. 將[Mobile NeRF](https://github.com/google-research/jax3d/tree/main/jax3d/projects/mobilenerf) clone下來 ``` git clone https://github.com/google-research/jax3d.git ``` 10. 安裝Mobile NeRF 安裝之前,記得要把requirements.txt的內容改成: ``` numpy>=1.16.4 jax>=0.2.6 jaxlib>=0.1.69 flax>=0.2.2,<0.6.0 opencv-python>=4.4.0 Pillow>=7.2.0 matplotlib>=3.3.4 tqdm ``` 安裝流程: ``` pip install -r requirements.txt ``` 11. 下載[訓練dataset](https://drive.google.com/drive/folders/1JDdLGDruGNXWnM1eqY1FNL9PlStjaKWi) - 以上連結會提供各種訓練物件的資料,請選一個(例chair物件) - 下載之後,將dataset移動至固定的路徑(<MobileNeRF路徑>/datasets/nerf_synthetic/) 12. 開始訓練 ``` # 可以自行建立一個sh檔,以便訓練三個階段 # python stage1.py # python stage2.py # python stage3.py bash ./train.sh ``` 13. 問題解決 - ImportError: libGL.so.1: cannot open shared object file: No such file or directory ``` sudo apt-get update && sudo apt-get install libgl1 ``` 14. 參考資料 - [nvidia-smi與nvcc -V印出來版本不同](https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi)