임팩트 탐색이 클립 전체를 훑는다는 진단(오늘 앞선 글)에 이어, 그중 오염 문제 하나만 떼어 고치는 변경(A-1) 을 만들고 검증했다. 결론은 되돌린다.

A-1이 무엇이었나

extension_peak은 팔꿈치 각도의 각속도가 최대인 프레임을 임팩트로 삼는다. 그런데 np.gradient는 중심차분이라 이웃 프레임의 값을 쓴다.

# 기존
impact = _peak_frame(np.gradient(series), usable)

# A-1
impact = _peak_frame(np.gradient(np.where(usable, series, np.nan)), usable)

후보를 usable로 거르는 것만으로는 부족하다는 것이 문제의식이었다. 측정 불가 프레임의 각도가 양옆 정상 프레임의 각속도를 부풀린다. 농구 실클립에서 68프레임의 속도가 (155.5 − 56.3) / 2 = 49.6으로 계산됐는데, 67프레임은 손목 신뢰도 0.46으로 기준(0.6) 미만이었다.

오염은 실재한다

먼저 A-1의 명분부터 검증했다. 제거 대상 프레임의 각도값을 양옆 usable 프레임에서 선형 예측해 잔차를 쟀다(분석용 계산이며 파이프라인 보간이 아니다).

  잔차 중앙 p90
제거 대상 프레임 33.0 86.9
대조 (usable 무작위) 0.39 1.91

자연 변동의 약 85배로 어긋나 있다. 기준선의 3배를 넘는 것이 95.3%, 멀쩡한데 지워지는 과잉 제거는 1.7% 뿐이다. 제거 대상 프레임의 손목 신뢰도는 중앙 0.000, 70.3%가 정확히 0이다.

즉 A-1이 지우는 값은 진짜 쓰레기다. 제거 자체는 정당하다.

그런데 결측이 정답 창에 몰린다

문제는 그 쓰레기가 어디에 있느냐였다.

축구 참조(공-발목 최근접)로 결측 위치를 쟀더니 결측 10개가 전부 접촉 ±10프레임 안이었다.

  실제 무작위 기대 이항검정 p
접촉 ±5 7/10 28.8% 0.0083
접촉 ±10 10/10 52.7% 0.0017

야구에서도 결측 상대 위치가 균일분포와 다르고(KS p≈0), 갭은 평소의 1.91배로 움직이는 프레임에서 시작한다.

A-1은 정답이 있을 확률이 가장 높은 구간에서 후보를 제거한다.

이것이 모든 관측을 한 번에 설명한다 — 야구 impact 84.3% 이동(중앙 33프레임), proxy 거리 13→32 악화, 축구는 0/16 무변화(결측 10개가 argmax와 인접하지 않았다).

되돌리는 이유

  • 검증할 정답이 없다. 야구 84.3% 이동의 정당성을 확인할 독립 정답이 없고, 확보 경로도 전부 막혔다(아래).
  • GATE_JOINTS의 손목 면제 결정과 충돌한다. 제거의 92.5%가 손목 관여, 72.5%는 손목만이다. 품질 게이트에서 일부러 면제한 엄격성을 신호 계산 단계에서 되살리는 셈이다.
  • 기존 평가의 기준선이 흔들린다. B-2·B-3·B-4·B-6 평가는 전부 되돌린 상태를 기준선으로 수행됐다.
  • 얻는 것이 작다. 야구 extension_peak 45.6%→46.3%(+23건), 농구 −1건.

조건부 적용(결측률이 높은 클립에만)도 근거가 없었다 — 영향이 결측률 전 구간에 균일하다(야구 이동 83.6~85.9%).

되돌려서 남는 문제

오염된 velocity가 argmax를 이기는 사례는 그대로 남는다. 합성 픽스처와 농구 실클립(f68→f69)에서 확인된 것이다. 알고 남기는 것이며 기존 평가 기준선이다.

남은 근본 문제

이번 작업이 드러낸 것은 마스크 조정으로 풀 수 없는 모순이다.

손목을 품질 게이트에서 면제하면서(GATE_JOINTS), 손목으로 계산한 팔꿈치 각도를 신호로 쓴다(chain_series).

손목을 마스크에서 빼면 망가진 좌표로 각도를 계산하게 되어 오염이 그대로 돌아온다. 신호 정의 자체를 다시 봐야 한다.

정정

축구의 contact_frame은 저장된 사람 라벨이 아니다. 공-발목 최근접에서 자동 도출한 관측 기반 참조이고 ±2프레임 불확실성이 있다(독립 근거 두 개의 ±1 일치가 18건 중 9건). 이전 글들에서 “유일한 정답”으로 적은 것은 과했다.

닫은 경로 — 다시 조사하지 않는다

경로 결과
PitcherMotion 81컬럼 이벤트 주석 없음
normalised_frame == 0 릴리스 아님 (표본 260 검증)
Statcast companion 프레임 인덱스·타임스탬프 없음, 매핑 불가
UCF101 클립 단위 라벨만, 공 검출 0건
외부 공개 데이터셋 Grade A 없음. UPLIFT(영상 없음), MultiSports(행동 구간이지 릴리스 아님 + 게이트 + CC BY-NC), Penn Action(이벤트 없음), BBDB(구간 라벨)
축구 표본 확대 필요 97~714클립 대비 확보 상한 38. leg 종목이라 팔 종목 효과 크기를 예측 못 함
인위적 결합 가설 proxy가 conf ≥ 0.6 필터로 인공물 프레임을 구조적으로 배제 → 이 지표로 검정 불가
offline 재분석 정답 없이 답할 수 있는 질문은 소진

재개 조건

팔 종목 릴리스 프레임 정답 25~60클립. 필요량을 충족할 수 있는 유일한 경로는 자체 촬영이고, 30fps 이상 · 릴리스가 화면에 남는 조건이 필요하다.

후속 검토 대상 (지금은 하지 않는다)

갭 경계 단측 차분 — 제거된 후보의 84.4%가 정의 가능하다. 다만 단측차분이 중심차분보다 1.184배 크다는 스케일 편향이 선결 과제다. 축구 참조에서 3/16 변화, 13_freekick이 +5→0으로 적중했으나 n이 부족해 근거가 아니다.