IT Dictionary
Object tracker 구현해보기 - 4주차 본문
이번에는 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로 바꿔주면 되고 위의 과정을 거치면 최종적으로 구현이 가능해집니다
'Lab' 카테고리의 다른 글
gdown 라이브러리를 활용하여 파일 다운받기 (0) | 2021.05.21 |
---|---|
YOLO v5 Object Counter(객체 수 세기) (4) | 2021.05.14 |
YOLOv4 를 이용하여 인식된 객체 counting 하기 (0) | 2021.05.06 |
YOLO v5를 이용하여 Custom data 인식하기 (1) | 2021.05.06 |
라즈베리파이 영상 전송 - 4주차 (0) | 2021.04.29 |