Index
2026-09-03 — Analysis

가시성(Visibility) Ablation — 지각(Perception)과 메모리 이득 분리

scene_bench_paper | §6 Analysis 후보, A1 공리 실증

TL;DR

0.48
seen · blind loc
0.15
unseen · blind loc
+0.36
unseen 최대 이득(vis-pure)
526
전체 행 (139 seen / 387 unseen)

1 배경 / 목적

논문의 A1 공리("모든 질의는 현재 관측에 없는 정보를 채워야 한다")는 지금까지 서술로만 존재했고, 평균 loc 수치만으로는 "메모리가 왜 blind보다 나은가"를 직접 뒷받침하지 못했다. 벤치의 read-phase 질의 턴은 마지막 exo_camera_1 프레임 1장 + 질의문이고 blind 전략도 그 한 장은 받는다(메모리 턴 0개) — 즉 정답 물체가 그 프레임 안에 있으면 지각만으로 답할 수 있고, 없으면 기억이 있어야 한다는 것이 벤치 설계의 핵심 주장이다.

기존 한계: 기존 본표(526행, hidden 제외)는 seen/unseen 구분 없이 평균만 보여줘서, 메모리 이득이 "지각 불가 상황"에 집중되는지 아니면 전반적으로 고르게 퍼지는지 구분할 수 없었다.

2 작업 내용

seen 정의(pseudo-label): 시뮬레이터 GT 세그멘테이션 픽셀 수(traj.h5 obs/extra/tracked_obj_pixels, 5프레임마다 계산)가 질의 프레임(정책이 받는 마지막 계산 프레임, exo_camera_1)에서 ≥ 50 px(640×480 기준 ≈7×7, 데이터셋 README의 observed 기준과 동일)이면 seen. multi 행은 답 중 최대값을 사용.

범위: HF Keh0t0/scene-mem-benchmark e987b40f find 589행 중 hidden 63행 제외 = 526행(본표와 동일 범위). API 4모델(flash-3.6/3.7, sonnet-5, gpt-5.6-luna) 평균 loc, cap 8·공통 writer 전문·30s 청크 — 본표와 동일 런(재측정 아님, 같은 행을 seen/unseen으로 나눈 것).

cd ~/repos/Robotics/scene_bench && conda activate mlspaces # (a) 지금처럼 pseudo-label python tmp/hf_check/ablation_visibility.py → tmp/hf_check/ablation_visibility.{tex,md,csv,json} # (b) 데이터 팀 정식 라벨 도착 시 (query_id, visible 두 열만 있으면 OK) python tmp/hf_check/ablation_visibility.py --labels <labels.jsonl> \ --out-prefix ~/repos/Robotics/scene_bench_paper/tables/visibility_ablation # (c) 민감도 변형 (임계값 200px) python tmp/hf_check/ablation_visibility.py --px-threshold 200 --gray-below 50 \ --out-prefix ~/repos/Robotics/scene_bench_paper/tables/visibility_ablation_200px

결과물 위치: 본 리포지토리(scene_bench_paper) tables/visibility_ablation.{tex,md,csv,json}, tables/visibility_ablation_200px.tex. .tex는 booktabs tabular만 담고 전략 이름은 macros.tex 매크로 사용.

보조 분해도 함께 산출: kind별(target/distractor), 최근성 2×2, 임계값 민감도(200px), 모델별 seen/unseen — 전부 tables/visibility_ablation.md에 기록.

3 결과 (수치)

전략seen (n=139)unseen (n=387)Δ vs blind · seenΔ vs blind · unseenOpen 8B seenOpen 8B unseen
blind0.480.15––0.380.31
textlog (oracle)0.770.37+0.29+0.220.590.37
frames-uniform0.560.44+0.08+0.290.380.36
rf-v2 (naive)0.460.33−0.03+0.180.230.14
rf-v3 (MEM-style)0.490.380.00+0.230.260.13
vis-pure (MemER-style)0.580.51+0.10+0.360.450.29
tagmem-r3 (ours)0.550.39+0.07+0.240.260.09

보조 분해

kind별(API4): blind target seen/unseen 0.40/0.15 · distractor 0.55/0.16. 오라클은 target 0.87/0.84로 seen 여부 무관(정의상), distractor는 0.60/0.07(로그에 없어 기권) — 오라클의 unseen 0.37은 distractor 기권 탓이므로 본문에서 "target 오라클 0.84"로 병기 필요.

최근성 2×2(API4): blind seen·last 0.48 vs seen·not-last 0.49 → 가시 효과는 최근성과 독립(마지막 이벤트 물체가 아니어도 보이면 똑같이 맞힌다). unseen·last는 n=14라 인용 부적합, unseen·not-last(n=373)가 사실상 unseen 전체.

임계 민감도: 200px(50~199px 회색지대 94행 제외) 표는 모든 셀 0.04 이내 차이, 결론 동일 — 라벨 플러그인은 픽셀 임계 200 = 동일 라벨 파일로 바이트 동일 출력 확인(260903).

모델별 seen/unseen: flash-3.6 0.49/0.20 · flash-3.7 0.53/0.14 · sonnet 0.43/0.10 · luna 0.48/0.18 · qwen 0.40/0.24 · cosmos 0.41/0.38 · molmo2 0.35/0.31.

핵심 발견: 메모리는 지각이 안 될 때만 도움된다 — seen 이득 −0.03~+0.10 vs unseen 이득 +0.18~+0.36. A1 공리가 데이터로 직접 확인됨.
오픈 8B의 다른 얼굴: 지각 보너스 자체가 작고(seen 0.33~0.38) 메모리 이득도 대부분 음수 — 기존에 확인된 G1(blind≤chance) 붕괴와 같은 근본 원인(모델의 지각·메모리 활용 능력 부족)을 다른 각도에서 보여줌.

범위 · 가시 행 비율 (§4 인용용)

가시 행은 find 답 645 중 141(22%), 그중 79가 마지막 이벤트 물체 — 로봇이 마지막으로 놓은 자리에 서서 종료하기 때문. restore '지금 자리'는 156/433. hidden 63행은 정의상 0px → 별도 표(hidden loc: 오라클 0.81, 나머지 0.33~0.39, blind 0.10).

4 Takeaway

의미

이 분석은 벤치 설계의 핵심 주장(A1 공리)을 처음으로 정량적으로 뒷받침한다. §6 Analysis에 넣을 문단·표·caption 초안(LaTeX)까지 이미 작성 완료 — tab:visibility 표와 "Memory helps only when perception cannot" 문단은 바로 붙여넣을 수 있는 상태다. 다만 지금 수치는 pseudo-label(GT 픽셀 임계값) 기준이라, 사람이 판정한 정식 라벨이 아니라는 한계는 캡션에 명시해야 한다.

5 Next Steps

미해결 한계

pseudo-label 정의(50px 임계값)가 사람이 판정한 "실제로 보였는가" 기준과 얼마나 일치하는지 검증되지 않았다. 데이터 팀의 정식 가시 라벨이 아직 도착하지 않은 상태.

다음 작업

정식 라벨 도착 시 --labels 옵션으로 본표·보조분해·민감도표 3종을 재생성(스크립트가 자동으로 표 파일만 교체, 문장은 재검토). 캡션의 n·수치를 표 파일 머리 주석(라벨 소스·n·제외 행)에서 그대로 옮겨 갱신. §6 문단 초안을 정식 라벨 값으로 업데이트 후 draft에 삽입.