HANA : Have A Nice AI

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

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

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

KM-Hana 2021. 3. 5. 19:27

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

 

본 "영상 분석(Video Analysis) 이란? - Tracking"을 보시기 전에

kmhana.tistory.com/20

 

영상 분석(Video Analysis) 이란? - 기본

*크롬으로 보시는 걸 추천드립니다* 이미지 분석(Image Analysis)을 연구하거나, 산업에 적용하다 보면 영상 분석(Video Analysis)에 대해서 종종 접하게 됩니다. 영상 분석을 접할 기회가 적은 편이고, '

kmhana.tistory.com

를 먼저 보시면서, Video Analysis의 기본적인 개념에 대해서, 참고하시는 것을 추천드립니다.

 

비디오(영상) 분석의 핵심 요소 :

   1. Object Detection 

   2. Object Tracking

   3. Action Classification

이 있다고 말씀드렸습니다.

 

Object Detection은 이미 많이 알려져 있져있기 때문에,

"영상 분석(Video Analysis) 이란? - 기본"에 이어서,

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

를 중심으로 참고하였습니다.


Introduction

   단순한 "픽셀-픽셀간의 이동"이 아닌 "어떻게 이미지나 비디오의 패턴"을 인식하도록 할 것인가? 가 주요 관심사이다.

   Object Detection은 많이 알려져 있지만, 영상에서의 Object Tracking은 상대적으로 더 알려져 있다.

      - Static images에서 물체를 감지하고, 시간 정보를 분석하여 결합하고, 이를 활용하여 궤적을 잘 예측하도록 사용

      - Single Object Tracking은 다른 물체와의 구별이 필요 없으므로 상대적으로 쉽다

      - Multiple Object Tracking은 다른 물체와의 구별과 식별(identify)이 필요하며,

        Scene에서 벗어날 때까지 Tracking해야 하므로 어렵다.

Object Detection vs Tracking

   영상 분석에서의 Object Detection의 역할 :

     - 각 Frame에서 독립적으로 수행됨

     - 특정 Frame에서 여러 Object를 탐지 및 식별함

     - Bounding Box 및 분류를 진행함

 

    영상 분석에서의 Object Tracking의 역할 :

     - 전체 비디오에서 특정 객체를 식별

     - Detection 된 각 객체를 이어지는 프레임에서 추적(고유 ID 사용)

     - Tracker는 시공간(Spatio-Temporal) Feature를 사용해야 함

Challenges

   Object Tracking을 하면서 발생되는 기본적인 문제들에 대해서 다루고자 합니다.

 

    Occlusion

     - 물체가 겹쳐지거나 가려지는 것 

     - 왼쪽 그림에서 배경에 잡힌 남자가, 오른쪽 그림에서는 Detect 되지 않음

        → Detect가 끊어졌던 동일한 사람에 대해서 식별하고, 과거의 Track과 궤적에 대한 특징을 연결해야 함

 

    Variations in view points

     - 종종 여러 카메라에서 Object Tracking을 진행할 수 있음

     - 변화된 카메라 View에 대해서도, 불변(Invariant)하게 Tracking 해야 함

     - 예시 : 무인 편의점

    Non Stationary Camera

     - 추적하는 카메라가 특정 물체를 따라서 움직이는 경우

     - 추적하는 대상이 더 커지거나, 작게 변화될 수 있음

     - 객체의 Feature를 활용하는 Tracker의 특성상, 물체를 따라 카메라가 움직이는 경우 추적에 실패할 수 있음

     - 예시 : 드론, 자율주행

 

    Annotation Training Data

     - Annotation 된 좋은 훈련 데이터를 얻기 어려움

     - Detection은 여러 영상 이미지를 무작위로 뽑아 주석을 달면 되지만,

       Tracking은 각각의 Instance가 식별 및 Frame마다 연결되어야함

       즉,  비디오 시퀀스(Sequence)에 대한 전체적인 Annotation이 필요함

Tranditional Methods

  Mean Shift

  Mean Shift 특징

     - Mean Shift(=Mode seeking)는 Clustering 같은 Unsupervised에서 많이 사용됨 

     - K-Means와 유사하나, 중심을 찾을 때 평균에 가까울수록 중요도를 높이는 가중평균(Weighted Average) 사용

     - 이 알고리즘에 목적은 주어진 데이터 분포(distribution)에서의 Mode(최빈값)을 찾는 것이다.

 

  ● Mean Shift 과정

     1.  Frame에서 물체를 감지하고 특징(색감, 질감, 히스토그램)을 추출

     2.  현재 영상에서, feature 분포의 Mode에 대한, 위치를 인식

     3.  Frame이 바뀌어서 분포가 변경이 되었을 때, 가장 큰 분포의 Mode( - 유사도 ↑)를 찾으며 Object를 추적함

 

  ● Mean Shift 단점

     - 물체의 크기, 형태 변화에 민감하다 ( ∵ 크기나 형태가 변화하면, Feature의 분포가 크게 변하기 때문에)

darkpgmr.tistory.com/64

 

