생활 속 응용수학 01

댕댕이 네 마리로 공부하는 다중 객체 추적

탐지 · 예측 · 표현 · 매칭 · 갱신

다중 객체 추적(Multi-Object Tracking)을 내가 길가다 직접 찍은 댕댕이 네 마리 사진으로 풀어볼거임.
두 장의 사진을 시점이 있는 데이터로 바꾸면, 평범한 장면 안에서도 개체를 찾고, 다음 위치를 예측하고, 생김새를 숫자로 바꾸고, 누가 누구인지 연결하는 과정에 대해 생각할 수 있숨니다.

Two observations

두 시점의 관측 사진

철망 안에 노란색 개들과 검정색 개 한 마리가 보이는 첫 번째 관측 사진
관측 1 — 시점 t
같은 공간에서 네 마리의 위치가 달라진 두 번째 관측 사진
관측 2 — 시점 t+1

버스 타러 가는 길에 직접 찍은 거임. 기엽죠

01 사진을 데이터로 바꾸기

사진을 데이터로 읽는 첫 단계는 “무엇을 기록할 것인가”를 정하는 일이다. 여기서는 각 관측을 시점, 대략적 위치, 털색 계열, 몸 방향, 가림 정도, 출입문과의 관계로 정리할 수 있다. 분석 편의를 위해 노란색 후보에는 Y1·Y2·Y3, 검정색 후보에는 B1이라는 가상 라벨을 붙이겠다.

개체 수
총 4마리
털색 범주
노란색 계열 3마리, 검정색 1마리
시점
서로 다른 두 순간, 정확한 간격은 알 수 없음
변화
위치와 몸 방향이 달라짐
구조물
철망과 출입문이 관측됨
확정 불가
속도, 정확한 거리, 시선, 개별 신원

수학적 모델

관측 한 건을 기록으로 압축하기

zi,t = (시점 t, 위치 후보, 털색 범주, 몸 방향, 가림 상태, 출입문 관계)

The pipeline

추적 과정 한눈에 보기

다중 객체 추적은 한 번에 끝나는 계산이 아니라, 매 프레임 반복되는 다섯 단계의 순환이다. 사진 한 장에서 개체를 찾고(탐지), 다음 위치를 추측하고(예측), 생김새를 숫자로 바꾸고 (표현), 두 시점의 개체를 잇고(매칭), 그 결과로 다음 예측을 다듬는다(갱신). 아래 각 단계는 이어지는 본문에서 하나씩 풀어 설명한다.

  1. STEP 1 탐지 한 프레임에서 개가 몇 마리, 어디에 있는지 찾는다.
  2. STEP 2 예측 칼만 필터로 다음 프레임의 위치를 추측한다.
  3. STEP 3 표현 각 개를 생김새 벡터(임베딩)로 바꾼다.
  4. STEP 4 매칭 헝가리안 할당으로 누가 누구인지 잇는다.
  5. STEP 5 갱신 이어진 결과로 상태를 보정하고 다시 반복한다.

02 탐지: 찾는 것과 안 보이는 것

탐지는 사진 한 장에서 “여기 개가 네 마리 있다”를 찾는 일이다. 프레임 단위 문제이며, 이어지는 예측·매칭과 달리 시간을 다루지 않는다. 문제는 탐지가 항상 성공하지 않는다는 점이다. 검정색 후보 B1은 개집 입구 부근의 어두운 영역에 있고, 다른 개체·구조물·그늘에 일부 가려질 수 있다.

수학적 모델

미검출은 부재의 확정이 아니다

P(존재하지 않음 | 검출되지 않음) ≠ 1

검출 실패는 그늘, 다른 개체에 의한 가림, 철망이나 구조물의 부분 가림, 카메라 각도, 낮은 명암 대비 때문에 생길 수 있다. “사진에 없음”은 관측 결과이고, “현장에 없음”은 존재에 관한 판단이다. 이 가림 문제는 뒤의 예측 단계가 왜 필요한지를 설명한다. 잠깐 안 보이는 개체를 놓치지 않으려면, 보이지 않는 동안에도 위치를 추측할 장치가 있어야 한다.

