260406-260412 · why all prior LGM results are invalid
04-08~09 LGM 학습 결과 시각화에서 "wrist view depth가 exo view와 거의 동일"한 패턴이 반복적으로 관찰됐다. 처음엔 학습 부족으로 추정했으나, connector 입력을 거꾸로 추적해 들어가다 두 가지 근본적 design bug를 발견했다. 이 분석은 그 두 bug의 정확한 원인과 영향 범위를 정리한 것이다.
[exo_t0, exo_t1, wrist_t0, wrist_t1] ← 서로 다른 카메라!
↓
VAE encode → [1, 16, T_lat, H, W] ← 하나의 latent
↓
Connector → Any4D → geometry
[t0, t1, t2, t3, ...] ← 같은 카메라, 다른 시간!
↓
VAE encode → [1, 16, T_lat, H, W]
↓
Connector → Any4D
한 카메라의 여러 프레임 = 카메라 이동에 의한 parallax → multi-view geometry. Any4D의 "multi-view"는 실제로 "multi-frame from same camera" (temporal parallax)이다.
| T (input) | T_lat = (T-1)//4 + 1 | 비고 |
|---|---|---|
| 4 | 1 | 지금 사용 중! temporal 정보 완전 손실 |
| 8 | 2 | — |
| 13 | 4 | 최소 권장 |
| 33 | 9 | VGGRPO 논문 기본 |
| 49 | 13 | 본 재설계 채택 |
| 81 | 21 | EgoX_wan2.2 기본 |
왜 잘못인가: T_lat=1이면 connector가 4개 view를 만들려 해도 모든 view가 동일한 feature에서 나온다. 시간적 다양성이 없으므로 depth/pose 차이를 학습할 수 없다. wrist view가 exo view와 비슷하게 나오는 이유가 정확히 이것.
connector는 "4개 view"라는 일종의 multi-view 신호를 출력하려 했지만, 실제로는 (1) 의미 없는 mixed-camera latent에서 (2) T_lat=1로 시간 다양성 0인 feature를 받고 있었다. 즉 connector의 4개 출력은 사실상 같은 source feature의 사소한 변형들이며, depth/pose의 차이는 모두 connector weight의 임의 noise에서 나온 것. 학습 loss가 떨어진 것(Phase A mse=0.003)은 모델이 "임의 noise를 일관된 출력으로 평균화하는 법"을 배운 결과이지, 진짜 depth를 배운 게 아니다.
| 항목 | 영향 |
|---|---|
| 지금까지 모든 LGM 학습 | ❌ 잘못됨 (mixed view + T_lat=1) |
| Phase A 결과 (mse=0.003) | ❌ 무의미 — connector가 noise를 평균 |
| Phase B 결과 | ❌ 무의미 |
| 시각화 결과 | ❌ wrist view가 exo처럼 보이는 이유 설명됨 |
| Connector 구조 | ⚠️ 수정 필요 (temporal 처리) |
| 데이터 로더 | ❌ 수정 필요 (single-camera sequence) |
의미: "한 사이클 손실"의 경험적 가치 — "loss가 떨어졌다"만으로는 모델이 진짜 task를 배우는지 알 수 없음을 정량적으로 확인. validation loss가 아니라 predicted depth visualization과 ground-truth pose의 정합성을 매 step마다 자동 측정하는 health metric이 필요.
z_exo.grad, z_wrist.grad가 모두 존재하는지.