[영상추적#1] Mean Shift 추적

영상에서 물체를 추적하고자 할 때, 보통 가장 먼저 떠오르는게 mean-shift 방법일 것이다. 하지만 막상 mean-shift를 이용하여 영상 추적을 하려면 실제 어떻게 해야 하는지 막막한 경우가 많다. 가장

darkpgmr.tistory.com

   ※ 이 블로그에 잘 설명되어있어서, Mean Shift의 적용이 궁금하신 분은 참고하시면 도움이 되실 겁니다 

 

  Optical Flow

     ※ kmhana.tistory.com/20?category=845938 에서 간단하게 다루긴 했지만, 한번 더 다루겠습니다

   Optical Flow 특징

     - Mean Shift와는 다르게 Object의 Feature를 추출할 필요가 없다 

     - 추적해야 되는 객체의 변위 벡터를 얻는 것이 목적

 

   Optical Flow 가정

     1. 밝기의 일관성 : Small region의 위치가 변경될 수는 있지만, 밝기는 거의 유사할 것으로 예상 

     2. 공간의 통일성(coherence) : Neighboring points은 같은 표면(Surface)에 위치하므로, 유사한 움직임을 가짐

        - 근방의 Point들은 비슷한 방향으로 움직인다 

     3. 시간의 지속성(Persistence) : Motion of a patch는 점진적으로 변경됨

     4. 동작(Motion)의 제한 : 점들이 너무 멀리 가거나, 무작위(Random)로 이동하지 않음

 

   Optical Flow 설명 링크

     - 위 가정이 충족되면 Lucas-Kanade[ en.wikipedia.org/wiki/Lucas%E2%80%93Kanade_method ]방법을 사용

        → 속도에 대한 방정식(Velocity Equation)을 얻음

     - Lucas-Kanade에 대한, 설명은 Lucas-Kanade 사이트 참고

     - Optical Flow에 대한, 더 자세한 내용은 docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html 참고

     - 한글로 설명된 블로그는 다음 링크를 추천 블로그

 

Kalman Filters

  ● Kalman Filters 특징

     - 컴퓨터 비전, 내비게이션, 경제학 등에서, 시계열적인 예측과 관련된 문제를 해결하는 데 사용됨 

     - 사용 가능한 Detection 정보와 이전 예측(Predcitions)을 이용하여, 현 상황에 대하여 잘 추측하고자 함

     - Tracking 과정에서 발생할 수 있는, 오류 가능성을 유지(keeping) 

       * 비디오 분석에서, 좋은 Object detector를 가지고 있지만, 종종 객체를 놓치는 경우가 생김 

 

  ● Noise 요소

     - 가정 : 고속도로에서의 차량속도가 일정하다고, 예측하는 등속도 모델(Constant Velocity Model)

     1. Process Noise : 자동차가 따를 것이라고 가정한 등속도 모델과 관련된 소음 (∵ 실제로는 일정한 속도가 아님)

     2. Measurement Noise : Tracking의 기반이 되는 Detector의 결과(Output)가 부정확할 수 있음

 

  ● Kalman Filters 특징

     - Kalman Filters는 재귀적으로 작동

     - Real-time으로 동작됨

     - 현재에 입력된 측정값(Measurement)과 이전에 계산된 상태(State), 이것의 Uncertainty Matrix만 가지고도 동작됨

       * 추가적인 더 먼 과거정보는 필요하지 않음

     - "이전 상태의 분포"와 "측정한 분포" 사이에서, 새로운 분포를 추론하는 것과 같음

https://www.codeproject.com/articles/865935/object-tracking-kalman-filter-with-ease

  ● Kalman Filters 과정

     1. 예측 단계 : 현재 상태 변수의 추정치를 생성(약간의 Noise를 포함시킴)

        - produces estimates of the current state variables, along with their uncertainties.

     2. 현재 상태에 대한 변수를 실제로 측정(Mesure)

        - the outcome of the next measurement is observed

     3. 보정 단계 :추정한 상태를 기반으로 예측한 상태와 실제 측정치의 차이를 반영하여, 현재의 상태를 업데이트함

                      가중 편균을 사용하여, 더 높은 확실성을 가진 추정치에 더 많은 가중치를 부여

        - these estimates are updated using a weighted average,

          with more weight being given to estimates with higher certainty

 

  ● Kalman Filters을 비디오 분석에서 사용할 수 있는 이유

     - Kalman Filters은 가우시안을 따르는 Linear System에 잘 작동함

     1. Tracking 시, 선형성을 거의 벗어나지 않음 ( 카메라가 바뀌지 않는 한, 물체는 순간이동 하지 않음)

     2. Tracking 과정과 Noise는 가우시안 영역에 속함


마치며

     - Object Tracking에 대해서, 낯설었기 때문에 정리하는 데 오래 걸렸습니다.

     - Object Tracking을 위한 딥러닝을 다음 리뷰에서 이어서 다루겠습니다.

     - Object Tracking과 관련된 딥러닝과 함께, Deep SORT 논문 리뷰를 진행하겠습니다