HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

발전중인 AI/영상 분석(Video Analysis)

영상 분석(Video Analysis) 이란? - Tracking ②

KM-Hana 2021. 3. 15. 19:41

*크롬으로 보시는 걸 추천드립니다*

 

"영상 분석(Video Analysis) 이란? - Tracking ① 탄"

kmhana.tistory.com/22

에 이어서, Object Tracking을 위한 딥러닝을 정리하고자 합니다.

 

원래는 전편에서 마무리 지을 생각이었으나, Object Tracking을 다룬 경험이 적다 보니, 다소 늦어졌습니다

 

nanonets.com/blog/object-tracking-deepsort/

 

DeepSORT: Deep Learning to track custom objects in a video

Learn about the theory and challenges in object tracking, how to use pre-trained object detection models to identify and count unique objects and track their trajectories over several frames using the DeepSORT algorithm.

nanonets.com

medium.com/analytics-vidhya/yolo-v3-real-time-object-tracking-with-deep-sort-4cb1294c127f

 

YOLO v3 Real-Time Object tracking with Deep SORT

Introduction

medium.com

두 사이트를 메인으로 참고하고 있으며, 대표적인 딥러닝 Tracking 논문인 Deep SORT는 논문 리뷰까지 겸하려고 합니다. 

 


Deep Regression Networks

    GOTURN :

       - Single Object Tracking을 위해서 딥러닝을 적용한 논문[GOTURN]

       - GOTURN의 목적은 Crop된 특정 객체(Object)를 단순하게 추적함

       - GOTURN은 이전 Frame과 현재 Frame을 사용하는 2 Frame 모델이다.

GOUTRN Architecture

     ● 논문 제목 : Learning to Track at 100 FPS with Deep Regression Networks

     ● GOTURN 특징 : 

       - 이전 Frame에서 예측할 대상을 Crop

       - 현재 Frame에서는 "Search Region"을 정의하여 Crop

       - Network Model은 Search Region에서, 찾고자 하는 Object를 회귀(Regress)하도록 사전에 훈련되어 있다.

       - CNN모델에서, Bounding Box의 좌표를 추정하는 Fully-Connected Layer가 뒤 따른다.

 

※ GOTURN 학습 예시

더보기

※ GOTURN 학습 예시

   ROLO - Recurrent YOLO :

       - Recurrent 딥러닝 모델을 사용한 Object Tracker [ arxiv.org/pdf/1607.05781v1.pdf ]

       - YOLO Detector와 LSTM Layer를 사용하여, 시공간에 대한 Feature를 학습

       - YOLO를 통해 Feature를 추출하고, LSTM을 통해 Bounding box를 

ROLO - Architecture

     ● ROLO 특징 : 

       - YOLO는 CNN의 Feature Extractor를 사용하여, Detection을 수행

       - YOLO의 Backbone을 재사용할 수도 있으며, 특별한 Feature Extractor를 사용할 수 도 있음

       - YOLO를 통해, Current Object와 관련된 공간정보를 함축하는 Feature를 LSTM cell로 보냄

       - LSTM cell 은 이전 상태(state) 정보도 같이 고려되며, 시공간 정보 모두를 반영함

      ▶ 성능을 크게 개선했으나, LSTM을 학습하기가 매우 어려움

 

 

