ROSEFusion: 빠른 카메라 움직임 환경에서의 온라인 깊이 재구성 (Online DenSE Reconstruction)
요약
ROSEFusion은 빠른 카메라 움직임 환경에서 깊이 정보만을 활용하여 온라인으로 3D 장면을 재구성하는 방법을 제안합니다. 이 방법은 루프 클로저나 전역 자세 최적화 과정 없이도 실시간 프레임 속도로 견고한 카메라 추적이 가능함을 보여줍니다.
핵심 포인트
- 빠른 움직임 환경에서 깊이 정보만으로 3D 재구성 시도
- 루프 클로저/전역 최적화 없이 실시간 추적 구현
- C++와 CUDA 기반이며, Pangolin, OpenCV 등 라이브러리 사용
ROSEFusion :rose:
본 프로젝트는 우리의 SIGGRAPH 2021 논문인 ROSEFusion: Random Optimization for Online DenSE Reconstruction under Fast Camera Motion을 기반으로 합니다.
서론 (Introduction)
ROSEFusion은 깊이 정보만을 사용하여 빠른 움직임의 카메라 추적(fast-motion camera tracking)에서 발생하는 어려움을 해결하기 위해 제안되었습니다. 저희 방법은 루프 클로저(loop closure)나 전역 자세 최적화(global pose optimization) 없이도 실시간 프레임 속도로 빠른 카메라 움직임 하에서 견고한 카메라 추적을 수행합니다.
<p id="demo1" align="center"> <img src="assets/intro.gif" /> </p>설치 (Installation)
테스트 환경 1 (tested environment 1)
저희 코드는 C++와 CUDA를 기반으로 하며 다음 라이브러리들을 지원합니다:
- Pangolin (v0.6에서 테스트됨)
- OpenCV with CUDA (v.4.5가 필요하며, 예를 들어 링크를 따를 수 있습니다)
- Eigen (3.3.9에서 테스트됨)
- CUDA (V11.1, 11.4로 테스트됨)
이 코드는 Ubuntu 16.04 환경의 Nvidia GeForce RTX 2080 SUPER에서 테스트되었습니다.
테스트 환경 2 (tested environment 2)
저희 코드는 C++와 CUDA를 기반으로 하며 다음 라이브러리들을 지원합니다:
- Pangolin (v0.6에서 테스트됨)
- OpenCV with CUDA (v.4.5.5가 필요하며, 예를 들어 링크를 따를 수 있습니다)
- Eigen (3.4.0에서 테스트됨)
- CUDA (V11.8로 테스트됨)
이 코드는 Ubuntu 20.04 환경의 Nvidia GeForce RTX 3060 SUPER에서 테스트되었습니다.
CMakeLists.txt의 아키텍처 (sm_xx 및 compute_xx)가 사용자의 그래픽 카드와 호환되는지 확인해 주십시오.
[선택 사항] Docker로 테스트 (Option)
저희는 이미 모든 라이브러리, 코드 및 데이터가 포함된 docker 이미지를 업로드했습니다. 해당 docker 이미지는 One drive에서 다운로드할 수 있습니다.
준비하기
docker와 nvidia docker를 성공적으로 설치했는지 확인하십시오. 환경 설정이 완료되면 다음 명령어를 사용하여 docker 이미지를 부팅할 수 있습니다:
sudo docker load -i rosefusion_docker.tar
sudo docker run -it --gpus all jiazhao/rosefusion:v7 /bin/bash
또한, /home/code/ROSEFusion-main/CMakeList.txt 파일의 L22에 있는 아키텍처가 사용자의 그래픽 카드와 호환되는지 확인하십시오. 그렇지 않다면, sm_xx와 compute_xx를 변경한 후 ROSEFusion을 재빌드해야 합니다.
빠른 시작
도커 이미지 내부에 경로와 데이터가 이미 설정되어 있습니다. /home/code/ROSEFusion-main/build에서 "run_example.sh"와 "run_stairwell.sh"를 실행하기만 하면 되며, 궤적(trajectory)과 재구성(reconstuciton) 결과는 /home/code/rosefusion_xxx_data에 저장됩니다.
설정 파일
매개변수 설정을 용이하게 하기 위해 다음 설정 파일을 사용합니다. 총 네 가지 유형의 설정 파일이 있습니다.
- seq_generation_config.yaml: 데이터 정보
- camera_config.yaml: 카메라 및 이미지 정보
- data_config.yaml: 출력 경로, 시퀀스 파일 경로 및 볼륨 매개변수
- controller_config.yaml: 시각화(visualization), 결과 저장 및 추적(tracking) 매개변수
seq_generation_config.yaml은 데이터 준비에만 사용되며, 나머지 세 가지 유형의 설정 파일은 ROSEFusion을 실행하는 데 필수적입니다. 이미 일부 일반적인 데이터셋에 대한 설정 파일을 준비해 두었으므로, [유형]_config/ 디렉토리에서 자세한 내용을 확인할 수 있습니다. 사용자 자신의 데이터셋에 맞게 매개변수를 변경할 수 있습니다.
데이터 준비
데이터 준비의 세부 사항은 src/seq_gen.cpp에서 찾을 수 있습니다. 위에서 소개된 seq_generation_config.yaml을 사용하여 다음 스크립트로 실행할 수 있습니다:
./seq_gen sequence_information.yaml
완료되면 향후 재구성에 사용될 수 있는 .seq 파일이 생성됩니다.
Particle Swarm Template
저희 논문에서 사용한 것과 동일한 사전 샘플링된 PST(Particle Swarm Template)를 공유합니다. 각 PST는 N×6 이미지로 저장되며, 여기서 N은 입자(particle)의 개수입니다. .tiff 이미지는 PST 디렉토리에서 찾을 수 있으며, controller_config.yaml 파일 내의 PST 경로를 사용자의 경로로 변경해 주십시오.
실행 방법 (Running)
마지막으로, ROSEFusion을 실행하려면 camera_config.yaml, data_config.yaml, 그리고 controller_config.yaml 세 가지 파일을 제공해야 합니다. 저희는 이미 ./camera_config, ./data_config, /controller_config에 많은 일반 데이터셋의 설정 파일들을 공유하고 있습니다. 설정 파일의 모든 매개변수는 원하는 대로 수정할 수 있습니다. 필요한 모든 파일을 갖추었다면, 다음과 같이 ROSEFusion을 실행할 수 있습니다:
./ROSEFsuion your_camera_config.yaml your_data_config.yaml your_controller_config.yaml
빠른 시작을 위해, 관련 설정 파일과 함께 작은 크기의 합성 시퀀스 파일를 다운로드하여 사용할 수 있습니다. 미리보기를 참고하십시오.
<p id="demo1" align="center"> <img src="assets/example.gif" /> </p>FastCaMo 데이터셋
저희는 합성(synthetic) 및 실제 캡처된 시퀀스 모두를 포함하는 Fast Camera Motion 데이터셋을 제시합니다. 더 자세한 내용은 논문을 참고해 주십시오.
FastCaMo-Synth
Replica Dataset의 10가지 다양한 방 규모(room-scale) 장면을 사용하여, 합성 궤적(synthetic trajectories)을 따라 컬러 이미지와 깊이 맵을 렌더링했습니다. 원본 시퀀스는 FastCaMo-synth-data(raw).zip에 제공되며, 합성 노이즈 및 모션 블러가 포함된 FastCaMo-synth-data(noise).zip도 제공합니다. 저희는 simkinect와 동일한 노이즈 모델을 사용했습니다. 평가를 위해, 정지 상태의 참값(ground truth) 궤적을 다운로드할 수 있습니다.
FastCaMo-Real
빠른 카메라 움직임 환경에서 촬영된 12개의 실제 RGB-D 시퀀스를 포함합니다. 각 시퀀스는 체육관이나 계단 통로와 같은 까다로운 환경에서 Azure Kinect DK를 사용하여 기록되었습니다. 저희는 고성능 레이저 스캐너로 모델링된 정확한 밀집 재구성(dense reconstructions)을 그라운드 트루스(ground truth)로 제공합니다. 다만, 원본 모델이 매우 크기 때문에 cloudcompare의 내장 공간 다운샘플 알고리즘을 활용했습니다. 서브샘플링된 FastCaMo-real 모델은 여기에서 다운로드할 수 있습니다.
<p id="demo1" align="center"> <img src="assets/fastcamo-real.gif" /> </p>인용 (Citation)
연구에서 저희의 작업이 유용하다고 생각되시면, 다음을 인용해 주시기 바랍니다:
@article {zhang_sig21,
title = {ROSEFusion: Random Optimization for Online Dense Reconstruction under Fast Camera Motion},
author = {Jiazhao Zhang and Chenyang Zhu and Lintao Zheng and Kai Xu},
...
자주 묻는 질문 (FAQ)
Q: 예제 데이터를 실행할 때 Frame could not be processed 오류가 보고됩니다.
A: 환경이 올바르게 설치되었는지 확인해 주십시오:
ompute_xx,code=sm_xx를 확인하고 GPU 장치에 유효한지 확인하십시오.- opencv를
-D WITH_CUDA=ON으로 빌드하고-D CUDA_ARCH_BIN=x.x가 GPU 장치에 유효한지 확인하십시오.
감사의 말씀 (Acknowledgments)
저희의 코드는 KinectFusionLib에서 영감을 받았습니다.
이것은 ROSEFusion의 오픈 소스 버전이며, 특정 라이선스를 피하기 위해 일부 기능이 재작성되었습니다. 결과를 정확하게 재현할 것이라고 기대되지는 않지만, 결과는 거의 동일합니다.
라이선스 (License)
소스 코드는 GPLv3 라이선스로 공개되었습니다.
문의 (Contact)
질문이 있으시면 Jiazhao Zhang에게 [email protected]으로 이메일을 보내주십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기