robocasa T2V validation 및 inference의 비교 mp4 (*_gt_vs_pred.mp4)는 기존에 아래 레이아웃을 사용했다:
ego PT outlier 디버깅 시 육안 비교가 불편했음. view2 PT outlier (pred cluster가 GT 대비 수백 m 오프셋) 분석이 주요 계기.좌/우 = GT/Pred, 위아래 = 4 rows(v1_rgb / v1_pt / v2_rgb / v2_pt) 구조로 재배열하는 helper를 신규 작성하고, validation/inference 두 경로에 적용했다.
| 파일 | 변경 내용 |
|---|---|
core/finetune/utils/robocasa_grid.py | 신규 helper compose_gt_pred_panels(gt_grid, pred_grid, view1_w, view2_w, use_pointmap) 추가. view1_w ≠ view2_w면 raise. |
core/finetune/trainer.py (line 852~) | 기존 np.concatenate([gt_grid, pred_grid], axis=1) → compose_gt_pred_panels(...) 호출 |
infer.py (_main_wan_t2v_robocasa, line 193~) | 동일 변경. import 추가, docstring 갱신 |
use_pointmap=False이면 PT row 생략 → 2-row × 2-col. Frame count는 min(F_gt, F_pred)로 자동 align. validation과 inference가 단일 helper를 공유해 레이아웃 정의가 한 곳에만 존재한다.
sft_trainer.py:977) 및 core/inference/wan.py HCPT comparison은 미적용 — RGB-only 가로 concat 형식으로 요청 컨텍스트와 다른 레이아웃. 범위를 명시적으로 좁혀서 회귀 위험 최소화.compose_gt_pred_panels smoke test — 각 panel slot을 다른 uint8 값으로 마킹 후 픽셀 read-back으로 위치 검증:
| 케이스 | 입력 shape | 출력 shape | panel 위치 확인 |
|---|---|---|---|
| HCPT (use_pointmap=True), F=4, H=216, W=384 | gt/pred = (4,432,768,3) | (4,864,768,3) | 8/8 OK |
| RGB-only (use_pointmap=False), F=4 | gt/pred = (4,216,768,3) | (4,432,768,3) | 4/4 OK |
| view1_w=384, view2_w=288 (불일치) | — | raises ValueError | OK (의도적 raise) |
ego PT 채널의 좌표 misalignment 문제(view2 outlier — GT depth invalid pixel이 norm.json 통계를 오염시켜 pred cluster를 GT 기준 수백 m 밖에 위치시키는 버그) 분석 시, 동일 view·modality GT/Pred를 시간축으로 직접 비교할 수 있어 오프셋 크기와 분포를 육안으로 즉시 확인 가능해진다.
helper를 robocasa_grid.py에 분리해 validation과 inference가 단일 layout 정의를 공유 — 향후 레이아웃 수정 시 한 곳만 변경하면 됨.
view1_w ≠ view2_w 데이터셋 (egoexo4d, droid)에는 적용 불가 — row-wise width padding 추가 필요. 현재는 명시적 ValueError raise. 사용 시작 시 확장 예정.
변경 후 첫 validation run(또는 infer.py 실행)에서 실제 mp4 렌더링 확인. 이후 view2 PT outlier 수정(depth invalid pixel masking / norm.json 재추출) 작업과 맞물려 새 레이아웃으로 before→after 시각 비교 예정.