03 예측: 칼만 필터로 다음 위치 추측하기

탐지가 잠깐 실패해도 궤적이 끊기지 않게 하려면, 개체가 다음에 어디 있을지 미리 추측해야 한다. 칼만 필터는 불확실한 예측과 불확실한 관측을 섞어 둘 각각보다 나은 추정을 만드는 방법이다. 예측도 관측도 완벽하지 않다는 전제에서 출발해, 더 믿을 만한 쪽에 무게를 더 준다.

개 한 마리의 상태를 위치와 속도로 잡는다. “지금 (x, y)에 있고 (vx, vy)로 움직이는 중” 이라는 요약이다. 칼만 필터는 매 프레임 예측보정 두 동작을 반복한다.

수학적 모델

예측하고, 관측으로 보정하기

예측 위치 = 이전 위치 + 속도 × Δt

최종 추정 = 예측 + K × (관측 − 예측)

예측
이전 상태로 계산한 이번 위치. 실제로 못 봤으므로 불확실성이 커진다
관측
이번 프레임에서 탐지기가 실제로 찾은 위치
K
칼만 이득. 예측과 관측 중 무엇을 더 믿을지 정하는 가중치(0~1)
K는 어떻게 정해질까?

K는 자동으로 정해진다. 탐지가 선명하면(관측 불확실성이 낮으면) K가 커져 관측 쪽으로 끌려가고, 탐지가 흐리면(창살에 가려 부정확하면) K가 작아져 예측을 더 붙든다. 그래서 개가 철망 뒤에 잠깐 가려져도 “아까 이 속도로 갔으니 지금 여기쯤” 하는 예측이 궤적을 이어준다. 보정하고 나면 실제로 봤으므로 불확실성이 다시 줄어든다. 넓어졌다 좁아졌다를 반복하며 참값 근처를 따라간다.

04 표현: 생김새를 벡터로 바꾸기

칼만 필터는 위치로만 개를 잇는다. 그런데 개 두 마리가 교차하면 위치가 겹쳐 위치만으로는 구별이 안 된다. 그때 필요한 것이 생김새 비교다. 문제는 컴퓨터가 “생김새”를 직접 다루지 못한다는 점이다. 이미지는 픽셀 덩어리라 각도만 살짝 달라도 완전히 다른 그림이 된다. 그래서 각 개를 고정 길이 숫자 줄로 바꾼다. 이 숫자 줄이 임베딩(특징 벡터)이다.

수학적 모델

정체성만 남기는 압축과 코사인 거리

e = (e1, e2, …, e128)

유사도 = cos(ea, eb) ∈ [−1, 1]

e
한 개체를 나타내는 128개 안팎의 실수 벡터
가까움
같은 댕댕이는 각도·조명이 달라도 벡터가 비슷하게 나옴
다른 개는 색·털·체형 차이로 벡터가 멀리 떨어짐
128개 숫자는 누가 정하나?

사람이 정하지 않는다. 신경망이 학습으로 찾는다. 기준 사진 하나, 같은 댕의 다른 사진, 다른 댕 사진을 함께 주고 “기준과 같은 댕은 가깝게, 다른 댕은 멀게”를 수없이 반복하면, 신경망이 스스로 정체성을 결정하는 특징을 뽑아낸다. 무엇이 정체성인지의 정의를 사람이 주지 않고 데이터가 정하게 하는 이 방식을 표현 학습이라 한다. 문서를 벡터로 바꿔 비슷한 문서를 찾는 검색 기술과 같은 연산이며, 대상이 문장에서 댕댕쟝으로 바뀐 것뿐임

