Deep Learning/Computer Vision

Multi object Tracking(MOT) 과 활용

jinmc 2021. 4. 29. 16:05
반응형

사람들을 tracking 하는데 있어서, inference만 하려고 하면 여러 가지 방법이 있지만, YOLO를 사용하는 방법이 많이 알려져 있습니다. YOLOv4, YOLOv5가 많이 사용되고, 그 중에서 tiny나 small의 경우 작은 디바이스에서도 사용할 수 있을 정도로 가볍고 빠릅니다. 하지만 실제 상황에서 사용할 때, tracking이 필요한 경우가 많습니다. 예를 들어, 선을 그어 놓고, 이 선을 넘어간 사람들의 수를 구할 때, tracking을 사용하지 않는 방법 (opencv)를 사용하는 방법도 있겠지만, 정확도가 떨어질 수도 있습니다. (특히 사람들이 많이 지나갈 경우)

 

관련 링크 : www.pyimagesearch.com/2018/08/13/opencv-people-counter/ 

 

아직 시도해 보지는 않았지만, 나중에 해보고 후기를 남겨보도록 하겠습니다.

그렇다면 YOLO라든지 딥러닝을 사용하는 경우 어떻게 tracking을 사용할까요?

 

github.com/abewley/sort 

alex bewley 가 만든 sort의 github를 사용하면 MOT가 가능합니다.

SORT는 Simple Object Realtime Tracking의 준말입니다.

논문도 나와 있습니다. arxiv.org/abs/1602.00763 

 

자세한 내용으로는, Kalman Filtering과 hungarian Algorithm을 사용한다고 하는데, 

거기까지 보지는 않았습니다. 

 

실제로 yolov5와 적용한 결과, 나름 안정적인 성능을 보였습니다.

다만, 살짝 아쉬운 점은, 두 개의 물체가 서로 겹쳐지고 다시 안겹쳐졌을 때, 뒤에 있는 물체를 계속해서 tracking하지 못한다는 점이었습니다.

 

그 점을 보완해서 만든 알고리즘이 deep-Sort라고, 기존의 SORT에 deep association metric을 추가했다고 합니다.

arxiv.org/abs/1703.07402 

yolov5에 적용한 github를 돌려보았는데, 확실히 기존의 SORT알고리즘보다 겹쳐졌다가 떨어지는 물체들에 대해서도

tracking을 원활히 하는 점을 발견하였습니다.

github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch

 

하지만 문제는, SORT와 비교해 보았을때, 너무 느려진다는 점이었습니다. 

그래서 나온 게, FASTMOT입니다.

단, yolov5와 맞는 버전이 나오진 않은 것 같아서, yolov4 버전에 맞춰서 실행해야할 것 같습니다.

github.com/GeekAlexis/FastMOT

 

다른 방법으로는,

github.com/saimj7/People-Counting-in-Real-Time  (yolo말고 다른걸 사용)

www.mdpi.com/1424-8220/20/21/6251(기차에 사람들이 타고 내리는 걸 counting하는 방법에 대한 논문)

 

등이 있습니다.

반응형