amap-cvlab/ABot-Recon

Streaming 3D reconstruction from only video input: Revisiting Local Context for Long-Horizon Streaming 3D Reconstruction

ABot‑Recon – 고정 로컬 컨텍스트를 사용한 스트리밍 3‑D 재구성

한 문장 요약: ABot‑Recon은 긴 비디오 스트림에서 밀집 3‑D 지도를 구축하면서 항상 최근 12프레임만 참조하여 무거운 장거리 메모리를 피합니다.


프로젝트 기능

  • 작업 – RGB 이미지 시퀀스(예: 대시캠 비디오)를 입력으로 받아 다음을 출력합니다:
    1. 각 프레임의 카메라 포즈(궤적).
    2. 각 프레임의 로컬 포인트 클라우드(해당 프레임의 좌표계로 표현).
    3. 선택적 전역 포인트 클라우드(추정된 포즈로 로컬 클라우드를 결합하여 얻음).
  • 핵심 아이디어 – 각 시간 단계에서 모델은:
    1. 이전 11 프레임의 키-값 특징을 캐시합니다.
    2. 현재 프레임의 포인트 맵을 예측합니다.
    3. 현재 프레임과 이전 프레임 사이의 상대 포즈를 예측합니다.
    4. 상대 포즈를 합성하여 전역 궤적을 지속적으로 업데이트합니다.
  • 모델은 성장하는 상태를 저장하지 않으므로 비디오 길이와 관계없이 추론 비용이 일정합니다. 가벼운 모션-비주얼 회전 리파이너와 포즈 인식 손실은 수천 프레임 동안 드리프트를 낮게 유지합니다.
  • 선택적 루프 클로저 – 비디오가 장소를 재방문하는 경우 별도 모듈(DINOv2‑SALAD 설명자 사용)이 루프 후보를 감지하고, 포즈 그래프 제약을 추가하며, 궤적을 정제할 수 있습니다.

빠른 시작

# 1️⃣ 깨끗한 conda 환경 생성 (Python ≥3.10)
conda create -n abot-recon python=3.11 -y
conda activate abot-recon

# 2️⃣ PyTorch 2.5.1 + CUDA 12.1 및 패키지 자체 설치
pip install torch==2.5.1 torchvision==0.20.1 \
    --index-url https://download.pytorch.org/whl/cu121
pip install -e .

# 3️⃣ (선택) FlashInfer 및 cuRoPE로 속도 향상
pip install flashinfer-python
cd abot_recon/modeling/pi3/models/curope && pip install ninja && python setup.py build_ext --inplace

데모 실행 (루프 클로저 없음)

python demo.py \
  --image-dir examples/images \
  --output-dir outputs/demo \
  --attention-backend auto \
  --no-loop-closure

이 명령은 정렬된 이미지를 읽고 모델을 통해 스트리밍하며 다음을 작성합니다:

  • camera_poses.npy (궤적)
  • local_points.pt (프레임별 포인트 클라우드)
  • confidence.pt (포인트별 신뢰도 점수)
  • 선택적 전역 포인트 클라우드(world_points.pt) --save-world-points 사용 시.

Python API 사용

from pathlib import Path
from abot_recon import ABotRecon

imgs = sorted(Path('examples/images').glob('*.jpg'))
model = ABotRecon.from_pretrained('acvlab/ABot-Recon', device='cuda')
result = model.infer(imgs)
print(result.camera_poses.shape)   # (N, 4, 4)

모델은 자동으로 Hugging Face에서 체크포인트를 다운로드합니다. 오프라인 사용 시 파일을 checkpoints/abot_recon.safetensors에 배치하세요.


주요 기능 및 중요성

기능 제공 내용
고정 12프레임 KV 캐시 시간 단위 스트림에서도 메모리와 계산이 일정.
스트리밍 전용 추론 별도의 SLAM 백엔드 불필요. 단일 GPU에서 실시간 실행 가능 (H100에서 504×280 이미지의 경우 약 24 FPS).
선택적 루프 클로저 모듈 핵심 스트리밍 모델을 변경하지 않고 재방문 장면의 정확도 향상.
FlashInfer 및 cuRoPE 가속 어텐션 커널과 회전 위치 인코딩에서 최대 약 2배 속도 향상.
Hugging Face / ModelScope의 사전 훈련 체크포인트 원클릭 다운로드, 제공 API 및 데모와 호환.
시각화 스크립트 PLY 포인트 클라우드와 조감도 궤적 이미지 내보내기.
훈련 레시피 (브랜치 train) 18개 데이터셋에서 미세 조정을 위한 즉시 사용 가능한 설정 (작성 시점 기준 미공개).

보고된 성능 (논문에서)

벤치마크 메트릭 결과 설정
Oxford Spires (카메라 포즈) ATE 4.35 m 스트리밍 전용, 루프 클로저 없음
Oxford Spires (밀집 재구성) CD 1.37 m F1 = 91.81 % (τ = 4 m)
KITTI‑02 (처리량) FPS 24.45 504×280, NVIDIA H100, 저장소 제외

저자들은 또한 KITTI, VBR, 7Scenes, TUM‑Dynamic에서 평가하여 경쟁력 있는 정확도를 유지하면서 프레임당 작은 메모리 사용량(약 6.7 GiB GPU 메모리)을 보여줍니다.


누가 사용할 수 있나요?

  • 로보틱스 / 자율주행 팀: 단일 GPU 또는 엣지 가속기(예: AX650N NPU 포트)에서 실행할 수 있는 경량 스트리밍 3‑D 매퍼가 필요.
  • AR/VR 개발자: 전체 비디오 기록을 저장하지 않고 실시간으로 장면을 재구성하려는 경우.
  • 연구자: 장기 지평 인식을 탐구. 저장소는 추론 코드와 (train 브랜치에서) 미세 조정 파이프라인을 제공.

추가 정보


라이선스

  • 코드: Apache‑2.0
  • 모델 가중치: 별도의 MODEL_LICENSE.md (저장소 참조).

결론

ABot‑Recon은 장기 지평 스트리밍 3‑D 재구성을 위한 진정한 연구용 시스템으로, 성장하는 내부 메모리를 의도적으로 피합니다. 실시간 성능을 제공하고 깔끔한 Python API를 갖추며, 정확도 향상을 위한 선택적 루프 클로저를 포함합니다. 저장소는 적극적으로 유지 관리되며(2026년 10월까지 뉴스 업데이트) 추론 및 훈련 리소스를 모두 제공하므로 긴 비디오 스트림에서 지속적으로 실행해야 하는 인식 파이프라인을 구축하는 모든 사람에게 견고한 출발점이 됩니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch