
공은 어디에 있을까? VLM이 관중의 직관을 가지고 있는지 테스트하기
요약
VLM(시각-언어 모델)이 축구 경기 영상에서 공이 보이지 않을 때 사회적 추론을 통해 공의 위치를 예측할 수 있는지 실험했습니다. 실험 결과, 대규모 모델만이 제한적인 직관을 보여주었으며, 실험 설계 시 혼란 변수를 통제하는 것이 중요함을 시사합니다.
핵심 포인트
- VLM의 사회적 추론 능력을 테스트하기 위해 공을 제거한 인페인팅 영상 사용
- GPT, Claude, Qwen2.5-VL 등 다양한 모델의 위치 예측 성능 비교
- 중계 카메라의 특성(공을 중앙에 배치)이 실험 결과에 미치는 혼란 변수 확인
- 대규모 모델일수록 관중과 유사한 직관을 가질 가능성이 높음
경기장 맨 위층에서 축구 경기를 관람한다고 상상해 보세요. 공은 거의 보이지 않는 작은 점에 불과하지만, 흥미로운 일이 일어납니다. 당신은 대개 공이 어디에 있는지 알고 있습니다. 선수들이 알려주기 때문입니다. 몸을 기울이고, 선수들이 모여들고, 모두가 같은 방향으로 움직이기 시작하면, 당신의 눈은 실제로 공을 보기 직전에 이미 공이 있는 곳을 향합니다. 이는 추적(tracking)이 아닙니다. 일종의 사회적 추론(social inference)입니다. 당신은 경기를 알고 있기 때문에, 사람들이 그 대상에 대해 알려주는 것입니다.
저는 범용 시각-언어 모델(vision-language model, VLM)이 이와 동일한 직관을 가지고 있는지 알고 싶었습니다. 공의 궤적을 학습한 전문 추적기(specialist tracker)를 말하는 것이 아닙니다. 그런 모델들은 이미 존재하며 성능도 뛰어납니다 (Maksai et al., Kim et al. 2023, TranSPORTmer 모두 선수들의 움직임을 통해 공을 추론합니다). 제가 의미하는 것은 관중석에 앉아 있는 사람처럼 "경기를 아는" 모델이며, 이 작업을 위해 특별히 훈련되지 않은 모델을 말합니다. 공이 지워진 프레임을 보고 공이 반드시 있어야 할 위치를 가리킬 수 있을까요?
솔직한 답변은 "예, 조금은요, 그리고 오직 가장 큰 모델들만 가능합니다" 였습니다. 하지만 제가 실제로 신뢰할 수 있는 결론에 도달하는 과정이 작업의 대부분을 차지했으며, 바로 그 부분이 기록할 가치가 있는 부분입니다.
실험 설정
저는 SoccerNet-Tracking을 사용했습니다. 이는 모든 선수와 공에 대해 프레임별 경계 상자(bounding box)가 포함된 중계 영상 클립입니다. 각 프레임에서 저는 LaMa 인페인팅(inpainting)을 사용하여 공을 제거했습니다. LaMa는 공이 있던 자리에 잔디, 라인, 또는 유니폼의 일관된 패치를 재구성하는 딥 인페인팅(deep inpainting) 기술로, 모델이 편집 흔적을 발견하여 부정행위를 할 수 없도록 합니다. (전통적인 인페인팅은 경기장 라인에 눈에 띄는 흐림 현상을 남겼지만, VLM을 이용한 누출 제어(leak-control) 단계를 통해 딥 인페인팅 버전은 모델이 붙잡을 만한 흔적을 전혀 남기지 않음을 확인했습니다.) 그 후 여러 모델에 공의 좌표를 물었고, 실제 정답과의 거리를 점수로 산출했습니다.
사용된 모델은 다음과 같습니다: GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6 (모두 API를 통해 사용), 그리고 GPU에서 실행되는 오픈 소스 참조 모델인 Qwen2.5-VL-7B입니다. 이 모델들에 대항하여 두 가지 단순한 베이스라인 (baselines)을 설정했습니다: "공은 프레임의 중앙에 있다"와 "공은 선수들의 무게 중심 (centroid)에 있다"입니다.
내가 정면으로 빠졌던 함정
나의 첫 번째 실험 결과는 훌륭해 보였습니다. GPT는 중앙 베이스라인을 이겼고, 가장 어려운 사례들 — 즉 프레임 중앙에서 멀리 떨어진 공의 경우 — 에서 **64%**의 확률로 승리하는 것처럼 보였습니다. 깔끔한 결론이었죠: 범용 AI (generalist AI)는 관중의 직관을 가지고 있다는 것입니다. 저는 그런 기사를 쓸 수도 있었습니다.
두 가지 문제점이 있었는데, 둘 다 제 잘못이었습니다.
첫째, 혼란 변수 (confound)입니다. 중계 카메라는 공을 따라가기 (follow the ball) 때문에 공을 화면 중앙 근처에 유지합니다. 따라서 "그냥 중앙을 추측하라"는 것은 전혀 바보 같은 베이스라인이 아니었습니다. 그것은 강력한 베이스라인이었으며, 중앙 쪽으로 치우친 어떤 모델이든 잘못된 이유로 똑똑해 보이게 만들었습니다. 둘째, 그리고 더 심각한 문제는 제 샘플 (sample)이 너무 적었다는 것입니다. 그 64%라는 수치는 단 14개의 항목에서 나온 것이었습니다. 여기에 부트스트랩 신뢰 구간 (bootstrap confidence interval)을 적용했을 때, 구간은 36%에서 86%까지 이어졌으며, 이는 50%, 즉 확률 (chance)을 여유롭게 포함하고 있었습니다.

그래서 저는 이 두 가지 문제를 해결하기 위해 테스트를 다시 설계했습니다. 공의 중심으로부터의 거리에 따라 데이터셋의 균형을 맞추어 ("중앙을 추측하라"는 방식이 구조적으로 쓸모없게 만듦), 규모를 키웠습니다. 더 큰 샘플에서 동일한 오프센터 (off-center) 승률은 **55%**로 수렴했으며, 신뢰 구간은 여전히 50%에 닿아 있었습니다. 흥미로웠던 첫 번째 결과는 통계학과의 접촉을 견뎌내지 못했습니다. 그것은 카메라의 추적과 14개의 데이터 포인트가 만들어낸 신기루였습니다.
제가 이 이야기를 하는 것은 자학하기 위해서가 아니라, 이것이 핵심이기 때문입니다. 혼란스러운 베이스라인과 작은 샘플이 결합하면 만족스럽고 발표할 만한, 하지만 틀린 결론을 내어줄 것이며, 그것은 마치 사실처럼 느껴질 것입니다. 유일한 방어책은 지루한 과정입니다. 편향을 제거 (de-bias)하고, 규모를 키우고 (scale), 부트스트랩 (bootstrap)을 수행하며, 스스로의 발견을 믿기 전에 그것을 깨뜨리려고 시도하는 것입니다.
실제로 무엇이 사실인가
샘플이 정직해진 후, 나는 (여전히 성능이 부족한) 어려운 하위 집합에 대한 오차 (error-on-a-hard-subset)에 의존하는 것을 멈추고, 더 다루기 쉬운 측정 지표를 사용했습니다. 그것은 바로 모델의 예측이 전체 위치 범위에 걸쳐 실제로 공이 있는 위치와 상관관계(correlate)가 있는가? 하는 점입니다. 데이터는 이 질문에 답할 수 있습니다.

