Trikang
Nerfstudio에서 ODM(OpenDroneMap)을 이용해 전처리한 데이터 사용하기 + 3D Gaussian Splatting Nerfstudio에서 학습하기 본문
공부/ML
Nerfstudio에서 ODM(OpenDroneMap)을 이용해 전처리한 데이터 사용하기 + 3D Gaussian Splatting Nerfstudio에서 학습하기
Trikang 2024. 3. 25. 15:07드론 매핑을 이용한 데이터 전처리
OpenDroneMap이 docker 버전으로 설치되어 있다고 가정
docker run -ti --rm -v {local directory}:{docker volume에서의 directory} opendronemap/odm --project-path {docker volume에서의 directory} {프로젝트 명} {옵션}
아래는 local directory: /home/user/data/odm_dataset
docker volume에서의 directory: /datasets
프로젝트 명: drone-230706-1722-25-fastortho
이라고 가정하였을 때의 코드 예시
* 여기서, local directory 안에 '프로젝트 명' 폴더를 하나 만들고, 그 안에 여러 source 이미지가 들어있는 Images 디렉토리가 필요함. 아래 상황에서는 /home/user/data/odm_dataset/drone-230706-1722-25-fastortho 디렉토리가 존재하고, 해당 디렉토리 안에 Images 디렉토리와 그 내용물이 있어야 한다는 의미임.
docker run -ti --rm -v /home/user/data/odm_dataset:/datasets opendronemap/odm --project-path /datasets drone-230706-1722-25-fastortho --dem-resolution 2.0 --dsm --fast-orthophoto
nerfstudio 컨테이너와 연동된 볼륨으로 데이터 옮기기
우선 Nerfstudio 실행
만약 run이 되어있지 않으면
sudo docker start nerfstudio
그 이후
sudo docker attach nerfstudio
ODM 결과를 nerfstudio 컨테이너 연동 볼륨으로 데이터 복사
sudo cp -r data/odm_dataset/test_project nerfstudio/data/
데이터를 복사하는 과정에서 디렉토리의 Owner가 root로 변경되어 다시 user로 바꿨다
sudo chown -R user:user drone-230706-1722-25-fastortho
nerfstudio에 맞게 데이터 가공
ns-process-data 명령으로 nerfstudio에 맞게 데이터 가공 실행
ns-process-data odm --data data/drone-230706-1722-25-fastortho --output-dir data/outputs/drone-230706-1722-25-fast
그런데 아래와 같은 에러가 발생했다
Traceback (most recent call last):
File "/home/user/.local/bin/ns-process-data", line 8, in <module>
sys.exit(entrypoint())
File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/process_data.py", line524, in entrypoint
tyro.cli(Commands).main()
File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/process_data.py", line437, in main
copied_image_paths = process_data_utils.copy_images_list(
File "/home/user/3D_survey/nerfstudio/nerfstudio/process_data/process_data_utils.py", line 305, in copy_images_list
ffmpeg_cmd = f'ffmpeg -y -noautorotate -i "{image_dir / f"{framename}{copied_image_paths[0].suffix}"}" '
IndexError: list index out of range
내부 코드 열심히 뜯어가며 확인한 결과, 그냥 경로 실수였다. path 잘 보자.
ns-process-data odm --data data/drone-230706-1722-25-fastortho --output-dir data/outputs/drone-230706-1722-25-fast
3D-GS 실행
학습 진행
ns-train splatfacto --data outputs/map_2
학습을 진행하는 동안 ip:7007로 접속하여(웹 브라우저) 학습 과정과 결과를 볼 수 있음.
3D Points 추출
ns-export gaussian-splat --load-config outputs/map_230706_1722_25m/splatfacto/2024-03-22_073036/config.yml --output-dir exports/splat/
키프레임 입력해서 비디오 추출도 가능
ns-render camera-path --load-config outputs/map_2/splatfacto/2024-03-25_054644/config.yml --camera-path-filename /workspace/outputs/map_2/camera_paths/2024-03-25-05-46-47.json --output-path renders/map_2/2024-03-25-05-46-47.mp4
'공부 > ML' 카테고리의 다른 글
[Large Language Model 논문 정리] MINIGPT-4: ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS (2) | 2024.04.04 |
---|---|
NeRF LLFF dataset을 3D Gaussian Splatting의 Input으로 넣기 (0) | 2024.03.26 |
[NoPe-NeRF, CUDA 11.8] 코드 빌드 및 Tanks and Temples & NeRF LLFF 전체 데이터 셋 학습 Python 코드 (0) | 2024.03.11 |
Tri-MipRF 코드 빌드 (1) | 2024.03.05 |
Gaussian Shader 모델 코드 빌드 (1) | 2024.03.03 |
Comments