Index
2026-05-26 — Progress

gt_score 영상 뷰어 보강 — 스텝별 현재-task + 회상질의 마커 v2

memer | scene-mem API eval 시각화 도구

TL;DR

2
v2 MP4 생성
8806f
영상 프레임/test
0
API 콜 (렌더링)
OK
per_seg 자동감지

1 배경/목적 (왜)

faithful gt_score + --gt-per-segment-instruction(perseg) 모드로 n=2 및 n=30 측정을 완료한 후, 생성한 영상(*_perseg.mp4)에서 중요한 정보가 빠져 있었다.

시각화 한계: 기존 render_scene_mem_video.py는 "모델에 어떤 instruction이 들어갔는가"를 스텝별로 표시하지 않았다. 최충실 MemER 메커니즘(매 스텝 현재-task conditioning)을 영상에서 확인할 수 없었고, 최종 "회상질의"로 전환되는 순간도 표시되지 않았다.

즉, 0/30 실패 메커니즘(초반 배치 키프레임 미보존 → 회상질의 시점에 fixture 회상 불가)을 영상으로 완전히 설명하려면 "이 스텝에서 모델이 어떤 task를 받았는가"가 프레임마다 표시돼야 했다.

2 작업 내용 (어떻게)

reconstruct_gtscore_steps.py — per-step instruction 기록 추가

metrics.jsonper_segment_instruction 플래그를 자동 감지하도록 수정. True이면 subtasks.json segments[].{frame_start, frame_end, instruction}에서 timestep → 세그먼트 매핑을 재계산하여 per-step 실제 모델 입력 instruction을 기록한다:

Path-2 우선 처리: faithful run predictions.jsonl에 이미 per-step 프레임 필드가 저장돼 있으면 passthrough(재계산/video decode 0). 저장값 없는 레거시는 deterministic fallback으로 replay.

render_scene_mem_video.py — 오버레이 추가

per-step instruction을 "CURRENT TASK fed to MemER (this step)" 헤더로 프레임마다 표시. 최종 스텝에는 별도 빨강 배너:

MEMORY RECALL QUERY (final inference) → 이 스텝부터 모델이 회상질의를 받음 (메모리 회상 평가 시작)

eval 수치·EpisodicMemory FIFO·채점·turn record는 전혀 건드리지 않음 — 표현 레이어 한정 수정.

검증

per_segment_instruction=True 자동감지 확인 후, combo_002_L29_S48_0089 스텝별 instruction 전환 정확성을 결정론 체크(API 0):

step 0 → "Move the steak from the fridge" [MoveFridgeToFreezer] step ~ → "Navigate to the cabinet" [Transit] step ~ → "Place the bowl in the cabinet" [RestockBowls] step ~ → "Broil the fish in the oven" [OvenBroilFish] ... step 88 → "Show me where the steak is placed" [MEMORY RECALL QUERY] ← 빨강

3 결과 (수치)

항목결과비고
per_segment_instruction 자동감지OKmetrics.json 플래그 자동 분기
스텝별 instruction 전환 정확성결정론 PASSAPI 0 — 재계산만
생성 MP4 수2개MoveFridgeToFreezer + RestockBowls
MP4 spec8806f @20fps, ~19MBffmpeg OK, H.264
eval 수치 변화0 (불변)표현 레이어만 수정
memory/predictions 일치byte-identical기존 결과와 동일

산출: eval_outputs/b1_gtscore_perseg_n2/videos/*_perseg_v2.mp4 × 2.

시각 확인: 두 샘플 모두 최종 memory FIFO = 에피소드 후반 프레임([7769~8759] / [7699~8759]). 초반 배치 키프레임이 FIFO에 단 한 장도 없음 — 0/2(→n=30에서 0/30) 회상 실패 메커니즘이 영상으로 완전히 설명된다.

4 Takeaway

이번 보강으로 3계약 비교 영상 세트(trainstruct / kffifo / perseg_v2)가 완성됐다. 각 영상에서 "모델이 어떤 계약(텍스트 누적 vs 키프레임-FIFO vs 키프레임-FIFO+현재-task)으로 돌아가는지"가 프레임마다 명시된다.

핵심 가치: n=30 faithful 측정(0/30, 260525)의 실패 원인을 영상으로 설명할 수 있게 됐다. "object는 추적하지만 fixture(목적지)를 회상 못 함"의 메커니즘 = "초반 배치 스텝의 키프레임이 89스텝 FIFO 후반부에서 밀려남" — 이것이 perseg_v2 영상에서 visually verified. 논문/발표용 증거 영상으로 직접 활용 가능.

추가로, reconstruct_gtscore_steps.py의 Path-2 passthrough 설계(predictions.jsonl에 per-step 필드 저장 → 재계산 불요)가 이후 대규모 gt_score run에서도 재렌더링을 즉시 가능하게 한다. API 재호출 0.

5 Next Steps

해결된 것

미결/다음