Index
2026-05-13 — Visualization

MemER probe 시각화 — combo_002_L29_S48_0006 (3 tests)

memer | RoboCasa kitchen Layout 29 / Style 48 · prior video 8.5분 · MemER dusting ckpt

TL;DR

3/3
object name 정확
0/3
fixture noun 정확
309
total VLM calls
13
total kf events
10230
prior video frames (each cam)

0 Scenario context

RoboCasa kitchen, Layout 29 / Style 48. Robot은 PandaOmron mobile-base bimanual. 3개 prior task가 한 영상에 연속으로 수행됨 (총 ~8.5분 = 10230 frame @ 20 fps), 그 결과 객체 3개가 각각 다른 fixture에 배치된 채로 종료됨.

Episode lang (prior task 설명)
"There's a steak in the fridge that needs to be moved to the freezer for freezing. Pick up the steak from the fridge, place it on any shelf in the freezer, and close the fridge and freezer doors when done."
Cameras (영상에 stack한 2개)
robot0_agentview_left
robot0_agentview_right
Inference 빈도
stride 100 → 103 calls / 10230 frames
Memory FIFO 한도
8 keyframes (max)
비디오 범례: 노란 테두리 = 이 frame에서 VLM 호출됨 (inference timestep) · 초록 테두리 = 이 frame이 현재 메모리 FIFO에 들어있음 · 하단 strip = 메모리에 들어있는 frame들의 thumbnail (왼쪽=오래된 것)

Test 0 — STEAK

Ground Truth (정답)
target object: steak (refrigerated_item_main)
target fixture: freezer (fridge_main_group_freezer_main)
test instruction: "Show me where the steak is placed."
MemER top prediction (64/103 calls = 62%)
"place the steak on the bottom shelf"
OBJECT ✓ "steak" FIXTURE ✗ "freezer" → "shelf"
▶ test 0: prior 비디오 (10230 frame @ 20fps, 8.5분) + GT/예측/메모리 overlay. 4분 시점부터 시작. 메모리는 frame 669 → 1129 → 1929 → 3599 순으로 채워짐.
rankpredicted_subtaskcount / 103
1place the steak on the bottom shelf64 (62%)
2pick up spatula6
3place the red plate on the top shelf3
4place the red bowl on the top shelf3
5place the tomato on the bottom shelf3
22 unique subtasks total · 0회 출력: "freezer", "fridge", "navigate", "approach"

Memory FIFO 진화 (4 keyframe events)

at tspicked framepredicted_subtask at that stepmemory after
699669close top shelf[669]
11991129place the red plate on the top shelf[669, 1129]
19991929place the red bowl on the top shelf[669, 1129, 1929]
35993599place the steak on the bottom shelf[669, 1129, 1929, 3599]

Test 1 — BOWL

Ground Truth
target object: bowl (t1__obj1_main)
target fixture: cabinet (cab_6_main_group_main)
test instruction: "Show me where the bowl is placed."
MemER top prediction (54/103 calls = 52%)
"place the red bowl on the top shelf"
OBJECT ✓ "bowl" FIXTURE ✗ "cabinet" → "shelf"
▶ test 1: 같은 prior 비디오, instruction만 bowl로. 메모리 FIFO 5개로 가장 많이 채워짐 (4639 추가됨).
rankpredicted_subtaskcount / 103
1place the red bowl on the top shelf54 (52%)
2place the bowl on the bottom shelf9
3place the bowl on the top shelf4
4place the toy milk carton on the bottom shelf3
5take tomato soup can off top shelf3
27 unique subtasks · ⚠️ ts=2899에서 "put down duster" 누수 (pure dusting vocabulary)

Memory FIFO 진화 (5 keyframe events)

at tspicked framepredicted_subtask at that stepmemory after
699669close top shelf[669]
12991229pick up spatula[669, 1229]
19991929place the red bowl on the top shelf[669, 1229, 1929]
28992879put down duster ⚠️[669, 1229, 1929, 2879]
46994639place the red bowl on the top shelf[669, 1229, 1929, 2879, 4639]

Test 2 — FISH

Ground Truth
target object: fish (t2__obj_main)
target fixture: oven (oven_main_group_main)
test instruction: "Show me where the fish is placed."
MemER top prediction (56/103 calls = 54%)
"place the fish on the bottom shelf"
OBJECT ✓ "fish" FIXTURE ✗ "oven" → "shelf"
▶ test 2: 같은 prior 비디오, instruction만 fish로. 메모리 진화는 test 0과 거의 동일 (1129 vs 1229만 차이).
rankpredicted_subtaskcount / 103
1place the fish on the bottom shelf56 (54%)
2place the red bowl on the top shelf13
3place the tomato on the bottom shelf5
4place the red teapot on the top shelf5
5take blue block off bottom shelf2
24 unique subtasks · 0회 출력: "oven", "broil", "bake"

