-
YOLOv4 & Deepsort로 Object Tracking 하기카테고리 없음 2024. 5. 10. 10:56
프로젝트 환경 설정
가상환경 설정에는 두 가지 방법이 존재한다.
- Virtual Env (venv)
python -m venv yolov4-cpu source yolov4-cpu/Scripts/activate pip install -r requirement.txt
- Conda
# Tensorflow CPU conda env create -f conda-cpu.yml conda activate yolov4-cpu
YOLOv4 Tiny Weights 다운로드
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights
Object Tracking 과정
인공지능을 크게 학습(Training)과 예측(Inference)으로 나눈다면 해당 과정은 Inference 에 해당한다. 미리 학습 된 모델을 이용하여 예측을 수행한다.
1. save model
가중치 및 연산을 포함한 사전에 훈련한 모델을 내보내는 과정이다.
이 과정에서 check point 가 생성되는데, 이러한 형태를 SavedModel Format 이라고 한다.
check point 구성요소
- variables.index : 가중치(weight), 편향(bias) 등과 같은 변수들에 대한 정의 및 위치를 기록하는 파일
- variables.data-00000-of-00001 : 실제 변수들의 데이터를 기록하는 파일
- saved_model.pb
python save_model.py \ --weights ./data/yolov4-tiny.weights \ --output ./checkpoints/yolov4-tiny-416 \ --model yolov4 \ --tiny
2. object tracking
객체를 추적하는 과정은 크게 두 가지로 나뉜다.
- Object Detection
- Object Tracking
YOLO를 이용하여 객체의 Bounding Box를 예측한 후,
예측 결과를 Deepsort에 전달하여 해당 Bounding Box를 추적하는 형식이다.
batch_data = tf.constant(image_data) pred_bbox = infer(batch_data) # bounding box 예측 ... tracker.predict() tracker.update(detections) # 예측한 결과를 deepsort tracker에 전달
python object_tracker.py \ --weights ./checkpoints/yolov4-tiny-416 \ --model yolov4 \ --video ./data/video/car.mp4 \ --output ./outputs/tiny.avi \ --tiny
3. convert to tflite
이전 단계에서 내보낸 SavedModel을 Tensorflow Lite형태로 변환한다.
Tensorflow Lite 형태로 변환하면 모바일 및 임베디드 기기에서 사용가능하다.
아래 파이썬 스크립트를 실행하면
yolov4-416-fp32.tflite
가 생성된다.python convert_tflite.py --weights ./checkpoints/yolov4-tiny-416
다른 영상으로 Object Tracking 테스트
pexels 에서 제공하는 자동차 영상으로 Object Tracking을 진행하였다.