Index
2026-04-14 — Analysis

Wrong Answer 분석: Graph-VLM vs Frame Baseline

Graph-VLM | 560개 QA에서 Graph 77 고유 정답 vs Baseline 89 고유 정답 — 5가지 실패 패턴 분류

TL;DR

77
Graph 고유 정답
89
Baseline 고유 정답
303
둘 다 맞음
91
둘 다 틀림

1 배경 / 목적

전체 정확도 비교(Graph 67.9% vs Baseline 70.0%)만으로는 각 시스템이 어떤 종류의 실수를 하는지 알 수 없음. 560개 질문별 정답/오답 패턴을 4가지로 분류하여 그래프의 진짜 강점 영역과 치명적 약점, 그리고 개선 방향의 우선순위를 명확히 하기 위해 분석.

2 작업 내용

두 eval 결과 JSON을 매칭하여 각 질문을 {둘 다 맞음, Graph만, Baseline만, 둘 다 틀림}으로 분류. 카테고리 × 난이도 cross-tab 집계. Query plan, 선택지까지 비교하여 원인 추적.

3 결과

전체 분포

상태수량비율
둘 다 맞음30354.1%
Graph만 맞음7713.8%
Baseline만 맞음8915.9%
둘 다 틀림9116.3%

Graph만 맞춘 77개 — 강점 영역별 분석

STRENGTH EM3 시간 기억 (15건 고유 정답)

그래프 action 노드의 정확한 start_sec/end_sec로 duration 질문에 정확히 답변. Baseline(20프레임 분산)은 초 단위 추정 불가.

Q: 셀러리를 자르는데 대략 몇 초 걸렸어? 정답 A: 25초 Graph: A ✓ — action(cutting_celery).duration = 25s Base: C (6초) — 프레임 간격 보고 과소추정 Q: 주키니 씻는데 얼마나 걸렸어? 정답 D: 12초 Graph: D ✓ — action(washing_zucchini).duration Base: A (3초)

STRENGTH T2 상태 추적 (12건 고유 정답)

spatial edge의 valid_from/valid_until로 "언제 어떤 상태였나"를 정확히 답변. Baseline은 해당 프레임이 샘플링되지 않으면 추정 불가.

Q: dicing 시작할 때 싱크대 상태는? 정답 B: 스테인리스, 물기 있음 Graph: B ✓ — spatial(sink, water, valid_from=...) Base: A (비어있고 건조) — 프레임에서 싱크대 못 봄

STRENGTH T3 인과 체인 (10건 고유 정답)

참여 관계 + 시간 순서로 "왜"에 구조적 답변. Cross-event 연결 필요 질문.

Q: 서랍에서 작은 숟가락을 꺼낸 목적? 정답 C: 소금을 계량해서 끓는 물에 넣기 위해 Graph: C ✓ — participates chain: spoon → measuring → water Base: B (맛보기) — 흔한 추정
카테고리별 강점 요약: EM3/L2 7승, T2/L1 7승, T2/L3 3승, T3/L2 6승, T3/L3 4승, EM5/L3 3승. L3(cross-event) 전반에서 그래프가 일관되게 우세.

Baseline만 맞춘 89개 — 실패 패턴 5가지

FAIL-1 시각적 세부 정보 부족 (EM1/L1 13건)

그래프에는 "있다" 정보만 있고 "어디에, 어느 방향에 보이냐"의 시각적 맥락이 없음.

Q: 냉장고가 처음 열렸을 때 시야에서 어느 쪽? 정답 A: 처음에 오른쪽 Graph: B (정면) — 그래프에 방향 정보 없음 (spatial은 obj-obj 관계만) Base: A ✓ — 프레임을 직접 봐서 판단 plan: multihop(refrigerator, [participates]) → 맥락 부족

FAIL-2 과정의 세부 순서 오류 (EM5/L2 8건)

참여자는 정확하지만 순서/세부 단계를 놓침. Query plan이 participant(single_object) 패턴으로 단일 물체 기준이라 시간순 단계 전체 포착 불가.

Q: 도마에 올려진 후 주키니 준비 순서? 정답 C: 끝을 다듬고, 그 다음 더 자름 Graph: A (씻고 바로 동그랗게 슬라이스) — entity-resolved된 결과만 반환 Base: C ✓

FAIL-3 부정 확인 실패 (EM2/L2 9건)

