Index
2026-09-18 — Analysis

Whole-scene evidence audit + observed-appearance mask 14장 — MASK_AUDIT_COMPLETE, 그러나 static 지원 픽셀 26.6%로 fit 불가

R2S | evidence audit (21 records) → job 135472 (14 masks) | fit_authorized = false

TL;DR

21
camera-row records
14
mask frames
26.6%
static-supported 비율
168
region decisions
false
fit_authorized

1 배경 / 목적

이후 appearance fit의 지원 영역(support)을 정의하려면 어떤 source 픽셀을 static 배경으로 신뢰할 수 있는지가 명시되어야 한다. 앞선 whole-scene 진단들은 depth estimator마다 벽·캐비닛 지오메트리 답이 달라(SDK wall_left normal diff 74° vs LAS 12.6°) "어디를 믿을 것인가"가 정리되지 않았다. 이 카드는 그 전 단계로, 21개 camera-row 정성 audit과 14 frame 픽셀 annotation을 수행한다(시간상 coherent-room CAD 시도(job 135781~135844)보다 앞선 09-18 오후~저녁 작업).

기존 한계: timestamp-only correspondence는 non-metric 증거이고, metric camera scale·hand-eye·actor exclusion은 UNVERIFIABLE이라 픽셀 단위 ground truth가 없다.

2 작업 내용

(a) Whole-scene evidence audit — CPU, 새 job 없음

r2s/whole_scene_evidence_audit.py → outputs/whole-scene-evidence/20260918-01/{evidence.json,index.html} r2s/whole_scene_evidence_verify.py → reports/whole-scene-evidence-20260918-01-independent.json 입력: stereo_export/124249/export.json, data/manifests/stack.json, configs/eval_split.json, calibration/stack.json 검증: 7 focused tests, Pyright 0 errors, native R4 code review 승인

Ext2 row 102의 왼쪽 wall fitting은 robot link가 가려 ambiguous로 두고 보이는 오른쪽 fitting만 box 처리했다. Ext1은 실제 window/우측 room context, Ext2는 office clutter로 구분(물리적 window로 주장하지 않음).

(b) Observed-appearance masks — job 135472

대상: rows 0, 9, 30, 50, 80, 92, 102 × 카메라 22246076, 26638268 (SDK-left 14 frame, 1280×720) 클래스: 1 = static-supported, 0 = unknown(default/annotated), 2 = dynamic/shadow 제외 envelope config : configs/observed_appearance_mask_review_20260918.json (SHA-256 dab3c9cd…) 주의 : 같은 보수적 envelope를 7개 row에 동일 적용 — 자동 temporal tracking 아님, full actor segmentation 아님

3 결과 (수치)

카메라static-supported (class 1)unknown (class 0)dynamic/shadow (class 2)
22246076245,358 (26.62%)489,216 (53.08%)187,026 (20.29%)
26638268245,557 (26.64%)354,797 (38.50%)321,246 (34.86%)

각 이미지 921,600 px, 두 카메라 모두 세 클래스 합이 921,600으로 일치.

검증 lane결과
Machine independent verifier (mask 재래스터화, count/overlay/HTML 재구성, hash graph)PASS
독립 visual review (14 overlay 전부)VISUAL_PASS
Code review (10 unique tests, Pyright 0 errors)승인
producer complete.jsonhistorical GENERATED_PENDING_INDEPENDENT_VISUAL_REVIEW 유지 (덮어쓰지 않음)
해석 주의: class 2는 actor/shadow 보수 envelope이며 일부 static background를 포함한다. class 0은 static으로 승격하지 않는다.

4 Takeaway

의미

bounded mask audit 단계는 완료(MASK_AUDIT_COMPLETE)했지만, 신뢰 가능한 static 지원 영역이 프레임의 약 1/4(26.6%)뿐이라 어떤 fit도 승인할 수 없다. 특히 26638268은 dynamic 제외가 34.86%로 지원 영역을 가장 많이 잠식한다. fit을 진행하려면 이 지원 영역이 확대되거나 unknown이 줄어야 한다.

5 Next Steps

미해결 한계

metric scale / hand-eye / actor exclusion은 여전히 UNVERIFIABLE. mask는 row 간 동일 envelope이므로 temporal consistency 미검증. metric/action/contact accuracy gate는 미해결.

다음 작업

unknown 비율(38.5~53.1%)을 줄일 actor segmentation 또는 temporal tracking 기반 mask 확장 + synthetic compositor oracle 통과 후 frozen-geometry color/opacity-only nonblind fit.