안녕하세요, 메이아이의 Lead Researcher 박진우입니다.
지난 ‘daram과 함께하는 딥러닝 투어(1)' 포스팅에서는 물체 인식의 전반적인 내용과 함께, 메이아이의 인공지능 엔진 daram의 물체 인식 모델의 특징을 소개해 드렸습니다. 1편의 내용을 간단히 요약하자면 물체 인식(Object Detection) 기술이란 이미지 하나에서 타겟 물체들의 위치를 바운딩 박스(bbox) 형식으로 찾는 것이라고 할 수 있는데요. 물체 인식 모델의 대표적인 예시로는 Faster R-CNN과 같은 Two-stage Detector와 YOLO와 같은 One-stage Detector 두 가지가 있고, 메이아이에서는 속도, False Positive, Pose Estimation과 같은 문제의식을 바탕으로 물체 인식 기술을 지속적으로 연구하고 있다는 점을 공개했습니다. 기존에 딥러닝과 친숙하지 않으셨던 분들도 물체 인식이라는 분야와 daram에 대해 조금 더 쉽게 다가갈 수 있는 기회가 되셨을 것이라고 생각합니다.
이번 포스팅에서는 물체 인식과 함께 방문객 분석의 핵심을 이루고, 특히 분석 모듈의 계수 정확도에 매우 직접적인 영향을 끼치는 물체 추적(Object Tracking) 기술에 대해 소개하겠습니다.
Object Tracking 소개
지난 1편에서 소개한 daram의 근간을 이루는 물체 인식, 이 기술만으로도 충분히 간단한 수준의 오프라인 공간 분석을 구현할 수 있습니다. 예를 들어 단순히 지금 어떤 공간이 혼잡한 지 알고 싶다면 일정 시간 간격으로 방문객 인식 인공지능 모델을 적용한 다음 몇 개의 물체(=몇 명의 방문객)가 화면 내 존재하는지를 세기만 하면 됩니다. 물론 엄밀하게 말하자면 혼잡도라는 것은 인원수뿐만이 아니라 공간 면적과의 관련성 등 더 신경 써야 할 부분들은 있습니다만. 근본적으로는 물체 인식 기술만 가지고도 어느 정도 제품의 뼈대를 만들 수 있는 것이죠.
하지만 혼잡도 분석을 넘어 좀 더 고차원적인 분석을 시도하고자 할 때는 물체 인식 기술만으로는 부족함을 느끼게 됩니다. 앞서 살펴 본 혼잡도 분석의 경우, 평균적인 인원이라던가 경향성을 알아보기에는 충분하겠지만 좀 더 다양하고 정확한 인사이트를 얻기 위해서는 경향성보다 실제 모수, 즉 고유한 방문객의 수를 파악하길 원합니다. 또한 정지 상황보다는 시간적인 흐름면의 특성이 추가적으로 필요하게 됩니다. 예를 들면 특정 구역에 체류하는 방문객을 분석하는 케이스에서 물체 인식 기술을 이용하게 되면 매 순간마다 구역에 N명이 있었다는 사실은 알 수 있겠습니다만. 동일한 N명이 계속 한 구역에 체류하고 있는 것인지, 아니면 서로 다른 사람들이 한 구역에 들어오고 나가는 것을 반복하면서 숫자를 유지하고 있는 건지 구별할 수 없습니다.
이를 구별하기 위해서는 각각의 인식된 물체들이 서로 다른 물체인지 같은 물체인지 알 수 있어야 하는데, 이를 해결하기 위해 등장한 것이 물체 추적 기술입니다. 물체 추적 기술의 역할은 여러 프레임(이미지)에 걸쳐 인식된 물체(박스)들 중 실제로 동일한 물체들에게 동일한 고유 번호를 붙이는 것입니다. ‘추적’이라는 용어에서 알 수 있듯이 일반적으로는 '동일 공간(영상)에서 연속적인 프레임끼리의 물체들을 비교해서 동일성 여부를 따지는 경우'를 보통 물체 추적이라 통칭합니다.
물체 추적 기술도 물체 인식 기술과 같이 매우 다양한 솔루션이 제시되었습니다. 이 글에서는 일반적으로 가장 대표적인 Object Tracker로 소개되는 SORT에 대해서 간단하게 소개하고, 이를 변형한 Deep SORT, 마지막으로는 오프라인 공간 분석에서 자주 등장하는 Object Tracker의 이슈에 대해서 살펴보겠습니다.
대표적인 Object Tracker 소개
물체 추적의 대표적인 원리를 알아보기 위해, 실제 사람이 어떻게 움직이는 물체를 계속 추적하는지를 떠올려 봅시다. 예를 들어 도로를 달리는 차가 있을 때, 저희는 한 번 그 물체를 인지한 다음 물체의 움직임을 따라 해당 물체를 찾는 일을 지속합니다. 이를 좀 더 알고리즘처럼 순서대로 단계를 나누어보면 아래와 같습니다.
- 일단 추적할 물체를 찾아서 추적 대상으로 설정한다.
- 해당 물체의 움직임을 바탕으로 다음 위치를 예측한다.
- 이를 바탕으로 그 다음 시점(시간축)에서 해당 물체를 찾아 동일 물체라고 인식한다.
가장 대표적인 Object Tracker인 SORT (Simple Online Realtime Tracker)도 위와 같은 과정을 수행하는 것이라고 볼 수 있습니다. 다만 잠시 해당 과정에 대해 살펴보기 전에, 물체 추적 과정 중 자주 언급되는 트랙렛(Tracklet)이라는 개념에 대해 먼저 소개해 드린 후에 실제 SORT의 동작에 대해서 살펴보기로 하겠습니다.
트랙렛(Tracklet)
트랙렛(Tracklet)은 Object Tracking 분야에서 사용되는 개념으로, 동일한 물체의 detection들을 시간에 따라 모아놓은 개념입니다. 즉, 위와 같은 그림에서 같은 색으로 표시된 물체 바운딩 박스를 순서대로 모아놓으면 각각 노란색, 초록색, 파란색으로만 이루어진 세 개의 배열(sequence)가 만들어지게 되는데, 이 배열들을 트랙렛이라고 부릅니다. 물체 추적 기술 자체의 목적이 주어진 물체 인식 결과들을 입력받아 각각 고유한 추적 id를 부여받은 트랙렛으로 생성하는 모듈이라고 생각하시면 이해하시기에 편하실 것 같습니다.
다만 여기서 주의해야 할 점은, 각각의 트랙렛들이 꼭 하나의 고유한 인물을 나타내는 것은 아니라는 점입니다. 물체 추적 정확도가 100% 라면 하나의 트랙렛은 곧 한 명의 고유 인물을 뜻하는 것이겠지만, 실제로는 아직 완벽한 Object Tracker라는 것이 세상에 없기 때문에 위의 그림처럼 서로 겹치는 등의 오류가 발생하면 하나의 트랙렛 안에서도 서로 다른 사람이 섞이게 될 수 있습니다. 혹은 한 명의 고유한 사람이더라도, 추적을 실패해서 두 개의 트랙렛으로 끊기게 되는 오류도 발생합니다. 다르게 말하자면, 좋은 Tracker를 만드는 입장에서는 Tracker 결과로 나온 트랙렛들이 최대한 실제 고유한 사람을 나타낼 수 있도록 만드는 것이 궁극적인 목표라 할 수 있겠습니다.
SORT (Simple Online and Realtime Tracking)
트랙렛에 대해 잠시 살펴보았으니 본래의 목적이었던 물체 추적 원리에 대해 설명드리도록 하겠습니다. SORT는 2017년 개발된 다중 물체 추적 (Multi-Object Tracker) 기술로, 간단한 알고리즘으로 효과적이면서 매우 빠른 속도를 가진 대표적인 Object Tracker입니다.
SORT의 작동 원리는 앞서 설명드린 것과 같이 일단 추적할 물체를 찾고, 해당 물체의 움직임을 바탕으로 다음 위치를 예측한 다음, 이를 바탕으로 다음 시점에서 해당 물체를 찾아 동일 물체로 연결하는 과정으로 이루어져 있습니다.
첫 번째 스텝인 추적할 물체를 찾는 것은 사실 물체 추적 단계의 일이라기보다는, 지난 포스트에서 살펴보았던 물체 인식 모델을 사용해서 이미지 별로 물체 인식 결과(detection bbox)를 찾는 것입니다. Object Tracker는 입력받은 해당 물체 인식 결과 중 특정 조건에 맞는 물체 인식 결과들을 선정하여 물체 추적 대상, 즉 트랙렛으로 지정합니다. 이때 참고하는 트랙렛 생성 조건은 추후 별도로 설명할 예정입니다.
두 번째 과정인 추적 대상의 다음 위치 예측 스텝이 사실상 SORT 알고리즘의 핵심이라고 볼 수 있는데요, 여기서 소개되는 것이 칼만 필터(Kalman Filter)라는 도구입니다. 칼만 필터는 제어 공학과 같은 분야에서 많이 사용되는 선형 필터인데요. 간단히 설명하자면 '이전에 입력되었던 입력값들'을 바탕으로 '다음에 나올 값을 예측'하는 하나의 공학적 도구라고 설명할 수 있습니다. SORT에서는 이 칼만 필터를 바탕으로, 현재 추적 대상으로 설정되어 있는 각각의 트랙렛들에서 지금까지의 위치들을 바탕으로 이 트랙렛으로 설정된 물체의 다음 위치를 박스 형태로 예측하게 합니다. 어떻게 보면 물체의 이전 위치와 그동안의 속도를 기반으로 0.1초 후의 위치를 예측한다고 보시면 될 것 같습니다.
마지막 단계는 앞서 말씀드렸듯이 이렇게 예측한 위치에 실제로 그 트랙렛에 해당하는 물체가 있는지를 찾는 과정입니다. 사실 바로 전에 언급한 바의 의미와 완전히 동일하게 동작하려면 칼만 필터로 예측한 공간에 실제 어떤 물체가 존재하는지를 살펴보면 될 것 같지만, 실제 SORT는 그렇게 동작하지는 않습니다. SORT에서는 미리 찾아 놓은 물체 인식 결과를 나열한 다음, 칼만 필터로 예측한 물체들과 동일한 물체들인지 위치를 비교해서 알맞은 트랙렛들에 일대일로 할당하는 방법을 사용합니다. 여기서 만약 물체 인식 결과들 중 트랙렛과 이어지지 않은 경우에는 물체 인식의 오류에 대해 물체 인식 점수를 바탕으로 체크한 다음, 실제 존재하는 물체라고 생각되는 경우에는 첫 번째 스텝에서 했던 것처럼 새로운 트랙렛, 즉 추적 대상으로 설정하게 됩니다.
SORT에서는 위의 세 단계를 통해 새로운 트랙렛을 생성하고, 다음 입력되는 프레임들에서 트랙렛들에 할당하고, 만약 일정 시간 동안 새로운 프레임에서 할당이 이루어지지 않은 경우 트랙렛을 없애는 과정들을 반복하면서 물체 추적을 진행합니다.
Deep SORT
SORT의 경우에는 각 트랙렛 별로 다음 위치를 예측한 다음, 실제로 인식된 물체들과 위치를 비교해서 동일한 물체인지 여부를 파악하게 됩니다. 하지만 이 결과를 신뢰하기 위해서는 칼만 필터가 트랙렛들의 다음 위치를 정확하게 예측할 수 있다는 전제가 필요한데요. 사실 칼만 필터 자체는 ‘선형'적인 예측을 하기 때문에 ‘비선형’적인, 즉 움직임에 급격한 변화가 있는 경우 등에서는 물체의 다음 위치를 잘 예측하지 못합니다. 또한 사람이 매우 많거나 혹은 약간의 장애물 등으로 인해 물체가 인식되지 않을 수도 있고, 아니면 여러 사람이 비슷한 위치에 겹치게 되는 경우에도 위치 상 구분이 되지 않는 등. 많은 요인들에 의해 트랙렛이 잘 연결되지 않는 등 일련의 문제들이 발생하게 됩니다.
이를 해결하기 위해 Deep SORT에서는 위치 이외에도 물체의 외형적인 모습을 비교해서 트랙렛에 할당하는 원리를 택했습니다. Deep SORT에서는 물체의 외형적인 모습을 추출하기 위해 재식별(Re-Identification)이라는 기술을 사용하는데요, 해당 기술은 이미지를 입력받아 이를 특별한 코드(벡터)로 나타내는 역할을 합니다. 쉽게 예시를 드리자면, [남성-빨강 상의-청바지]의 외형을 가진 사람을 [0–1–0–0–0–0–1], [여성-노란 상의-검은 바지]의 외형을 가진 사람을 [1–1–1–0–0–0–0]과 같이 나타내는 느낌입니다.
Deep SORT의 작동 원리는 앞서 살펴 본 SORT와 거의 같습니다. 다만 각각의 트랙렛들에서 위치 정보만을 기억하는 것이 아니라 외형적인 정보도 기억하고 있다가, 세 번째 스텝에서 예측 위치와 실제 위치를 비교하는 것뿐만 아니라 그전까지 관측되었던 외형적 특징과 새로 인식된 물체들의 외형적 특징이 비슷한 지 여부도 살펴보게 됩니다. 이렇게 외형적 특징을 비교하게 되면 장애물 등에 의해 약간 가려져서 예측 위치보다 좀 더 많이 떨어진 곳에 등장하는 경우에도 물체 추적을 쉽게 이어갈 수 있습니다. 혹은 한 사람이 다른 사람을 완전히 가리는 경우에도 위치 상으로는 두 사람의 구분이 힘들지만, 외형 상으로는 두 트랙렛 후보 중 하나를 더 쉽게 선택할 수 있으므로 추적 성능이 향상될 수 있습니다.
기타
SORT와 Deep SORT는 이전 프레임의 정보를 바탕으로 다음 프레임의 추적 결과를 결정하게 되며, 이렇게 동작하는 Object Tracker들을 온라인(on-line) Tracker라고 부릅니다. 하지만 사실 생각해 보면, 이렇게 이전 프레임만 고려하는 것이 아니라 그냥 영상 전체를 통째로 놓고 추적 결과들을 찾는 방안들도 고려할 수 있을 텐데요. 이렇게 동작하는 Tracker들을 오프라인(off-line) Tracker라고 부릅니다. 온라인 Tracker와 오프라인 Tracker 간에 큰 성능 차이는 없습니다만, 물체 추적 기술의 활용 방법에 따라서 온라인과 오프라인 방식을 선택해야 하는 경우가 있습니다. 예를 들면, 만약 영상 스트리밍 상황에서 실시간으로 물체 추적을 진행해야 하는 경우에서는 오프라인 Tracker를 이용하는 것이 불가능하므로 온라인 Tracker를 사용해야 합니다.
본 편에서 주로 다뤘던 SORT와 Deep SORT에서는 사실 딥러닝 모델이 활약하는 부분이 적은 편입니다. 기껏해야 Deep SORT에서 Re-ID 모델을 같이 사용하는 경우이니까요. 이후에도 Object Tracker 분야에서 많은 연구가 진행되면서 칼만 필터를 대신해 LSTM과 같은 딥러닝 모델을 이용하여 예측을 진행하던가, 혹은 Detector와 Tracker를 합쳐서 한 번에 진행하는 기술과 같이 딥러닝 기술을 적극적으로 활용하는 다양한 Object Tracker들이 제시되었습니다.
이런 새로운 Tracker들에 어떤 것들이 있는지 궁금하다면, 가장 널리 알려져 있는 Object Tracking 대회(벤치마크)인 MOT Challenge의 리더보드에서 연구들을 검색해 보는 것도 추천드립니다.
오프라인 분석에서의 Object Tracking
앞의 내용에서 인공지능 분야의 일반적인 물체 추적 연구들에 대해 살펴봤다면, 마지막으로는 오프라인 공간 분석에서의 물체 추적에서 생기는 어려움들에 대해서 잠시 소개해 보겠습니다.
ID Switching (IDSW)
ID Switching(IDSW)이란 트랙렛들의 ID가 서로 뒤바뀐다는 직관적 의미와 더불어 트랙렛이 원래 추적 대상으로 삼고 있던 인물에서 다른 인물을 추적한다는 의미도 내포하고 있습니다. 이 과정에서 동일 트랙렛에 할당 중이던 고유 번호(ID)가 바뀐다는 의미에서 ID Switching이라는 표현을 사용하게 되었습니다.
다년간 오프라인 공간 분석을 진행하면서 가장 빈번하게 보는 추적 오류가 바로 IDSW인데요, 대부분의 경우 특정 공간에 방문한 사람들이 많거나 혹은 카메라 화각 상 사람과 사람끼리의 겹침(Occlusion)이 일어나기 쉬운 경우 발생하게 됩니다. 앞서 말씀드렸던 Deep SORT 방법론을 통해 이 현상을 어느 정도 완화할 수는 있지만, 그럼에도 불구하고 너무 심하게 겹쳐 형체를 잘 알아볼 수 없는 경우 등과 같이 실제 상황에서는 Deep SORT만으로는 충분하지 않은 경우가 많습니다.
Tracklet Fragments
Tracklet Fragments는 모종의 이유로 인해 실제 물체는 아직 영상 내에 존재하는데, 트랙렛이 추적을 실패하여 한 물체가 여러 개의 트랙렛으로 분리되는 단위를 뜻합니다. 이러한 Fragment들이 발생하는 이유에는 크게 두 가지가 있는데, 첫 번째는 갑자기 움직임이 빨라지거나 순간 장애물 등에 가려져서 다음에 인식되는 위치가 급격하게 변하는 경우에 발생하며, 또는 마찬가지로 가려지거나 주위 환경이 갑자기 변하는 등 외형적인 특성이 순식간에 변하는 것이 원인이 됩니다.
Tracklet Fragment는 방문객 계수와 같은 상황에서는 큰 문제가 되지는 않지만, 구역 분석과 같은 상황에서는 '체류'의 개념이 존재하는 만큼 정확도에 영향을 끼칩니다. 메이아이에서는 물체 추적 과정에서 기존보다 좀 더 장기적인 범위의 예측을 포함하는 등의 연구를 통해 이러한 Tracklet Fragment를 지속적으로 감소시키고 있습니다.
Multi-Camera Tracking
지금까지 설명드렸던 Object Tracking은 하나의 영상에 등장하는 범위 내에서만 물체 추적을 진행했습니다. 하지만 실제 오프라인 공간의 분석을 진행하게 되는 경우, 하나의 공간 내에서 진행할 수 있는 분석의 종류에는 한계가 많습니다. 좀 더 고도화된 분석을 원할수록, 하나의 공간이 아니라 여러 개의 공간 혹은 구역에 걸쳐 연계된 데이터를 바탕으로 오프라인 공간을 분석하기를 희망합니다.
이러한 데이터를 얻기 위해서는 하나가 아닌 여러 영상 내에서 동일한 물체를 추적하는 기술이 필요합니다. 이 기술을 학술적으로는 Multi-Camera Tracking이라고 합니다. (메이아이에서는 편의를 위해 Full-Tracking이라고 부르고 있습니다) Multi-Camera Tracking의 경우 Object Tracking과 동일하게 물체들의 위치와 물체의 외형 등을 참고하여 서로 같은 물체임을 판별하게 되는데요. 하나의 영상 내에서 이뤄지는 물체 추적보다 좀 더 큰 간격의 시간/공간/외형 차가 발생할 확률이 크기 때문에 상대적으로 어려운 기술입니다.
마치며
지금까지 물체 추적의 전반적인 내용과 함께, 실제 오프라인 공간에서 발생하는 물체 추적 모델 오류 케이스와 간단한 해결책까지 소개해 드렸습니다.
다음 글에서는 Multi-Camera Tracking의 핵심 기술이자, Object Tracker에서도 중요한 역할을 맡아 이번 글에서 잠시 소개 드렸던 재식별(Re-ID) 기술에 대해서 설명드리겠습니다.