- Claude Opus 4.8은 가장 명확한 신호(signal)를 보입니다. 이 모델의 추측은 두 축 모두에서 실제 공의 위치를 추적하며, 신뢰 구간(confidence intervals)이 0을 벗어나 명확하게 유지됩니다.
- GPT-5.4는 부분적인 신호를 보여줍니다 (수평으로는 견고하지만, 수직으로는 더 노이즈가 많음).
- **Qwen2.5-VL-7B (open)**와 Claude Sonnet 4.6은 통계적으로 **평탄(flat)**합니다. 즉, 이들의 구간은 0을 가로지릅니다. 이 모델들이 게으름 때문에 중앙을 가리키는 것은 아닙니다 (확인 결과, 예측값들이 넓게 퍼져 있었습니다). 단지 공을 추적하지 못하고 있을 뿐입니다.
따라서 관중의 직관(spectator intuition)은 실재하지만 희미하며, 이는 프론티어 모델(frontier-model)의 특징입니다. 즉, 거대 폐쇄형 모델(closed models)에서는 나타나지만, 더 작은 오픈 모델(open models)이나 중간 단계의 Claude에서는 나타나지 않습니다. 그리고 모든 스케일링(scaling) 과정을 거치며 살아남은 냉정한 주의 사항이 있습니다. 단일 프레임만으로는, 어떤 모델도 실제로 중심에서 벗어난 공에 대해 중심 편향(center bias)을 확실하게 이겨내지 못한다는 점입니다. 직관은 전체적으로는 존재하지만, 단 하나의 정지 영상만으로 어렵고 범위가 넓은 사례들을 정확히 맞출 만큼 강력하지는 않습니다.
한 가지 더 흥미로운 변주가 있었습니다. 저는 모든 모델에 "정보가 제공된 (informed)" 프롬프트를 주었습니다. 스포츠 종목의 이름을 명시하고 관중이 사용하는 요소들(선수들이 공을 향해 방향을 잡고, 공으로 모여들며, 공을 가진 선수가 무리를 이끈다는 점 등)을 상세히 설명했습니다. 이는 GPT에게 큰 도움이 되었지만 (상관관계가 급증했습니다), Sonnet에는 아무런 영향이 없었으며, Opus는 거의 변화가 없었습니다. 이 부분을 주의 깊게 읽어보세요. Sonnet의 문제는 축구를 몰랐던 것이 아닙니다. 규칙을 알려주는 것은 아무런 변화를 주지 못했는데, 그 이유는 Sonnet의 병목 현상이 '아는 것 (knowing)'이 아니라 '보는 것 (seeing)'에 있었기 때문입니다. 이미 장면에 대해 추론할 수 있었던 GPT의 경우, 이러한 프레이밍 (framing)이 여유 공간을 확보해 주었습니다. 즉, 프롬프트의 중요성이 모델 등급만큼이나 컸습니다.

영상에 관한 것이 아닌 영상
여기서 저는 정답을 미리 알고 있다고 확신했습니다. 단일 프레임은 모호합니다. 관중의 진짜 기술은 경기가 전개되는 (develop) 과정을 지켜보는 것입니다. 그래서 저는 모델들에게 짧은 시퀀스(sequences)를 제공했습니다. 몇 초에 걸친 4개의 프레임이며, 모든 프레임에서 공은 지워진 상태였습니다. 움직임 (motion)이 어려운 사례들을 해결해 주기를 기대한 것입니다.
GPT에게는 도움이 되는 것처럼 보였습니다. 하지만 이를 믿기 전에, 저는 중요한 대조군 실험을 수행했습니다. 바로 프레임의 순서를 무작위로 섞는 것 (shuffled the frames into a random order) 이었습니다. 만약 모델이 움직임을 읽는다면, 시간 순서를 뒤섞었을 때 그 이점이 사라져야 합니다.

