값싼 신호로 범위를 먼저 좁힐 것
정밀한 탐지기는 그 안에서만 쓸모가 있다
풋살 하이라이트에서 골을 찾는 건 함성 소리 하나다. 정밀한 화면 신호를 붙여 봤지만 혼자서는 재현율 20%를 넘지 못했고, 오디오가 좁혀 준 몇 초 안에서만 쓸모가 생겼다.
긴 영상에서 장면을 자동으로 찾을 때 흔한 순서는 정밀한 탐지기부터 만드는 것이다. 화면을 보고, 대상을 추적하고, 임계값을 조인다. 풋살 하이라이트에서는 그 순서를 뒤집었고, 뒤집은 쪽이 이겼다.
먼저 분명히 해 둘 것이 있다. 골을 찾는 일은 처음부터 끝까지 함성 소리가 한다. 화면 신호는 나중에 붙였고 지금도 켜서 쓰지만, 하는 일은 오디오가 잡아 준 몇 초 안에서 프레임을 짚는 것뿐이다. 비전을 꺼도 하이라이트는 나오고, 오디오를 끄면 아무것도 나오지 않는다.
두 신호가 각각 무엇을 못하나
| 신호 | 아는 것 | 모르는 것 |
|---|---|---|
| 함성 소리 | 대략 언제쯤 일이 났는지 | 정확히 어느 프레임인지. 게다가 반응이라 1~3초 늦다 |
| 골대 영역 네트 흔들림 | 정확한 순간 | 그게 골인지. 혼자 두면 카메라 앞을 지나가는 사람이 더 크게 잡힌다 |
각각을 완벽하게 만들려는 시도는 둘 다 실패했다. 소리 쪽은 조용한 골을 원천적으로 못 잡고, 네트 모션만으로 전체 경기를 훑으면 27분짜리 경기에서 후보가 3,297개 나왔다. 버그를 잡아 38개로 줄여도 그 안에 골은 거의 없었다.
범위를 좁혀 주면 달라진다
순서를 나눴다. 소리가 "이쯤이야" 하고 몇 초짜리 구간을 던지면, 그 안에서만 네트 모션을 본다. 탐색 범위가 경기 전체에서 몇 초로 줄어드니 정크가 들어올 자리가 없다.
같은 알고리즘이 범위만 바뀌어 쓸모가 생겼다는 점이 중요하다. 화면 쪽을 개선한 게 아니라 어디를 볼지 정해 준 것뿐이다.
여기서 예상 못 한 게 나왔다. 소리로 잡은 골 열 건을 네트 모션이 독립적으로 똑같이 짚었다. 두 신호는 서로를 참조하지 않는다. 하나는 마이크를 보고 하나는 픽셀을 본다. 상관없는 둘이 같은 순간을 가리키니, 각각의 정확도와 무관하게 확신이 섰다.
물리도 맞았다. 네트 흔들림이 함성보다 살짝 먼저 잡힌다. 공이 소리보다 먼저 들어가니 당연한 순서인데, 이 순서가 데이터에서 그대로 나오는 걸 보고서야 탐지가 우연이 아니라는 게 확인됐다.
옮겨 쓸 수 있는 형태로
값싸고 넓게 훑는 신호를 탐지기로 삼는다. 정밀도가 떨어져도 상관없다. 이 신호가 할 일은 정답을 맞히는 게 아니라 나머지를 버리는 것이다.
정밀한 신호는 좁혀진 범위 안에서만 돌린다. 반대로 하면 정밀한 쪽이 전체를 훑느라 정크에 파묻힌다. 실제로 그렇게 해 봤고 27분 경기에서 후보가 3,297개 나왔다.
실패 방향이 겹치지 않는 신호를 고른다. 같은 원리를 쓰는 신호 둘은 같은 데서 같이 틀린다. 마이크와 픽셀처럼 물리적으로 다른 경로가 좋다.
일치를 확신의 근거로 쓴다. 두 신호가 같은 지점을 가리킨 건수를 세면, 그 자체가 파이프라인이 도는지 보는 지표가 된다.
안 되는 경우도 분명하다
신호 하나가 상수면 겹쳐도 소용없다. 골대 안에서 공을 찾는 탐지기는 잘 작동했는데, 풋살은 경기 흐름 때문에 골대 안에 여분의 공을 넣어 둔다. 값이 항상 켜져 있으니 다른 신호와 겹칠 것이 없었다. 탐지가 잘 되는 것과 그 신호가 쓸모 있는 것은 다른 문제다.