Index
2026-05-07 — Engineering

Viser 시각화 exo/wrist 개별 토글 UI 추가

EgoX v2 (exp3) | scripts/viz_robocasa_infer_viser.py

TL;DR

4
체크박스 (이전: 2)
4
수정 위치
Pass
Headless Boot

1 배경 / 목적

scripts/viz_robocasa_infer_viser.py의 viser GUI는 기존에 두 view를 한 묶음으로만 토글했다:

기존: show pred → pc_pred1 (exo) + pc_pred2 (wrist) 동시 on/off show gt → pc_gt1 + pc_gt2 동시 on/off
기존 한계: wrist만 띄우고 싶을 때 exo pointcloud를 scene tree에서 일일이 숨겨야 했음. view2 PT outlier 디버깅(pred cluster가 GT 기준 수백 m 오프셋) 시 wrist-only isolation이 반복적으로 필요해 UI 개선 요청.

2 작업 내용

단일 파일 scripts/viz_robocasa_infer_viser.py 4 군데 수정:

① GUI 체크박스 분할 (line 460-465)

show_pred_exo_cb = server.gui.add_checkbox("pred exo", initial_value=True) show_pred_wrist_cb = server.gui.add_checkbox("pred wrist", initial_value=True) show_gt_exo_cb = show_gt_wrist_cb = None if args.show_gt: show_gt_exo_cb = server.gui.add_checkbox("gt exo", initial_value=True) show_gt_wrist_cb = server.gui.add_checkbox("gt wrist", initial_value=True)

② render() 내부 GT 가시성 분기 (line 474-482)

기존 단일 show_gt_cb.value → per-view (show_gt_exo_cb.value / show_gt_wrist_cb.value) 로 분리.

③ on_update 핸들러 분리 (line 509-519)

2개 핸들러 → 4개 핸들러. 각각 pc_pred1 / pc_pred2 / pc_gt1 / pc_gt2 하나씩만 토글.

④ 콘솔 안내 갱신 (line 526-527)

before: 'show pred' / 'show gt' to compare. after: 'pred exo/wrist' / 'gt exo/wrist' to isolate views.
미적용 항목 (의도): camera frustum (frust1/frust2)은 항상 표시 유지. --show-gt CLI 플래그 및 focus on data 버튼 그대로. 사용자 요청은 pointcloud 분리에 한정.

3 결과

V1. AST syntax check

python -c "import ast; ast.parse(open('scripts/viz_robocasa_infer_viser.py').read())" → syntax OK

V2. Headless boot smoke test (--no-tunnel --infer-dir results/checkpoint-25500 --port 9099)

[viz] 8 samples in results/checkpoint-25500 [viz] loaded CloseDoubleDoor_demo_136 [viz] viser running on http://localhost:9099 — Ctrl-C to exit. [viz] use 'sample' dropdown to switch demos, 'frame' to scrub, 'pred exo/wrist' / 'gt exo/wrist' to isolate views.
결과: 8 samples 인덱싱, 첫 sample 로드, viser 부팅, 새 GUI 안내 라벨 반영. Traceback / Error 없음.

V3. 브라우저 인터랙션

headless smoke test로는 viser 클라이언트 체크박스 인터랙션 검증 불가. 4 체크박스가 각각 1개의 pointcloud handle만 건드리는 구조라 회귀 가능성 낮음 — 사용자 측 직접 확인 필요.

4 Takeaway

view-specific 디버깅 워크플로우 단순화

exo / wrist 개별 토글로 scene tree 수동 조작 없이 view-specific PT outlier 분석 가능. pred exo + gt wrist 같은 mixed combo도 지원해 cross-view sanity check 활용 여지도 생김.

4 체크박스가 각각 1개의 pointcloud handle만 건드리는 단순 구조라, 기존 토글 회귀 위험이 낮다. 수정 범위를 viz_robocasa_infer_viser.py 단일 파일에 한정해 다른 inference 경로에 영향 없음.

5 Next Steps

미해결 한계

체크박스 4개가 GUI에 평탄 나열 — 필요 시 server.gui.add_folder("visibility")로 묶기 가능. 우선순위 낮음.

camera frustum (frust1/frust2) 토글은 현재 미지원 — 필요 시 show cam exo/wrist 체크박스 추가.

다음 작업

view2 PT outlier 수정(depth invalid pixel masking, norm.json 재추출) 작업 시 이 UI로 wrist pointcloud 단독 표시하며 before/after 시각 비교. results/checkpoint-25500 인퍼런스 결과에서 wrist outlier 좌표 범위 확인.