coredot.today
기술 탐색으로 돌아가기
과학 AI실험

LingBot-Map

카메라 영상 한 편을 1만 프레임 넘게 20 FPS로 3차원 복원한다 — 무엇을 기억하고 무엇을 버릴지를 어텐션 마스크로 배운 스트리밍 모델

직접 해보기 5
종류
모델
라이선스
Apache-2.0
언어
Python
사실 확인
2026.10.24

TRY IT

직접 해보기

OVERVIEW

개요

무엇인가

LingBot-Map은 앤트그룹의 임바디드 AI 자회사 Robbyant가 2026년 4월 코드와 가중치를 함께 공개한 스트리밍 3D 재구성 모델입니다. 카메라 영상이 한 프레임씩 들어올 때마다 미래 프레임을 보지 않고 카메라 포즈와 깊이 맵을 내놓고, 그것을 쌓아 하나의 좌표계 위 점군으로 만듭니다. 카메라 캘리브레이션 정보도 필요 없습니다(초점거리까지 예측).

이 문제의 함정은 셋입니다. 사진 한 장으로는 크기(스케일)를 알 수 없고, 프레임마다 생기는 작은 오차가 누적돼 표류(drift)하고, 과거를 다 들고 가면 계산이 터집니다(프레임 하나가 이미지 토큰 999개). 기존 스트리밍 모델은 다 버려서 표류하거나(CUT3R·TTT3R) 다 들고 가서 메모리가 폭발했습니다(StreamVGGT·Stream3R). 논문 제목은 「Geometric Context Transformer for Streaming 3D Reconstruction」이고, 저장소 설명에 따르면 ECCV 2026에 실렸습니다.

어떻게 동작하나

뼈대는 VGGT(CVPR 2025 최우수 논문)를 거의 그대로 물려받았고, 바꾼 것은 프레임 사이를 잇는 층의 어텐션 마스크 하나입니다. 이 어텐션(GCA, 기하 컨텍스트 어텐션)이 고전 SLAM의 삼분할을 그대로 옮깁니다.

GCA의 컨텍스트SLAM 대응푸는 문제보관하는 것
앵커 컨텍스트기준 프레임좌표계·스케일 고정맨 앞 n개 프레임의 이미지 토큰 전부, 영구
포즈 참조 윈도우지역 창새 프레임의 정확한 정합최근 k개(기본 64) 프레임의 이미지 토큰 전부
궤적 메모리전역 지도장기 표류 보정그 사이 프레임은 컨텍스트 토큰 6개만

6개는 카메라 토큰 1, 레지스터 토큰 4, 앵커 토큰 1로, VGGT에도 원래 있던 자리를 '기억 슬롯'으로 다시 쓴 것입니다. 여기에 비디오 RoPE로 시간 좌표를 심으면 어블레이션에서 ATE가 7.46에서 5.98로 떨어졌습니다(단일 요소 중 가장 큰 개선). 프레임이 하나 늘 때 참조 토큰은 인과 어텐션이 1,005개, GCA는 6개만 늘어 프레임당 비용이 거의 상수가 됩니다. 추론 쪽은 FlashInfer 페이지 KV 캐시로 구현해 같은 조건의 연속 캐시(10.5 FPS)보다 두 배 빠른 약 20 FPS를 냅니다.

결과는 길이에서 드러납니다. Oxford Spires에서 320프레임 ATE는 6.42 m(CUT3R 18.16 m), 12배 긴 3,840프레임에서도 7.11 m로 0.69 m만 늘었습니다. 미래를 볼 수 있는 오프라인 모델 DA3, 번들 조정을 돌리는 ViPE보다도 AUC@15가 높았습니다.

빠른 시작

README의 설치 순서입니다. PyTorch 2.8.0 + CUDA 12.8 조합은 배치 렌더러에 필요한 Kaolin 프리빌드 휠 때문입니다.

bash
conda create -n lingbot-map python=3.10 -y
conda activate lingbot-map
pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128
pip install -e .                                   # 저장소를 클론한 폴더에서
pip install --index-url https://pypi.org/simple flashinfer-python   # 페이지 KV 캐시(권장)
pip install -e ".[vis]"                            # viser 뷰어(선택)

python demo.py --model_path /path/to/lingbot-map.pt \
    --image_folder example/courthouse --mask_sky

브라우저에서 http://localhost:8080을 열면 3D 뷰어가 뜹니다. 체크포인트는 허깅페이스 robbyant/lingbot-map과 ModelScope에 있고, 논문·벤치마크에 쓴 균형 체크포인트 lingbot-map에서 시작하면 됩니다. FlashInfer가 없으면 --use_sdpa로 PyTorch 기본 어텐션을 씁니다.

언제 쓰고, 언제 피하나

용도지금 되는 것조심할 것
실내 로봇 항법카메라 한 대로 집·창고 평면도와 궤적. 25,000프레임·13분 워크스루 데모사람·반려동물이 많이 움직이는 장면, 재방문 시 스냅 없음
공간 스캔·디지털 트윈휴대폰 영상 → 점군, 캘리브레이션 불필요측량급 절대 정밀도는 여전히 COLMAP + 라이다
AR·공간 앵커20 FPS 실시간, 앵커 기준 좌표계가 안정적GPU 필요, 모바일 온디바이스는 아직
생성 영상 평가월드 모델이 만든 영상의 기하 일관성을 재구성으로 채점정량 지표 체계는 정립 전

한계와 주의

  • 3,000프레임 안팎이 기본 모드의 한계다. 학습은 320뷰까지였고, 기본(direct) 모드는 학습 길이의 약 10배까지 안정적이다. 포즈가 붕괴하면 먼저 --keyframe_interval을 조정하고, 그래도 안 되면 --mode windowed로 바꾼다. 창 경계마다 Sim(3) 정렬 오차가 쌓인다.
  • window_size는 프레임 수가 아니라 KV 캐시 슬롯 수다. 앞 8슬롯은 앵커이고, 키프레임 간격이 13이면 128슬롯 창 하나가 1,568 실제 프레임을 덮는다(README 경고).
  • 명시적 루프 클로저가 없다. 같은 곳을 다시 와도 궤적을 스냅시키지 않는다. 프레임당 6개 토큰의 압축은 수만 프레임 규모에서 세밀한 기하를 잃는다.
  • 모든 지표에서 이기지는 않는다. 국소 이동 오차(RPE-trans)는 ViPE 0.43이 LingBot-Map 1.01보다 좋고, 전체 인과 어텐션이 회전 오차(RPE-rot)는 조금 낫다.
  • 논문 본문과 표가 다른 수치가 있다. ETH3D F1은 본문 98.98, 표 86.79다(코어닷투데이는 표 기준으로 읽었다).
  • 메모리가 부족하면 --num_scale_frames 2, 느리면 --camera_num_iterations 1(정확도를 조금 내주고 속도를 얻는다).
  • 학습 데이터의 30% 이상이 게임 엔진 합성 데이터다. 2026-04-24 이전 코드에는 키프레임 간격 > 1에서 비키프레임이 캐시에 남던 버그가 있었으니 최신 main을 쓴다.

DEEP DIVE

더 깊이 읽기