login-0:8788login-0:8789. 좌표계/scale은 모델간 비교 불가, 형태·표면 노이즈만 비교.pts3d_cam[...,2])를 RoboCasa viser에도 동일하게 사용, scale align 후 합리적 reconstruction 확인.
정량 eval(48 clips, 32 frames, 4-way)에서 VGGT-Ω AbsRel 0.296 > VGGT 0.386 ≫ Any4D 0.699 ≈ DA3 0.776 순위를 얻었다 (260625-backbone_rgb_eval_4way.html).
하지만 AbsRel 같은 pixel-level metric만으로는 "어느 모델의 geometry가 3D-consistent reward로 쓰기에 더 적합한가"를 직관적으로 판단하기 어렵다.
또한 실제 RL fine-tuning 도메인인 DROID(로봇 wrist-view 실제 데이터)에서 각 모델의 자체 예측 geometry가 어떤 품질인지도 확인이 필요하다. DROID는 GT depth/intrinsics가 없어 정량 비교는 불가능하지만, 정성 관찰로 reward path 신뢰도를 점검할 수 있다.
tmp/viser_compute.py + scripts/viser_compare.py
viser_compute.py: held-out clip 1개의 선택된 timestep에서 GT 카메라(K_native, cam→world pose)로 GT depth + 4모델 depth를 unproject하여 카메라별 pointcloud(xyz+rgb) npz 저장.
모델 depth는 eval_backbones_rgb.py와 동일한 per-clip median-ratio scale align으로 GT scale에 맞춤.
cam convention(raw vs. OpenGL→OpenCV flip)은 GT cam0↔cam1 NN residual(3.49 cm vs. 93 cm)로 자동 판정 → raw 선택.
viser_compare.py: npz를 viser 서버로 렌더링. 핵심 인터랙션:
tmp/viser_droid_compute.py
DROID는 GT depth 없음(~/Dataset/droid_full_processed: RGB exo+wrist, euler 6DOF pose, proprio만). 대신 각 모델의 자체 좌표계 world-frame points를 추출:
world_points 직접 사용pts3ddepth + intrinsics + extrinsics(w2c) → unprojectdepth + encoding_to_camera(pose_enc) → unproject
conf/거리 robust mask 적용. viser_compare.py의 cam-tint를 이름고정에서 인덱스 팔레트로 일반화(2-cam/3-cam 공용).
| 모델 | scale (median-ratio) | per-cloud 점 수 | 상태 |
|---|---|---|---|
| GT | — | ~249k | 기준 |
| Any4D | 0.56 | ~249k | ✅ (native 경로 수정 후) |
| DA3 | 1.18 | ~249k | ✅ |
| VGGT | 1.23 | ~249k | ✅ |
| VGGT-Ω | 1.22 | ~249k | ✅ |
| 모델 | world-frame source | per-view 점 수 (avg) | 비고 |
|---|---|---|---|
| Any4D | pts3d | ~90–150k | temporal native |
| DA3 | depth+extrinsics unproject | ~84k | |
| VGGT | world_points | ~90k | multiview static |
| VGGT-Ω | depth+pose_enc unproject | ~153k | 가장 밀도 높음 |
정량 eval(AbsRel, δ)만으로는 "이 모델을 reward로 쓸 때 geometry가 안정적인가"를 확신하기 어렵다. viser 툴은 두 가지 보완 근거를 제공한다:
두 viewer가 모두 EXIT 0 확인됐고, 다른 clip/ep으로 즉시 교체 가능한 --clip_rank N / --ep_rank N 인자를 갖추고 있어 반복 관찰 비용이 낮다.
CoffeePressButton/demo_2998 외 다른 task clip들도 viser_compute.py --clip_rank N으로 재생성 후 8788 재시작. camera tint 모드에서 VGGT-Ω/VGGT vs. Any4D/DA3의 정합 차이가 눈에 띄게 다른지 — 정량 순위(4배 AbsRel 차이)가 정성으로도 납득되는지 확인.
viser_droid_compute.py --ep_rank N으로 다양한 episode 시각화. 특히 wrist view(reward backbone이 실제로 보게 될 도메인) depth 품질이 VGGT-Ω>VGGT 순위와 일관되는지 확인. 불일치 시 RoboCasa→DROID domain gap이 reward 설계에 영향.
정성 관찰이 정량 순위를 지지하면 VGGT-Ω를 direct-RGB reward backbone 1순위로 확정. Phase 4 RL fine-tuning sub-plan(claude/260510/plan-vggrpo_phase2_rl.md) Task 1(FF submodule)부터 착수. VGGT-Ω weight는 이미 공유 NAS HF 캐시에 있어 worker 재다운로드 불필요.