Trikang
Tri-MipRF 코드 빌드 본문
코드부터 가지고 오고
git clone https://github.com/wbhu/Tri-MipRF.git --recursive
해당 코드 빌드를 위한 conda 가상환경 설정
# 가상환경 생성
conda create -n tri_miprf python=3.9
# 가상환경 실행
conda activate tri_miprf
Installation
먼저, pip install을 진행하기 전에 필요한 세 가지부터 설치(PyTorch, tiny-cuda-nn, nvdiffrast)
# pytorch 1.13.1 + cu116
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
# tiny-cuda-nn
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
nvdifflast는 Gaussian Shader 모델 코드 빌드(https://yskang.tistory.com/32)에서 설치해서 그대로 가지고 왔음(루트 디렉토리로 복사).
그 이후에 pip install 진행(pycurl 설치에 문제가 있어 버전을 수정하였다(pycurl==7.43.0.6 -> pycurl==7.45.3)
pip3 install av==9.2.0 \
beautifulsoup4==4.11.1 \
entrypoints==0.4 \
gdown==4.5.1 \
gin-config==0.5.0 \
h5py==3.7.0 \
imageio==2.21.1 \
imageio-ffmpeg \
ipython==7.19.0 \
kornia==0.6.8 \
loguru==0.6.0 \
lpips==0.1.4 \
mediapy==1.1.0 \
mmcv==1.6.2 \
ninja==1.10.2.3 \
numpy==1.23.3 \
open3d==0.16.0 \
opencv-python==4.6.0.66 \
pandas==1.5.0 \
Pillow==9.2.0 \
plotly==5.7.0 \
pycurl==7.45.3 \
PyMCubes==0.1.2 \
pyransac3d==0.6.0 \
PyYAML==6.0 \
rich==12.6.0 \
scipy==1.9.2 \
tensorboard==2.9.0 \
torch-fidelity==0.3.0 \
torchmetrics==0.10.0 \
torchtyping==0.1.4 \
tqdm==4.64.1 \
tyro==0.3.25 \
appdirs \
nerfacc==0.3.5 \
plyfile \
scikit-image \
trimesh \
torch_efficient_distloss \
umsgpack \
pyngrok \
cryptography==39.0.2 \
omegaconf==2.2.3 \
segmentation-refinement \
xatlas \
protobuf==3.20.0 \
jinja2 \
click==8.1.7 \
tensorboardx \
termcolor
그리고 작동 확인을 위해 깃허브 페이지에 나와있는 대로 테스트를 진행하였다. nerf_synthetic dataset(https://drive.google.com/drive/folders/128yBriW1IG_3NJ5Rp7APSTZsJqdJdfc1)에서 chair만 먼저 다운로드한 다음에, Tri-MipRF의 루트 디렉토리에 data라는 폴더를 하나 만들고 거기에 넣었다.
그리고 매뉴얼에 나와있는 대로 Generate multiscale dataset을 진행하였는데
python scripts/convert_blender_data.py --blenderdir data/chair --outdir output/chair
# 실행 결과 #
['data/chair/test', 'data/chair/val', 'data/chair/train']
Converting from data/chair/test to output/chair/test
Split train
## 펑 ##
.
.
.
FileNotFoundError: [Errno 2] No such file or directory: 'data/chair/test/transforms_train.json'
문제가 생겨서 코드를 뜯던 와중 알게된 사실, dataset의 하나하나의 요소들을 주는 게 아니라 통째로 디렉토리를 줘야한다. nerf_synthetic/chair 이렇게 주지말고, nerf_synthetic 이렇게. 그랬더니 문제없이 작동한다.
학습 코드는 아래와 같다. 설정을 바꿔주고 싶으면 아래의 TriMipRF.gin에서 설정을 건들여주면 된다.
python main.py --ginc config_files/ms_blender/TriMipRF.gin
.gin 설정 파일에 정해둔 경로에 실험 결과가 생기는데, events.out.tfevents....workstation 파일은 tensorboard로 열면 볼 수 있다. remote 서버에서 로그 디렉터리로 이동한 다음에 아래와 같이 쳐서 로컬로 접속해서 학습 결과를 확인했다.
tensorboard --logdir=. --host 0.0.0.0 --port 6006
num_alive_ray:49480.89625 rendering_samples_actual:12663.8675 num_rays:375.0 PSNR:37.67721302032471
writer:write_scalar_dicts:79 - num_alive_ray:64998.2225 rendering_samples_actual:24124.75875 num_rays:375.0 PSNR:28.444711940288542
ficus
num_alive_ray:42297.92 rendering_samples_actual:35147.9475 num_rays:375.0 PSNR:33.79862045049667
hotdog
num_alive_ray:65945.1925 rendering_samples_actual:21052.46125 num_rays:375.0 PSNR:39.96704888105393
lego
num_alive_ray:70686.83875 rendering_samples_actual:28173.0725 num_rays:375.0 PSNR:36.449546372890474
materials
num_alive_ray:65370.32875 rendering_samples_actual:34059.2425 num_rays:375.0 PSNR:32.13547920942307
mic
num_alive_ray:33736.87 rendering_samples_actual:21910.2375 num_rays:375.0 PSNR:38.35209659576416
sip
num_alive_ray:101736.7675 rendering_samples_actual:33324.0025 num_rays:375.0 PSNR:33.676784234046934
'공부 > ML' 카테고리의 다른 글
Nerfstudio에서 ODM(OpenDroneMap)을 이용해 전처리한 데이터 사용하기 + 3D Gaussian Splatting Nerfstudio에서 학습하기 (0) | 2024.03.25 |
---|---|
[NoPe-NeRF, CUDA 11.8] 코드 빌드 및 Tanks and Temples & NeRF LLFF 전체 데이터 셋 학습 Python 코드 (0) | 2024.03.11 |
Gaussian Shader 모델 코드 빌드 (0) | 2024.03.03 |
[Python] 3D Gaussian splatting 여러 데이터 셋에 대해 일괄 학습-평가 진행하기 (0) | 2024.03.03 |
[리눅스] nerfstudio docker 이용해서 실행하기 (0) | 2024.03.02 |