SW/인공지능

VGGT란 무엇인가? Meta가 제안한 차세대 3D Reconstruction 모델 쉽게 설명

얇은생각 2026. 2. 8. 07:30
반응형

처음으로 3D reconstruction을 비전 전공이 아닌 친구에게 설명하려다 실패했던 기억이 아직도 선명하다. 카페에서 컵이랑 휴대폰을 쌓아 올리며 ‘이게 카메라고, 이게 scene고…’ 하다 보니, 어느 순간 상대 눈이 멀어져 있었다. 아, 이 방식은 아니구나 싶었다.

그래서 이 글은 다른 접근을 택했다.

이 글은 **VGGT(Visual Geometry Grounding Transformer)**를 ‘논문 요약’이 아니라, 사람이 사람에게 설명하듯 풀어낸다. 수식은 없다. 괜히 어려운 말도 피한다. 대신 이 모델이 뭐고, 왜 중요한지, 그리고 왜 많은 연구자들이 이 논문을 읽고 잠시 말을 잃었는지에 집중한다.

한 줄로 요약하면 이렇다.

 

VGGT는 여러 장의 평범한 이미지를 받아, 복잡한 최적화 과정 없이 한 번에 3D를 이해한다. 빠르고, 단순하게.

 

이 문장 하나만으로도 꽤 충격적이다. 하지만 진짜 흥미로운 건 그 안쪽이다.

 

예전의 3D Vision은 왜 늘 복잡했을까

 


예전의 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을 번갈아 쓴다.

  1. Frame-wise self-attention
    각 frame 내부에서만 token들이 서로 본다.
  2. 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는 숨을 한 번 고르게 해준다.

그리고 그 한 번의 숨이, 꽤 큰 변화를 예고한다.

반응형