Trikang
[리눅스] nerfstudio에서 여러 데이터 셋 한 번에 COMLAP 처리하기(python 코드 작성) 본문
환경 세팅은 이전 글 참고
xxxx@xxxxxxxxxxx:~/3D_survey/datasets$ ns-process-data images --data nerf_synthetic/chair/train --output-dir processed/nerf_synthetic_chair
Could not find ffmpeg. Please install ffmpeg.
See https://ffmpeg.org/download.html for installation instructions.
np-process-data 명령(https://docs.nerf.studio/quickstart/custom_dataset.html)을 이용해 데이터 셋을 가공하려 했으나, 위처럼 ffmpeg이 없다는 문제 발생. 저 매뉴얼을 대충 봤었는데, 아래로 내려보니 COLMAP 설치 가이드도 있어, ffmpeg, COLMAP을 설치.
sudo apt update
sudo apt install ffmpeg
COLMAP은 conda install로 설치하는 것을 권장해서 conda를 이용해 설치
conda install -c conda-forge colmap
근데 설치가 안되어서 확인해보니 cudatoolkit이 안 깔려있었다. 어제 테스트 어떻게 한거지?
conda install cudatoolkit
이후에 다시 위의 ns-process-data 명령을 실행하니 잘 작동했다.
이를 각 데이터셋마다 처리해주기 위해 자동화 코드를 아래와 같이 작성했다.
import subprocess
import os
def process_data(data_pairs):
failed_commands = []
for data_pair in data_pairs:
input_data_path, output_dir_path = data_pair
command = f"ns-process-data images --data datasets/{input_data_path} --output-dir {output_dir_path}"
try:
print(f"Starting: {command}")
subprocess.run(command, shell=True, check=True)
print("Success")
except subprocess.CalledProcessError as e:
print(f"Command failed: {command}")
print(f"Error: {e}")
failed_commands.append(command)
if failed_commands:
print("Failed commands:")
for cmd in failed_commands:
print(cmd)
# subprocess.run(command, shell=True)
# 여러 데이터 쌍을 정의합니다.
data_pairs = [
("nerf_synthetic/drums/train", "processed/nerf_synthetic_drums"),
("nerf_synthetic/ficus/train", "processed/nerf_synthetic_ficus"),
("nerf_synthetic/hotdog/train", "processed/nerf_synthetic_hotdog"),
("nerf_synthetic/lego/train", "processed/nerf_synthetic_lego"),
("nerf_synthetic/materials/train", "processed/nerf_synthetic_hotdog"),
("nerf_synthetic/mic/train", "processed/nerf_synthetic_mic"),
("nerf_synthetic/ship/train", "processed/nerf_synthetic_ship"),
# LLFF Datasets
("nerf_llff_data/fern/images", "processed/nerf_llff_fern"),
("nerf_llff_data/flower/images", "processed/nerf_llff_flower"),
("nerf_llff_data/fortress/images", "processed/nerf_llff_fortress"),
("nerf_llff_data/horns/images", "processed/nerf_llff_horns"),
("nerf_llff_data/leaves/images", "processed/nerf_llff_leaves"),
("nerf_llff_data/orchids/images", "processed/nerf_llff_orchids"),
("nerf_llff_data/room/images", "processed/nerf_llff_room"),
# Tanks and Temples
("tanks_and_temples/M60", "processed/tanks_and_temples_M60"),
("tanks_and_temples/Playground", "processed/tanks_and_temples_Playground"),
("tanks_and_temples/Train", "processed/tanks_and_temples_Train"),
("tanks_and_temples/Truck", "processed/tanks_and_temples_Truck"),
]
# 데이터 쌍을 처리합니다.
process_data(data_pairs)
'공부 > ML' 카테고리의 다른 글
[Python] 3D Gaussian splatting 여러 데이터 셋에 대해 일괄 학습-평가 진행하기 (0) | 2024.03.03 |
---|---|
[리눅스] nerfstudio docker 이용해서 실행하기 (0) | 2024.03.02 |
tetra-nerf 코드 빌드 환경 설정(cmake, OptiX, CGAL 5.5.2) (0) | 2024.03.02 |
[리눅스, RTX 4090] NeRF & 3D Gaussian Splatting 실험 환경 설정(CUDA 환경설정, Tanks and Temples 데이터셋, nerfstudio) (5) | 2024.03.01 |
머신러닝 환경 구성하기(Tensorflow, CUDA) (0) | 2020.06.27 |
Comments