← 목록
2026-06-23 · X-WAM

생성 결과 3D Consistency 시각화 — RGB+Depth → World Point Cloud → viser

RoboCasa 한 장면 조건 → 3뷰 RGB+depth joint 생성 → 카메라 파라미터로 world fuse → 인터랙티브 3D 뷰어

TL;DR

12.2cm
생성 교차뷰 NN
3.6cm
GT 교차뷰 NN
3 / 9
views / frames
ρ=−0.90
gen·GT depth corr

1배경 / 목적

X-WAM은 멀티뷰 RGB + state로부터 미래 4D 관측(video+depth)을 joint 생성하는 모델이다. 지금까지 RoboCasa policy SR(75%대)만 검증했고, "생성된 RGB와 depth가 실제로 기하적으로 3D-consistent한가"는 보지 않았다.

이를 눈으로 확인하려면: 한 장면을 조건으로 RGB+depth를 생성 → 카메라 K/extrinsic으로 3D space에 unproject → 3뷰를 world 좌표계로 fuse → 인터랙티브 뷰어로 확인. policy eval 경로(policy_server.py)는 run_depth=False라 depth를 쓰지 않아, 별도 생성+lift 파이프라인이 필요했다.

2작업 내용

데이터 소스. config 기본 경로·Delta_action 버전은 depth가 없거나 OOD. 최종으로 robomimic HDF5 v0.1_216x384_depth_sealed/.../CloseDoubleDoor 사용 — 뷰가 X-WAM 학습 뷰(robot0_agentview_left/right, eye_in_hand)와 정확히 일치, metric depth(z-buffer) + cam_cache에 intrinsic K·frame별 extrinsic T(cam→world)·near/far 포함.

생성 (tmp/gen_xwam_rgbd.py, xwam env, 로그인 1-GPU): 첫 프레임 RGB 3뷰 + proprio + prompt 조건, run_depth=True / early_stop=False(video 50 step, action 10 step, cfg 2.0). VAE decode 후 뷰별 RGB/depth 분리 저장.

3D lift + viser (tmp/viz_viser.py, robocasa env): 256×320 생성 뷰용 K를 resize+centercrop affine 체인으로 보정, z-buffer→metric(near/(1−d·(1−near/far))), 생성 depth는 프레임0(조건=GT 재현)에서 per-view 선형 fit으로 scale-align, K+T로 world unproject 후 3뷰 fuse. source/뷰/frame 토글 + play.

gen_rgb (3, 9, 256, 320, 3) gen_depth (3, 9, 256, 320) per-view gen→metric fit (frame0 LSQ): agentview_left a=-2.81 b=1.46 m agentview_right a=-1.85 b=1.62 m eye_in_hand a=-0.89 b=0.70 m (a<0: 생성 高값=近)
정확한 mp4 depth 정규화 스킴이 미공개라 생성 depth→metric은 GT로 per-view scale-align(표준 relative-depth lift). fit된 metric 거리 b가 카메라 물리 거리(agentview~1.5m, wrist~0.7m)와 합치 → fit이 타당함을 시사.

3결과

fused 3D point cloud GT vs gen
world 좌표계 fused 포인트클라우드. 좌=GT(metric depth), 우=X-WAM 생성, 각 2개 시점. 둘 다 바닥면+로봇팔+캐비닛/카운터의 일관된 부엌 장면을 형성하고 3뷰가 같은 world frame에 정렬됨.
3D consistency 확인: 독립 생성된 3뷰 depth가 각 카메라 extrinsic으로 모였을 때 일관된 단일 장면으로 합쳐짐 — RGB와 depth가 기하적으로 정합.
정직한 정량화: 교차뷰 median NN은 생성 12.2cm vs GT 3.6cm (장면 ~4m의 3%). 즉 "consistent하나 GT만큼 정밀하진 않음". 비조건 frame8도 13.8cm로 유지돼 생성 미래에서도 일관성이 무너지지 않음.
로직 독립 검증: (1) GT depth를 생성 파이프라인(256×320+adjust_K+crop)에 통과 → 3.63cm(원본 K 3.75cm와 동일) = intrinsic 보정 정확. (2) eef_pos→GT fused cloud 최소거리 2.1cm = 카메라 K·extrinsic·OpenCV 컨벤션·depth linearize 정확. 따라서 12cm는 파이프라인 버그가 아니라 모델 고유 특성. depth 정합 fit은 per-view(GT 누설 위험)가 아닌 global 단일 scale 사용.
2D RGB+depth comparison frame 8
2D 비교 (frame 8). 행 = 3뷰(agentview_left/right, wrist), 열 = [gen_rgb | gen_depth | gt_rgb | gt_depth]. 생성 RGB가 GT와 일치하고 depth가 장면 기하(near=warm/far=cool)와 상관.
산출물내용
tmp/xwam_3d/sample.npz생성/GT RGB·depth, K, extrinsic T, near/far
tmp/xwam_3d/ply/{gen,gt}_frame00–08.ply프레임별 fused 포인트클라우드 (18개)
viser *:8067인터랙티브 3D 뷰어 (상시 구동)

4Takeaway & Next

X-WAM의 4D joint 생성이 2D PSNR 너머로 3D-consistent함을 검증했고, policy eval과 분리된 생성→3D 파이프라인을 확보했다.