Deep SORT(Simple Online Real-time Tracker)

       - Deep SORT(Simple Online Real-time Tracker)는 가장 유명하고, 널리 사용되는 Object Tracker이다.

       - SORT의 확장 편

       - 논문 : arxiv.org/pdf/1703.07402.pdf 

    Deep SORT 핵심 구성 - Kalman Filter :

       - Deep SORT의 핵심 구성요소는 Kalman Filter[ kmhana.tistory.com/22?category=845938 ]이다.

       - 8개 변수 ( \( u, v, a, h, u^{'}, v^{'}, a^{'}, h^{'} \) ) 사용 :

          º \( u, v \) - 경계상자 중심

          º \( a \) - 비율(Ratio)

          º \( h \) - 이미지의 높이(height)

          º \( \_^{'} \) - 각각의 변수의 속도(velocities)

 

       - 절대 Position과 속도의 Factor로 구성되어 있음 - 단순 Linear Velocity Model을 가정

          º Tracking은 선형성적 특성을 따르는 경향이 있음

 

       - Kalman Filter는 Detection에서 발생되는 Noise를 처리하는데 도움을 줌!

          º Kalman Filter는 이전 상태 정보를 사용하여, 경계 상자를 Tracking한는데 도움을 줌

 

       - 각 Detection에서, 필요한 모든 상태정보를 가진 "Track"을 만든다.

          º "For each detection, we create a “Track”, that has all the necessary state information."

 

       - "계속 Track 할 것인가?"이나, "Track을 삭제할 것인가?"와 관련된 Paramter가 있다

          º Scene에서 벗어난 객체와 관련된 Track은 삭제되어야 한다

          º 중복되는(Duplicate) Track을 제거하기 위해서, 초기 몇 개의 Frame에서는

            "A minimum number of detections threshold"를 사용한다.

    Assignment Problem 이란 :

       - Kalman Filter를 통해, Tracking된 새로운 Bounding Box가 주어진 경우, 다음 문제는

         New Detection과 New Prediction(BB)를 연결하는것이다.

 

       - \( Detection\_k \) 와 \( Track\_i \) 는 독립적으로 수행된다.

          º \( Detection\_k \) 는 Detector 모델(ex : YOLO)이 \( Track\_i \) 는 Tracker 모델(ex : SORT)이 각자 수행

          º 독립적으로 수행되는 각자의 결과를 연결하는 방법이 필요

 

       - "Assignment Problem"를 해결하기 위해선 두 가지 알고리즘이 필요

          1) 연관성을 정량화(Quantify)하는 Distance Metric

          2) 데이터를 연결시키는 Efficient Algorithm

             º 1단계에서는 연관성을 정량화시킨 후,

             º 2단계에서는 정량화된 연관성을 사용하여, 독립수행된 결과를 연결

 

    Distance Metric :

       - 기존의 SORT : Kalman Filter에서의 Uncertainties를 통합하기 위해서, Mahalanobis distance를 사용

          º Mahalanobis distance는 : 분포를 다룰 때 효과적임 (∵ 분포를 고려한 거리이므로)

       - 두 분포(Kalman에서 유발된) 사이의 거리를 효과적으로 측정하므로, 유클리드 거리보다 더 정확

 

   ○ Efficient Algorithm :

       - 기존의 SORT : "Hungarian Algorithm" 사용 

       - Hungarian Algorithm는 Data Association Problem을 다루는 대표적인 알고리즘

          º 매우 효율적이고, 간단한 알고리즘임

          º gazelle-and-cs.tistory.com/29 참고 

 

할당 문제 & 헝가리안 알고리즘 (Assignment Problem & Hungarian Algorithm)

이번 포스팅에서는 assignment problem과 Hungarian algorithm에 대해서 알아보겠습니다. 먼저 assignment problem이 어떤 것인지에 대해서 살펴보고, 이를 해결하는 방법을 알아보도록 하겠습니다. 인터넷을 찾

gazelle-and-cs.tistory.com

          º Matcing과 vertex cover 문제를 해결 가능 (즉, 경계상자와 Detection 일대일 매칭 문제를 해결할 수 있음)

          º 게다가, Sklearn 라이브러리에서 편하게 적용할 수 있음

 

   ○  Deep Learning의 적용 :

     ● 기존 SORT 구성 요약 : Object Detector(경계상자 예측)와 Kalman Filter(Tracking) 사용 

       - Object Detector : Detection

       - Kalman Filter : Tracking Detections and giving us missing tracks

       - Hungarian Algorithm : Solving Association problem

 

     ● 기존 SORT 단점 : Kalman Filter 효율성에도 불구하고,

       - Occlusion나 Different View Point 문제로 인해서, Tracking 실패

      

     ● Deep SORT 제안 :

       - Object의 "Appearance"기반의 Distance를 제안

       - 딥러닝의 역할은 Association Problem에서 Distance Metric를 대체하는 것에 한정됨

          → 딥러닝의 역할이 개인적으로는 제한된다는 생각이 듬

 

       ※ The Appearance Feature Vector 란? 

          1. 좋은 정확도를 가지는 Classifier 학습

          2. Final Classification Layer 제거

          3. Single Feature Vector를 만드는, Dense Layer를 "Appearance Descriptor"로 사용

          4. 탐지(Detected)된 경계상자의 Crop된 이미지 들에서, Feature( 128 x 1)를 추출함

         

Deep SORT에서 Descriptor로 사용한 모델

     ● New Distance Metric :

$$ D = Lambda * D_{k} + (1 - Lambda) * D_{a} $$

       - \( D_{k} \) : Mahalanobis distance

       - \( D_{a} \) : Cosine Distance between the Appreance Feature Vectors

       - \( Lambda \) : Weight Factor

       - 저자 : \( D_{a} \)의 중요도가 높아, \( Lambda = 0 \) 으로도 SOTA를 이룰 수 있었음

                → 즉, 딥러닝의 Feature통해 계산된 유사도를 활용하면, 경계상자 및 Tracking의 연계의 성능이 좋아짐

       - 실행 코드 : github.com/abhyantrika/nanonets_object_tracking

 


   마치며 :

       - Tracking을 위한 딥러닝 GOTURN, ROLO에 대해서 다루어 봤으며,

       - 대표 방법론인 Deep SORT에 대해서 다루어 봤습니다

       - Deep SORT에서의 딥러닝 적용하는 부분이, Association Part에서만 제한적으로 사용했습니다.

       - 딥러닝이 더 적극적으로 사용되는 Tracking 논문이 더 많이 나오지 아닐까? 예상해 봅니다!