임베딩은 이미지에서 정체성만 뽑고 각도·조명·배경은 버리는 압축이다. 그래서 위치가 겹쳐도 (칼만이 애매해도) 생김새가 다르면(임베딩이 확실하면) 구별되고, 그 반대도 성립한다. 두 축이 서로의 약점을 메운다. 다만 이 사진의 노란색 세 마리는 서로 벡터가 비슷해 임베딩도 큰 도움이 되지 않는 반면, 검정색 한 마리는 벡터가 확 달라 쉽게 구별된다.

05 매칭: 누가 누구인지 잇는 할당문제

이제 위치(칼만)와 생김새(임베딩)를 합쳐 “시점 1의 개체 i와 시점 2의 개체 j가 같은가”를 비용으로 만든다. 비용이 낮을수록 같은 댕댕이일 가능성이 높다. 시점 1의 각 댕댕이를 시점 2의 각 댕댕에 일대일로 잇되, 전체 비용의 합이 가장 작아지는 연결을 찾는 일을 할당문제라고 함

수학적 모델

매칭 비용과 전체 최소비용 할당

cij = α × 위치 차이 + β × 외형 차이 + γ × 방향 차이

π* = arg minπ Σi ci,π(i)

위치 차이
칼만 예측과 관측의 거리에서 온다
외형 차이
임베딩 벡터의 코사인 거리에서 온다
α, β, γ
위치·외형·방향 단서를 얼마나 중요하게 볼지 정하는 가중치
π
시점 1의 각 개체를 시점 2의 후보 하나에 대응시키는 전체 배치
왜 가장 가까운 개체만 고르면 안 될까?

각 개체가 제각각 가장 가까운 후보를 고르면 두 개의 표식이 한 후보에 겹칠 수 있다. 지금 제일 싼 짝을 성급히 고르면 남은 것들이 억지로 비싼 짝을 맺어 총합이 더 커지기도 한다. 할당문제는 이 국소적 유혹을 참고, 한 후보를 중복 사용하지 않으면서 비용 합이 가장 작은 일대일 연결을 찾는다. 헝가리안 알고리즘은 이런 최소비용 할당을 푸는 대표적 방법

06 헝가리안 4단계: 0을 못 고를 때 더 만들기

헝가리안은 먼저 각 행에서 그 행의 최솟값을, 각 열에서 그 열의 최솟값을 뺀다. 어떤 행이나 열 전체에서 같은 값을 빼도 최적 배정의 정답은 바뀌지 않기 때문이다. 이렇게 하면 행마다, 열마다 0이 생긴다. 그 다음 서로 다른 행·열의 0을 n개 고르면 그게 정답이다. 문제는 0이 몇 행이나 몇 열에 몰려 있어 n개를 못 고르는 경우다. 이때 0을 더 만드는 보정이 아래 네 단계다.

  1. 모든 0을 최소 개수의 선으로 덮는다. 가로선·세로선으로 모든 0을 덮되, 선의 개수가 최소가 되게 한다.
  2. 선의 개수를 센다. 선이 n개이면 서로 겹치지 않는 0을 n개 고를 수 있는 상태이므로 정답을 고르고 종료한다. n보다 적으면 아직 막힌 것이다.
  3. 안 덮인 칸의 최솟값 d를 찾는다. 선에 덮이지 않은 칸들 중 가장 작은 값을 d로 둔다.
  4. 보정한다. 안 덮인 칸은 d를 빼고(여기서 새 0이 생김), 두 선이 교차한 칸은 d를 더하고, 한 번만 덮인 칸은 그대로 둔다. 그런 뒤 다시 2번으로 돌아간다.

이 보정은 안 덮인 영역에 새 0을 만들면서도 이미 만든 0은 망가뜨리지 않는다. 반복할 때마다 덮개 선이 늘어나 결국 n개에 도달하고, 유한 번에 반드시 끝난다. 아래는 행·열 빼기를 끝낸 뒤 0(강조 칸)이 두 열에 몰려 막힌 상황의 예시다. 열1과 열3에 선 두 개만으로 모든 0이 덮이므로 선이 n=4에 못 미쳐, 보정이 한 번 더 필요하다.

열1 열2 열3 열4
행1 0735
행2 0462
행3 8503
행4 6904