"~했어? 안 했어?" 질문에서 그래프가 participates edge가 있으면 무조건 긍정으로 해석.

Q: 주전자로 냄비에 물을 부었어? 정답 B: 아니, 주전자는 냄비 근처에 들고만 있었음 Graph: A (부었음) — participates(kettle, saucepan) 있으면 pour로 해석 Base: B ✓ — 프레임에서 실제 안 부은 걸 봄 Q: 팬 안 채소를 여러 번 저었어? 정답 A: 네, 저었다가 멈추고 다시 저었음 Graph: B (한 번만) — action(stirring) 1개로 반복이 병합됨 Base: A ✓

FAIL-4 일시적 상태 손실 (T2/L2, T2/L3 12건)

"~하기 직전 상태" 질문에서 그래프가 연속적으로 유지되는 상태만 기억, 순간적 상태 놓침.

Q: 씻은 셀러리를 도마에 놓기 직전에 도마 상태? 정답 B: 비어있음 Graph: A (다진 셀러리 있음) — spatial edge의 valid_from이 다음 action 시작점과 겹침 Base: B ✓

FAIL-5 Entity Resolution 엇나감

Norm1 정규화 후에도 남아있는 중복 object. plan이 participant(chopping_board_green)인데 실제 노드는 cutting_board.

카테고리 × 난이도 핵심 비교

Category/Diff둘 다✓Graph만✓Base만✓둘 다✗판정
EM1/L1246137Base 압도
EM2/L211294Base 압도
EM3/L287413Graph 우세
EM5/L218283Base 압도
EM5/L320300Graph 독점
T2/L113762Graph 우세
T3/L213632Graph 우세
T3/L318413Graph 우세

4 Takeaway

그래프의 진짜 강점 = 정확한 수치 + 구조적 관계

EM3(시간), T2(상태), T3(인과), L3(cross-event) — 공통점은 "정확한 수치·순서·관계가 필요한 질문". 그래프의 start_sec/end_sec, valid_from/valid_until, participates chain이 직접적으로 답변에 기여. 이 영역에서 77개 고유 정답이 나왔고, VLM이나 프레임으로는 절대 대체 불가.

그래프의 치명적 약점 = "봐야만 알 수 있는" 시각 정보

EM1/L1(방향·위치), EM2/L2(동작 반복 세부 타이밍), EM5/L2(단계별 순서) — 공통점은 "프레임을 직접 봐야 판단 가능한 정보". 그래프가 이를 표현할 수 없는 구조적 한계. 빌드 단계에서 시각 메타데이터(좌/우/위/아래, 반복 횟수)를 추가하지 않는 한 해결 불가.

순승부는 Baseline +12지만 77개 Graph 고유 정답의 가치는 VLM으로 절대 대체 불가. 특히 EM3/L2(7승), T2/L1(7승)은 그래프의 존재 이유를 직접적으로 증명.
EM2/L2 9패가 특히 심각: "~했어? 안 했어?" 부정 확인이 participates edge만으로는 불가능. action 세분화(stirring 반복/중단)와 edge에 negation 정보 추가 없이는 구조적으로 해결 불가.

5 Next Steps

그래프 빌드 개선 (FAIL-1, FAIL-3, FAIL-4 대응)

시각 메타데이터 추가: object가 프레임의 어디에 있었는지(좌/우/상/하) 저장. Action 세분화: stirring을 "stir 1, pause, stir 2"로 분리 유지. Transient state tracking: "~하기 직전" 순간 상태를 별도 캡쳐.

Query Plan 개선 (FAIL-2, FAIL-5 대응)

Multi-object query: participant([zucchini, diced_zucchini, zucchini_slices]). Context scoring: query 결과에서 질문 관련도 높은 것부터 context 구성. Fallback 다양화: participant 실패 시 time 쿼리로 자동 전환.

QA 품질 개선

둘 다 틀린 91개 중 얼마나가 QA 자체 오류인지 수동 확인. EM1/L1처럼 시각 관찰이 답인 질문은 그래프 평가에서 분리 (그래프 미적용 영역으로 표시).

Graph + frames 하이브리드 측정

Graph context + 관련 keyframe 함께 제공 (이미 vqa_pipeline.py에 일부 구현). EM1/L1 13패 영역에서 keyframe 추가로 얼마나 회복 가능한지 측정.