실행 환경

  • CPU: AMD Ryzen 9800X3D
  • RAM: 48GB
  • OS: (WSL) Ubuntu-22.04
  • GPU: NVIDIA RTX 5080 16G
  • CUDA Toolkit: CUDA 12.9

LingBot-Map 환경구축

0. Download Source

git clone https://github.com/Robbyant/lingbot-map.git

1. Conda 환경 생성

conda create -n lingbot-map python=3.10 -y
conda activate lingbot-map

2. PyTorch 설치

  • PyTorch 2.8.0 버전을 권장. (배치 렌더링 파이프라인에 필요한 NVIDIA Kaolin의 빌드된 휠 파일이 해당 버전에 포함되어 있기 때문)
  • 설치 환경(RTX 5080)에 권장되는 CUDA 버전에 따라 설치함. (CUDA 12.9, PyTorch 설치 참고)
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 \
 --index-url https://download.pytorch.org/whl/cu129

3. Lingbot-Map 설치

pip install -e .

4. FlashInfer 설치 (권장)

  • FlashInfer는 효율적인 Streaming Inference 환경을 제공함.
  • FlashInfer이 설치되지 않으면 --use_sdpa 옵션을 통해 모델은 PyTorch 네이티브 어텐션으로 대체 가능함.
  • FlashInfer는 실행 시 CUDA kernel을 JIT compile하는 과정에서 nvcc를 호출한다 로컬 CUDA 버전을 따름.
pip install flashinfer-python

5. 시각화 종속 패키지 설치 (옵션)

pip install -e ".[vis]"

6. Sky Masking (옵션)

  • skyseg.onnx를 이용한 하늘 영역 분할 및 필터링 기능을 사용하기 위해 onnxruntime 라이브러리 설치
# Install onnxruntime (required)
pip install onnxruntime        # CPU
# or
pip install onnxruntime-gpu    # GPU (faster for large image sets)

LingBot-Map 모델 다운로드

  • 본 테스트에서는 lingbot-map.pt 모델을 사용함.
Model NameHuggingface RepositoryModelScope RepositoryDescription
lingbot-map-longrobbyant/lingbot-mapRobbyant/lingbot-mapBetter suited for long sequences and large scale scenes.
lingbot-maprobbyant/lingbot-mapRobbyant/lingbot-mapBalanced checkpoint (used in paper, benchmark and offline demo) — trade off all-around performance across short and long sequences.
lingbot-map-stage1robbyant/lingbot-mapRobbyant/lingbot-mapStage-1 training checkpoint of lingbot-map — can be loaded into the VGGT model for bidirectional inference (c2w).

LingBot-Map 데모 실행

Interactive Demo

  • demo.py 를 실행하여 viser을 이용한 브라우저에서 상호작용 가능한 3D 시각도구를 실행 할 수 있다 (기본 주소는 http://localhost:8080).
# courthouse scene
python demo.py --model_path /path/to/lingbot-map.pt \
    --image_folder example/courthouse --mask_sky
 
# FlashInfer 미설치 시 '--use_sdpa' 사용
python demo.py --model_path /path/to/lingbot-map.pt \
    --image_folder example/courthouse --mask_sky --use_sdpa
 
# University scene
python demo.py --model_path /path/to/lingbot-map.pt \
    --image_folder example/university --mask_sky
 
# Loop scene (loop closure trajectory)
python demo.py --model_path /path/to/lingbot-map.pt \
    --image_folder example/loop
  • (Sky Masking) Sky Masking 옵션은 ONNX Sky Segmentation 모델을 사용하여 추론된 포인트 클라우드에서 하늘 영역에 해당하는 포인트 클라우드를 필터링함으로써 야외 장면의 시각화 품질을 향상시킨다. 데모 실행 코드에서 --mask_sky 옵션으로 모델 자동 다운로드 및 적용.
  • http://localhost:8080 접속 및 테스트

Offline Demo

추가 라이브러리 설치

# open3d, pyyaml 등 설치
pip install -e ".[vis,render]"
 
# Kaolin 설치 (torch-cuda 버전에 맞게)
pip install --index-url https://pypi.org/simple \
    kaolin -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-2.8.0_cu129.html

CUDA extensions 설치

  • 첫 실행 전 설치가 요구됨. rgbd_render에서 gpu voxelization 및 frustum culling 을 위해 사용됨.
cd demo_render/render_cuda_ext && python setup.py build_ext --inplace && cd ../..

장면 비디오 다운로드

Worked Example — outdoor drive scene

python demo_render/batch_demo.py \
    --video_path /data/demo_videos/drive_frames.mp4 \
    --output_folder /data/outputs/drive/ \
    --model_path /path/to/lingbot-map.pt \
    --config demo_render/config/outdoor_drive.yaml \
    --mode windowed --window_size 128 \
    --max_non_keyframe_gap 100 --overlap_keyframes 8 \
    --image_stride 1 \
    --sky_mask_dir /data/outputs/sky_masks \
    --sky_mask_visualization_dir /data/outputs/sky_mask_viz \
    --camera_vis default --keyframes_only_points \
    --frame_tag --frame_tag_position top_right \
    --save_predictions

데모 영상