07 행정 업무분장으로 번역하면

매칭은 “여러 대상을 서로 겹치지 않게 일대일로 잇되 전체 비용을 최소화”하는 할당문제였다. 이 구조는 행정실 업무분장과 그대로 겹친다. 담당자 N명을 업무 N개에 배정할 때, 각 담당자와 업무의 적합도를 비용으로 두면 “총 비용이 가장 작은 배정”이 곧 헝가리안이 푸는 문제가 된다. 댕 추적과 업무분장이 수학적으로는 같은 틀 위에 있는 셈이다.

추적 개념 행정업무의 대응 구조
비슷한 노란 개체의 매칭 실패(ID 스위치) 동명이인·중복 데이터의 동일인 식별 오류
검정색 개체의 미검출 자료 누락과 실제 부재의 구분
칼만 예측(가려져도 위치 유지) 담당자 공백기의 업무 연속성·인수인계
헝가리안 최소비용 할당 담당자↔업무의 일대일 배정
비용 표의 품질이 결과를 좌우 적합도 데이터가 없으면 배정 근거도 없음

다만 여기서 결정적인 차이가 있다. 헝가리안을 돌리려면 “이 담당자가 이 업무에 맞는 정도” 가 숫자로 존재해야 한다. 그런데 실제 업무분장에는 이 비용 표가 없다. 업무는 이름만 나열될 뿐 반복주기·마감월·선행업무·필요 지식 같은 속성으로 정리돼 있지 않고, 사람의 적합도 역시 데이터화돼 있지 않다. 그래서 최적화가 아니라 경험과 관계에 기댄 배정이 된다. 알고리즘이 어려워서가 아니라, 알고리즘에 넣을 입력이 비어 있기 때문이다.

게다가 업무는 서로 독립적이지도 않다. 급여와 4대보험을 한 사람이 함께 맡으면 시너지가 나고 나누면 인수인계 비용이 생긴다. 한 사람에게 마감이 겹치는 고부하 업무가 몰리면 특정 시기에 몰리는 게 생긴다. 이런 묶음 효과와 부하 불균형까지 담으려면 단순 일대일 할당을 넘어서는 모형이 필요하다.

08 결론: 데이터 입력이 중요

이 사진이 알려주는 가장 중요한 수학은 복잡한 공식 자체가 아니다. “안 보인다”와 “없다”, “비슷하다”와 “같다”, “최적 알고리즘이 있다”와 “최적화할 데이터가 있다”를 구분하는 일이다. 추적 파이프라인은 탐지·예측·표현·매칭·갱신으로 이어지지만, 각 단계의 품질은 얼마나 좋은 입력을 넣느냐에 달려 있다.

실제로 사진 속 개체를 정확히 식별하려면 고유한 목걸이 표식, RFID, 연속 영상, 다각도 촬영처럼 추가 정보가 필요하다. 업무분장을 실제로 최적화하려면 업무 속성과 적합도라는 비용 표가 먼저 있어야 한다. 두 경우 모두, 알고리즘보다 데이터가 먼저다. 두 장의 사진만으로 할 수 있는 일은 후보를 만들고, 불확실성을 표시하고, 다음에 무엇을 더 모아야 하는지 정하는 데까지다.

결론: 최적의 배정 알고리즘보다, 배정에 넣을 비용 데이터가 먼저다. 끗.

Interactive appendix

직접 계산해보기

2×2 헝가리안 할당 계산기

시점 1의 두 개체(A·B)를 시점 2의 두 후보(1·2)에 잇는 비용 네 개를 넣으면, 전체 비용이 가장 작은 일대일 배정을 찾는다.

비용은 0 이상의 숫자다. 낮을수록 같은 개체일 가능성이 높다는 뜻으로 해석한다.

계산 결과

아직 계산하지 않았습니다.

2×2는 두 가지 배정만 비교하면 되는 가장 작은 할당문제다. 실제 추적·업무분장은 더 큰 행렬과 더 많은 제약을 다룬다.