Memory FIFO 진화 (4 keyframe events)

at tspicked framepredicted_subtask at that stepmemory after
699669close top shelf[669]
12991229pick up toy chocolate milk carton[669, 1229]
19991929place the fish on the bottom shelf[669, 1229, 1929]
35993599place the fish on the bottom shelf[669, 1229, 1929, 3599]

4 Cross-test 비교 요약

Memory FIFO overlap

3 query 모두에서 frame 669, 1929가 메모리에 들어감. 1129 ↔ 1229는 같은 phase의 다른 picking 순간. 즉 "어떤 object를 묻는지"가 keyframe 선택을 바꾸지 못함.

  • test 0 (steak): [669, 1129, 1929, 3599]
  • test 1 (bowl): [669, 1229, 1929, 2879, 4639] ← 유일하게 5개 채워짐
  • test 2 (fish): [669, 1229, 1929, 3599]

공통: {669, 1929} (모든 query). 차이: 후반 picking 이벤트가 살짝 다름 — 이게 dusting 모델이 "ah, this is a picking moment" 같은 시각적 saliency만 보고 instruction을 무시한다는 직접 증거.

TestGT objectGT fixtureMemER object 명칭MemER fixture 명칭Verdict
0steakfreezersteak ✓"shelf"PARTIAL
1bowlcabinetbowl ✓"shelf"PARTIAL
2fishovenfish ✓"shelf"PARTIAL
총평: Vision (object recognition)은 OOD 환경에서도 살아있지만, language vocabulary는 dusting에 100% lock-in. Pi0.5에 conditioning으로 넘기기 전에 prompt-level enforcement 또는 RoboCasa-style finetune 필요.

5 아직 안 한 실험들 (Pi0.5 없이도 가능)

1. Prompt-level vocabulary enforcement 2시간

memer_eval/contract.py DEFAULT_SYSTEM_PROMPT에 enum 강제:

Output JSON with: - current_subtask: ONE OF [navigate_to_<fixture>, open_<fixture>, close_<fixture>, ...] where <fixture> ∈ {fridge, freezer, oven, microwave, cabinet, drawer, sink, ...} - keyframe_positions: ...

1 scenario 5 test 정도로 sanity check. dusting-tuned LLM이 enum을 따르는지 vs ignore하는지 직접 측정. 가장 cheap한 next step.

2. 다른 scenario 다양성 측정 ~1시간

지금 1개 scenario만 봤음. combo_002 안의 27개 episode (같은 layout/style 다른 randomization)를 다 돌려서:

  • Object recognition rate가 일관된가? (steak/bowl/fish 외에 다른 object들에서도)
  • Vocabulary lock-in이 항상 "place X on shelf" 패턴인가?
  • 27개 × 평균 3 test × ~90s = ~2시간 GPU time

Combo 다양성도 측정 — combo_015 (66 episode), combo_014 (51) 등 다른 scene types에서 같은 pattern인지 확인.

3. Camera ablation ~30분

  • 지금: agentview_left + agentview_right (third-person 2장)
  • 대안 A: agentview_left + eye_in_hand (MemER 학습 분포에 가까움 — exterior+wrist)
  • 대안 B: eye_in_hand 단독 — wrist view만으로 object placement 식별 가능한가

4. Stride/subsample sensitivity ~30분

stride=100 (현재) → keyframe selection 4–5건. stride=50 (2× cost)에서 keyframe이 dense해지는지 측정. 또는 frame_subsample=5 (default 10)로 줄여서 recent context의 시간 해상도를 높이면 어떻게 되는지.

5. Episode lang vs test lang 비교 ~10분

Episode lang ("There's a steak in the fridge that needs to be moved to the freezer...") — prior task 설명. 이걸 instruction으로 주면 MemER가 "fridge"/"freezer"/"steak" 어휘를 받게 됨 → 더 fixture-aware하게 답하는지? Vocabulary 누수의 prompt-side 원인 분리 실험으로 가치 있음.

6. RoboMME 비교 ablation ~10분

이미 260424에 BinFill ep0, 260427에 16 task ep0 sweep 결과가 있음. RoboMME (oxe_droid single-arm, 한 episode 안에서 vary)와 scene-mem-benchmark (RoboCasa multi-fixture, 한 비디오 안에 multi-task) 두 OOD setup에서 같은 vocab lock-in 패턴이 나타나는지 비교 표.

(Pi0.5 후) 7. 본격 정량 평가 다음 세션 1순위

위 1번 (vocab enforcement) + Pi0.5 통합 후 memory_success 진짜 측정. 257 scenario × ~11min = ~47h sequential. SLURM 8 GPU 병렬 ~6h, sample 30 scenario ~5h.