TL;DR
- 체크박스 2개 → 4개:
show pred / show gt → pred exo / pred wrist / gt exo / gt wrist 개별 토글
- wrist-only 디버깅: view2 PT outlier 분석 시 scene tree 수동 조작 없이 wrist pointcloud만 표시 가능
- headless smoke test 통과: 8 samples 인덱싱, 첫 sample 로드, viser 부팅, 새 GUI 안내 반영 — Traceback 없음
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 좌표 범위 확인.