셔플링(Shuffling)을 해도 변한 것은 없었습니다. 프레임의 순서는 전체 실험에서 가장 명확한 '무효(null)' 결과였습니다. 어떤 모델도 플레이의 _궤적(trajectory)_을 통합하지 못하고 있었습니다 — 즉, 이들은 움직임에 대해 전혀 추론하지 못하고 있습니다. 여러 프레임이 사용되었을 때 실제로 변한 것은 더 지루하고 이상한 것이었습니다: 어떤 순서로든 **장면에 대한 추가적인 뷰(extra views)**가 제공되었다는 점입니다. 그리고 두 개의 프런티어 모델(frontier models)은 이를 정반대의 방식으로 처리합니다. GPT는 _집계(aggregates)_합니다 — 프레임이 뒤섞여 있더라도 해당 순간을 더 많이 보는 것이 추측을 더 날카롭게 만듭니다. 반면 Opus는 _희석(diluted)_됩니다 — 추가된 프레임들이 이미 더 잘 수행하고 있던 타겟 프레임(target-frame) 판독으로부터 모델을 멀어지게 만듭니다. 단일 프레임에서 가장 성능이 좋았던 모델이 더 많은 프레임을 사용하는 데에는 가장 서툴렀습니다.
이는 "비디오가 도움이 된다"는 말보다 훨씬 더 흥미로운 발견이며, 만약 제가 처음에 나온 그럴듯한 버전을 믿었다면 이 사실을 놓쳤을 것입니다.
핵심 요약 (Takeaways)
- 범용 VLM(Generalist VLMs)은 희미한 관중의 직관을 가지고 있습니다 — 이들의 추측은 숨겨진 공의 위치와 상관관계가 있지만, 이는 프런티어 모델의 특성(Opus가 가장 명확하고, GPT는 부분적임)이며 매우 약합니다. 단일 프레임만으로는 정말 어려운 사례들을 해결할 수 없습니다.
- 이들은 움직임에 대해 추론하지 못합니다. 시간적 이해(temporal understanding)처럼 보이는 것은 실제로는 다중 뷰 집계(multi-view aggregation)이며, 추가적인 뷰가 도움이 되는지 혹은 해가 되는지는 모델마다 다릅니다.
- 병목 현상은 지식이 아니라 시각입니다. 게임을 설명해 주는 것은 이미 시각적으로 추론할 수 있는 모델에게는 도움이 되었지만, 그렇지 못한 모델에게는 아무런 도움이 되지 않았습니다.
- 방법론이 가장 어려운 부분이었습니다. 카메라를 따라가며 촬영된 영상과 작은 샘플은 그럴듯해 보이지만 틀린 이야기를 만들어냈습니다. 편향 제거(De-biasing), 스케일링(scaling), 부트스트래핑(bootstrapping), 그리고 제 자신의 결과에 대한 적대적 감사(adversarially auditing)를 거치면서 결론이 두 번이나 바뀌었습니다.
다른 스포츠, 기술의 전이 여부, 그리고 그 밑바탕에 깔린 기하학적 구조 등 '레벨 2'의 과제들이 남아 있지만, 그것은 나중의 일입니다. 지금 당장 정직한 헤드라인은 제가 거의 쓸 뻔했던 것보다 더 작고 더 나은 것입니다: 모델이 충분히 크다면 관중석에 앉아 공이 어디에 있는지 조금은 느낄 수 있지만, 공을 찾기 위해 플레이를 관찰할 수는 없습니다.
코드, 데이터 파이프라인, 그리고 전체 감사(bootstrap CIs 포함)는 wheres-the-ball 저장소에 있습니다. SoccerNet-Tracking을 기반으로 구축되었으며, IOPaint를 통해 LaMa로 공을 제거했습니다. 읽어볼 만한 이전 전문가 연구: Maksai et al., Kim et al. 2023, TranSPORTmer.
원문은 javieraguilar.ai에 게시되었습니다.
더 많은 AI 에이전트 프로젝트를 보고 싶으신가요? 멀티 에이전트 시스템 (multi-agent systems), MCP 개발, 그리고 컴플라이언스 자동화 (compliance automation)를 소개하는 저의 포트폴리오를 확인해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기