처음으로 3D reconstruction을 비전 전공이 아닌 친구에게 설명하려다 실패했던 기억이 아직도 선명하다. 카페에서 컵이랑 휴대폰을 쌓아 올리며 ‘이게 카메라고, 이게 scene고…’ 하다 보니, 어느 순간 상대 눈이 멀어져 있었다. 아, 이 방식은 아니구나 싶었다.
그래서 이 글은 다른 접근을 택했다.
이 글은 **VGGT(Visual Geometry Grounding Transformer)**를 ‘논문 요약’이 아니라, 사람이 사람에게 설명하듯 풀어낸다. 수식은 없다. 괜히 어려운 말도 피한다. 대신 이 모델이 뭐고, 왜 중요한지, 그리고 왜 많은 연구자들이 이 논문을 읽고 잠시 말을 잃었는지에 집중한다.
한 줄로 요약하면 이렇다.
VGGT는 여러 장의 평범한 이미지를 받아, 복잡한 최적화 과정 없이 한 번에 3D를 이해한다. 빠르고, 단순하게.
이 문장 하나만으로도 꽤 충격적이다. 하지만 진짜 흥미로운 건 그 안쪽이다.

예전의 3D Vision은 왜 늘 복잡했을까
3D vision은 오랫동안 ‘정교하지만 고통스러운’ 분야였다.
Structure from Motion(SfM), Bundle Adjustment(BA), Multi-View Stereo(MVS) 같은 전통적인 파이프라인을 떠올려보자.
- feature를 찾고
- 이미지 간 매칭을 하고
- triangulation으로 3D point를 만들고
- 그걸 다시 optimize, 또 optimize
정확하긴 하다. 정말 정확하다. 하지만 대가는 크다.
- 느리다 (분 단위, 길면 시간 단위)
- 파이프라인이 깨지기 쉽다
- scale이 커질수록 관리가 지옥이다
Deep Learning이 들어온 뒤에도 크게 달라지지 않았다. Differentiable BA 같은 시도는 있었지만, 여전히 post-processing과 iteration에서 자유롭지 못했다.
Feed-forward model들도 나왔지만, 대부분 image pair만 다루거나 depth, pose, tracking 중 하나에만 집중했다.
VGGT는 이 상황을 보고 이렇게 묻는다.
“굳이 나눌 필요가 있을까?”
이 질문 하나가 판을 흔든다.
VGGT를 최대한 짧게 설명하면
VGGT는 Transformer 기반 feed-forward neural network다.
입력은 하나의 scene를 서로 다른 시점에서 찍은 수십~수백 장의 이미지.
출력은 다음을 한 번에 뱉어낸다.
- camera parameters (pose, orientation, field of view)
- dense depth map
- per-pixel 3D point map
- point tracking을 위한 feature map
iteration 없다. refinement 없다. 후처리 없이 끝.
GPU 한 번 태우고, 몇 초.
처음 읽을 때 나도 모르게 의자에 몸을 기댔다. ‘이게 진짜면 꽤 큰 변화인데?’라는 생각이 들었다.
왜 ‘다 같이 예측’이 더 잘 되는가
보통은 이렇게 생각한다.
- camera estimation은 geometry 문제
- depth는 pixel-wise regression
- tracking은 temporal correspondence
서로 다른 문제 같아 보인다.
하지만 VGGT는 이걸 분리하지 않는다. 오히려 모든 3D 속성을 동시에 학습시킨다.
결과는 꽤 명확하다.
- depth를 빼면 성능 하락
- point map을 빼도 하락
- camera parameter를 빼면… 성능이 크게 무너진다
camera가 기준점 역할을 한다. 공간에서 ‘내가 어디 있는지’를 알게 되면, 나머지 정보가 자연스럽게 정렬된다.
방향 모르는 상태에서 지도 그리는 것보다, 북쪽을 알고 그리는 게 훨씬 쉬운 것처럼.
핵심 구조: Alternating Attention(AIA)
VGGT의 진짜 핵심은 backbone이다. 이름은 Alternating Attention(AIA).
Cross-attention을 쓰지 않는다. 대신 두 가지 self-attention을 번갈아 쓴다.
- Frame-wise self-attention
각 frame 내부에서만 token들이 서로 본다. - Global self-attention
모든 frame의 token을 한꺼번에 섞어 본다.
이걸 계속 반복한다.
이 구조의 장점은 명확하다.
- 각 이미지의 local detail을 잃지 않으면서
- 여러 view를 아우르는 global geometry를 형성한다
마치 사진 한 장씩 집중해서 보고, 다시 바닥에 전부 펼쳐놓고 전체를 보는 과정을 반복하는 느낌이다.
Ablation 결과도 깔끔하다.
- global attention only → 성능 낮음
- cross-attention → 느리고 정확도도 떨어짐
- AIA → 가장 좋음
괜히 복잡하게 갈 필요가 없다는 걸 보여준다.
VGGT가 실제로 내놓는 것들
1. Camera Parameters
각 이미지마다:
- rotation (quaternion)
- translation vector
- field of view
모두 첫 번째 camera를 기준으로 한 공통 좌표계에 정렬된다. 첫 프레임이 world origin이다.
이 설계 덕분에 scale ambiguity가 줄고, 모델이 geometry를 더 안정적으로 학습한다.
2. Depth Map + Uncertainty
pixel마다 depth를 예측한다.
여기에 aleatoric uncertainty도 함께 낸다. 학습 시 신뢰도 낮은 영역의 loss 영향을 줄여준다.
꽤 인간적인 판단이다.
3. Point Map
각 pixel을 3D coordinate로 매핑한다.
재미있는 점은, depth + camera로 역투영한 point map이 직접 예측한 것보다 정확했다는 사실이다.
그래서 VGGT는 둘 다 배우되, geometry를 신뢰한다.
4. Tracking Feature Map
VGGT는 2D track을 바로 출력하지 않는다.
대신 tracking feature를 내놓고, CoTracker v2 같은 기존 tracker에 연결한다.
이 방식 덕분에:
- frame 순서가 없어도 되고
- video가 아닌 image set에도 적용 가능하다
tracking 전용 모델이 아님에도 성능이 상당히 좋다.
학습 방식: Geometry를 길들이는 법
VGGT는 end-to-end multi-task loss로 학습된다.
- camera loss
- depth loss
- point map loss
- tracking loss (가중치는 작게)
흥미로운 점은 loss weight를 따로 조정하지 않았다는 것이다. 자연스럽게 scale이 맞는다.
또 하나 중요한 디테일.
정규화는 GT에만 적용된다. prediction에는 적용하지 않는다.
prediction을 정규화하면 오히려 불안정해졌기 때문이다. 모델이 스스로 scale을 배우게 두는 쪽이 더 낫다는 결론이다.
이 선택이 이 모델의 성격을 잘 보여준다.
성능: 빠르고, 정확하고, 좀 얄밉다
Benchmark 결과를 보면 인상적이다.
- camera pose estimation: post-processing 없이도 기존 feed-forward 모델보다 우수
- BA를 붙이면: 거의 모든 항목에서 SOTA
- multi-view depth: camera 정보 없는 모델(Dust3R 등) 대비 큰 차이
- image matching: task-specific 모델이 아님에도 최고 성능
그리고 속도.
정말로 몇 초다.
GPU 팬 소리가 거의 안 난다.
Downstream Task에서도 강하다
VGGT는 3D reconstruction에만 머물지 않는다.
- novel view synthesis: 적은 데이터로도 특화 모델과 비슷한 성능
- dynamic point tracking: 일반화 성능 우수
- single-image 3D inference: 기대 이상
느낌상, 단일 목적 모델이라기보다는 3D를 위한 foundation model에 가깝다.
CLIP이 vision-language의 기준점을 만들었다면, VGGT는 geometry 쪽에서 그 역할을 노린다.
한계도 분명하다
아직 해결 못 한 것도 있다.
- fisheye, panorama 이미지
- 극단적인 viewpoint 변화
- non-rigid motion (사람, 옷, 변형 물체)
하지만:
- fine-tuning 여지 있고
- LoRA로 경량화 가능
- memory 부족하면 frame-independent inference 가능
막힌 길보다는 열려 있는 문에 가깝다.
그래서, VGGT가 왜 중요한가
VGGT는 단순히 성능 좋은 모델이 아니다.
사고방식의 변화다.
복잡한 geometry 문제를 굳이 끝없는 optimization으로 다듬지 않아도, 모델이 전체를 함께 이해하도록 만들 수 있다는 걸 보여준다.
어떤 발전은 더 많은 단계를 추가해서 오지 않는다.
때로는, 과감하게 없애는 데서 온다.
FAQ (2025 기준)
Q1. VGGT 한 줄 요약하면?
여러 이미지를 넣으면, 한 번에 3D를 이해하는 모델.
Q2. BA를 완전히 대체하나?
가능은 하지만, 같이 쓰면 더 좋다.
Q3. 이미지 몇 장 필요해?
적어도 동작하지만, 많을수록 진가를 발휘한다.
Q4. video 전용이야?
아니다. image set도 문제없다.
Q5. camera 예측이 왜 중요해?
모든 3D 정보를 같은 공간에 묶어주는 기준점이기 때문이다.
Q6. real-time 가능해?
거의 그렇다. 실시간에 가까운 응용이 가능하다.
Q7. 동적인 장면도 되나?
rigid motion에 더 강하다.
Q8. token backbone은?
DINOv2를 사용한다.
Q9. foundation model로 볼 수 있나?
충분히 그런 성격을 가진다.
Q10. 가장 큰 메시지는?
End-to-end geometry가 현실이 됐다.
3D vision이 늘 강력하지만 피곤한 분야라고 느꼈다면, VGGT는 숨을 한 번 고르게 해준다.
그리고 그 한 번의 숨이, 꽤 큰 변화를 예고한다.
'SW > 인공지능' 카테고리의 다른 글
| MeDo vs Lovable 비교 후기: AI App Builder로 실제 서비스까지 만들어본 솔직한 결과 (0) | 2026.02.10 |
|---|---|
| ChatGPT 헬스 사용해도 될까? 기능, 정확도, 개인정보 이슈 총정리 (0) | 2026.02.09 |
| LAPA란 무엇인가? 액션 라벨 없이 로봇을 학습하는 새로운 VLA 프리트레이닝 방법 (0) | 2026.02.04 |
| NVIDIA GR00T란 무엇인가? 휴머노이드 로봇을 위한 파운데이션 모델 완전 정리 (2025) (0) | 2026.02.02 |
| Cursor 2.0 완벽 가이드: AI agent 기반 code editor를 처음 쓰는 개발자를 위한 설명 (0) | 2026.01.30 |