Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Trikang

Tri-MipRF 코드 빌드 본문

공부/ML

Tri-MipRF 코드 빌드

Trikang 2024. 3. 5. 13:57

코드부터 가지고 오고

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

Comments