• Deepsort

    2022. 4. 11. 17:04

    by. 위지원

    Summary

    보편적으로 사용되는 오브제 트레킹 프레임워크이다.

    SORT(Simple Online and Realtime Tracking)을 보완한 기술이다.

     

    kalman filter 

     

    The core idea of a Kalman filter is to use the available detections and previous predictions to arrive at a best guess of the current state, while keeping the possibility of errors in the process.

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

     

    이전 프레임에 등장한 오브젝트를 이용하여 다음 프레임의 위치를 예측하고 측정한다.  예측한 값(예측 모델) 실제 측정 값(측정 모델) 이 두 모델을 가지고 점진적 학습을 한다. 선형 역학계의 상태를 추정하는 재귀 필터 라고한다. (위키백과)

     

    정확히는 아래처럼 분류한다. 

    - Motion Model (예측)

    - Measurement Model (측정) 

     

    재귀적으론, Motion -> Measurement -> Update

     

    각 시간(전, 후)에서의 상태 백터는 이전 시간의 상태 벡터를 통해 결정된다는 마로크 연쇄를 가정하고있다. 

    칼만 필터는 이전 상태 이외의 기록을 유지하지 않기때문에 메모리 효율성도 좋다.

     

    kalman filter를 쓰는 이유는 Detection Noise 감소와 Tracking이라는건 선형적이기때문에 칼만필터의 특성을 이용하기에 좋다.

     

     

    Hugarian algorithm

    최적의 매칭을 찾는 알고리즘으로 할당문제의 해결방안 중 하나.

    * 할당 문제: 다수의 공급/수요가 존재할 때 최적의 수송비용을 낼 수 있도록 말 그대로 할당하는 문제

     

    Mahalanobis distance

    후,, 대학원 내내 나를 괴롭혔던

    어떤 값이 얼마나 이상한 값인지를 수치화하는 방법으로 평균과의 거리가 표준 편차의 몇 배인지를 나타내는 값

    미운 오리새끼도 mahalanobis distance가 매우 크게 나오는 현상이다..🦢🦆 주로 이상 탐지에 이용된다.

     

    IOU

    영상 데이터에서 detection을 할때 bbox를 사용하는데 예측과 실제가 얼마나 겹치는지 겹치는 영역에 대한 수치

     

    SORT

    MOT(Multi Object Tracking)으로, realtime tracking을 위함이다.  과거 프레임과 현재프레임 2가지만 이용하는데 이를 Two-frame method 방식이라고 한다.

     

    SORT는 Detection -> Estimation -> Data Assosiation 순으로 진행된다.

     

    Detection은 대부분 YOLO를 이용하여 Detection을 진행한다. Yolov5_DeepSort_Pytorch와 같이 2가지를 함께 이용하는 경우를 쉽게 찾아 볼 수 있다. Estimation에서는 위에서 알아본 Kalman filter를 이용한다. Data Assosiation 에서는 hungarian algorithm을 통해 IOU를 메트릭으로 사용하면서 추적 객체가 맞는지를 판단한다. 

     

    SORT의 문제점 "ID Switching"

    ID Switching은 MOT의 특징인데, 객체가 움직일 때 해당 객체의 ID가 변경되는 현상을 말한다. 

     

    DeepSORT

    일단 아키텍쳐는 Deepsort Architecture를 보면 위에서 언급한 내용들 기반으로 이해가 쉬어진다. DeepSort의 핵심은 Deep Appearance Descriptor 로 Re-identification(ReID) 모델을 적용하여 ID Switching을 해결했다는 점이다.

    무려 45% 감소한 결과를 보였다.

     

    객체의 특징을 이용해서 추적을 하므로  switching 문제를 해결할 수 있는 것!

     

    DeepSort에는 kalman fiter 이후에 matching cascade로 개체의 상태를 추출한다. 이 때 유사도 행렬 M을 계산하여 사용하는데 마할라노비스 거리와 코사인 거리의 가중 평균으로 cost matrix를 구하고 matrix가 너무 커지지 않도록 gate matrix를 이용한다. Cosine을 이용하는 이유는 kalman fiter는 추정치를 제공하는 것이므로 이 외에 것을 설명하기 위해 사용한다. 위에서 말한 Appearance Descriptor를 Cosine Distance를 의미한다. 실제로는 cosine distance만 이용했을 때 정확도가 더 높다고..

     

    이렇게 나온 결과를 IOU Matching을 진행한다. 이를 진행함으로써 1) 추적중인 객체 2) 새로운 객체 3) 사라진(실제는 아닐수도) 객체 

     

    3) 의 경우 실제로 사라진건지 아닌지를 판단하기 위해 특정 변수로 시간에 따라 상태를 지켜본다. 

     

    References

    https://wansook0316.github.io/ds/dl/2021/03/14/computer-vision-17-DeepSort.html

    https://kau-deeperent.tistory.com/84

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

    https://candyz.tistory.com/21

    https://gngsn.tistory.com/94

     

     

    대화의 장 💬