IT Dictionary

Object tracker 구현해보기 - 4주차 본문

Lab

Object tracker 구현해보기 - 4주차

LeU 2021. 4. 29. 21:46

이번에는 colab 에서 object tracker를 구현해보는 과정입니다.

아래 깃허브 주소에서 확인해볼 수 있고 샘플로 사람과 차 인식영상을 실행시켜볼 수 있습니다

https://github.com/theAIGuysCode/yolov4-deepsort

 

theAIGuysCode/yolov4-deepsort

Object tracking implemented with YOLOv4, DeepSort, and TensorFlow. - theAIGuysCode/yolov4-deepsort

github.com

 

 

Step1 : colab에서 GPU 할당

메뉴에 수정 - 노트 설정 - GPU

 

 

 

 

 

 

 

 

 

Step 2: 레포지토리 cloning

github에서 레포지토리를 가져온후 그 폴더로 이동합니다

!git clone https://github.com/theAIGuysCode/yolov4-deepsort
%cd yolov4-deepsort/

 

 

 

Step 3: Dependencies 설치

구현하기 위한 패키지등을 설치하는 과정

!pip install -r requirements-gpu.txt

 

 

Step 4: Get YOLOv4

이제 깃허브에서 미리 학습된 가중치(weight)을 가져와서 다운로드한다. 영상을 인식할 때 이 모델을 사용하여 인식하게 된다.

!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights -P data/

 

 

Step 5: Convert YOLOv4 to TensorFlow model

object tracking을 위해서는 Tensorflow를 사용해야 한다. 이를 위해서는 yolov4모델을 tensorflow로 변환한다. 이 때 save_model.py 파이썬을 실행시킨다.

!python save_model.py --model yolov4

 

Step6: Deepsort 구현

colab에서는 모든 과정이 끝나야 동영상이 실행되고 영상이기 때문에 프레임마다 인식하는 과정이 보여지고 object_tracker.py를 실행시켜 구현한다

!python object_tracker.py --video ./data/video/test.mp4 --output ./outputs/tracker.avi --model yolov4 --dont_show --info

 

 

다음으로 colab에서 영상을 실행시키기 위한 코드를 작성

# 비디오를 보여주기 위해서 함수 구현
import io 
from IPython.display import HTML
from base64 import b64encode
def show_video(file_name, width=640):
  # show resulting deepsort video
  mp4 = open(file_name,'rb').read()
  data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
  return HTML("""
  <video width="{0}" controls>
        <source src="{1}" type="video/mp4">
  </video>
  """.format(width, data_url))

 

avi를 mp4로 변환하고 비디오를 실행해줍니다

# convert resulting video from avi to mp4 file format
import os
path_video = os.path.join("outputs","tracker.avi")
%cd outputs/
!ffmpeg -y -loglevel panic -i tracker.avi output.mp4
%cd ..

# output object tracking video
path_output = os.path.join("outputs","output.mp4")
show_video(path_output, width=960)

 

추가로 자동차 인식은 

object_tracker.py에서 물체를 car로 바꿔주면 되고 위의 과정을 거치면 최종적으로 구현이 가능해집니다