티스토리 뷰

2021.5.13 00:14

 

안녕하세요
프로그래밍을 배우는 빛나는 샤트입니다.

 

 

자율주행 프로젝트 We-Go

진행하면서 공부한 내용들을 간략히 정리한 글입니다.

 

 

1.  주제: DeepSORT 이해하기

 

2. 링크 모음

2-1. 링크1(DeepSORT 간략한 설명): https://haandol.github.io/2020/02/27/deep-sort-with-mxnet-yolo3.html#fn:3

 

DeepSORT 로 사람 트래커 만들기 (DeepSORT with MXNet YOLO3), Haandol

DeepSORT 로 사람 트래커 만들기 2020년 02월 27일 작성 TL;DR SORT = 디텍터 + 칼만필터 + 헝가리안 알고리즘 DeepSORT = 딥러닝 + SORT 코드는 여기, MXNet 의 YOLO3 을 디텍터로 하여 딥소트 알고리즘을 구현하

haandol.github.io

2-2. 링크2(DeepSORT 설명, Feature Extractor 설명): https://nanonets.com/blog/object-tracking-deepsort/#deep-sort

 

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

2-3. 링크3(DeepSORT + YOLOv4): https://ropiens.tistory.com/58?category=905975

 

Object Detection & Tracking : YOLOv4 + Deep_SORT 환경 셋팅 및 실습

작성자 : 한양대학원 융합로봇시스템학과 석사 과정 유승환  오늘은 딥러닝 Object Detection 기반 Tracking 실습을 진행해보겠습니다~! 학습 모델명은 YOLOv4 + Deep_SORT 입니다. Deep SORT는 저도 처음 접해

ropiens.tistory.com

2-4. 링크4(SORT) : https://deep-eye.tistory.com/68

 

[Python] SORT (Simple Online Real time Tracker) 구현하기 (깃허브 소스 코드)

Concept 컴퓨터 비전 분야에서 응용되는 대표적인 딥러닝 기술은 객체 탐지(Object Detection)입니다. 객체 탐지는 Faster-RCNN, SDD, YOLO 등이 제안되면서 최근 객체 탐지 기술은 꽤 높은 수준으로 상향 평

deep-eye.tistory.com

2-5. 링크5(DeepSORT의 어색한 번역본): ichi.pro/ko/tensorflow-2eseo-deepsortleul-sayonghan-gaegche-chujeog-259490015275855

 

TensorFlow 2에서 DeepSORT를 사용한 객체 추적

물체 감지 및 추적은 의미있는 이벤트와 의심스러운 활동을 파악하기 위해 감시 시스템이 수행해야하는 가장 보편적이고 어려운 작업 중 하나입니다. 이 기사에서는 객체 추적의 개념, 과제, 전

ichi.pro

 

3. 내용 정리

- 이 글은 객체 추적(Object Track) 기술에서 많이 사용되는 DeepSORT 기법에 관한 내용이다.

- 총 4가지에 대한 간략한 설명을 할 예정이다.

1) SORT

2) Kalman Filter

3) Hungraian Algorithm

4) Feature Vector

 

 

위 4가지 용어에 대한 관계를 나타내면 아래와 같이 쓸 수 있다.

DeepSORT = SORT + Deeplearning = (Kalman Filter + Hungraian Algorithm) + Feature Vector

즉, SORT = Kalman Filter + Hungraian Algorithm이며 SORT에 딥러닝 Feature vector을 더한 것이 DeepSORT이다.

 

그럼 각각 어떤 의미를 가지는 지 알아보자.

 

*Kalman Filter

- 간단하게 말하면 이전 프레임(시점)의 bbox(detect된 객체의 경계box)의 정보를 이용해 현재 프레임의 객체의 위치를 예측하는 것.

-  칼만 필터를 거치고 나온 정보(예측값)를 이용해 IOU distance를 구할 수 있고, 이를 헝가리안 알고리즘으로 보내 객체 정보를 업데이트할 수 있다.

--> 많은 연산을 필요로 한다.

 

*Hungraian Algorithm

- 칼만필터에서 예측한 위치값과 실제 위치값의 IOU distance를 이용해 객체 정보를 업데이트.

- 알고리즘에 대해 deep하게 공부하는 것은 나중으로...(컨셉만 이해하고 넘어가자)

- 관련 링크: gazelle-and-cs.tistory.com/29

 

 

아래 그림을 보면 Object Tracking을 수행하는 SORT 기법이 어떻게 작동되는지 알 수 있다.

1. 이전 프레임에서 객체를 가져와서(Detector), Kalman filter을 거쳐 예측값을 알아내고,

2. 현재 프레임에서 객체를 가져와서(Detector), 1에서 구한 예측값과의 IOU distance를 구해

3. 헝가리안 알고리즘을 통해 Tracking 실행

출처: https://deep-eye.tistory.com/68

 

 

*Feature Vector

SORT에는 칼만 필터, 헝가리안 알고리즘 등으로 객체 추적이 충분히 잘 될것이라 생각되는데 딥러닝이 필요할까?
현실 문제(Occlusions와 같이 객체가 가려지는 현상 등)에서 어려움을 많이 겪는다.
이를 해결하기 위해 Deep SORT의 저자들은 객체의 appearance에 기초한 새로운 distance metric를 제안.

The apperance feature vector
1. 아이디어: 꽤 간단함. 벡터를 얻는 것. 어떤 벡터? 주어진 이미지에 대한 전체 특징(features)를 묘사할 수 있는 벡터.
즉, '주어진 이미지에 대한 전체 특징을 묘사할 수 있는 벡터를 얻어보자'라는 아이디어에서 출발.
2. 방법
 1) 데이터셋에 맞게 분류기 설계
 2) 좋은 정확도가 나올 때까지 훈련
 3) 마지막 분류 레이어 제거
 4) single feature vector을 생산하기 위해 dense layer를 남긴다.

--> 마지막 dense layer에 의해 생성된 feature vector은 "객체의 appearance descriptor"이 된다.
    appearance descriptor 객체 외관을 잘 설명(묘사, 대표)할 수 있다는 의미로 생각.

 

 

DeepSORT를 이용하면 SORT에서의 단점(Occlusion, id switch등과 같이 실제 환경에서 발생하는 다양한 돌발 상황)이 개선되었다. 또한 DeepSORT를 크게 2갈래로 보면 Detector, Tracker인데 Detector에 YOLO를 많이 사용하고 있는 모습이다.

Detector의 성능이 중요하다고 한다.

 

 

LIST
댓글