글 작성자: 만렙개발자

YOLOv5에 대한 자세한 소개는 이전 글을 참조해주시고, 이 포스트에서는 추론 과정에 대해서 다루고자 합니다.

 

[분류 전체보기] - YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...?

 

YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...?

YOLO V5가 공개되었습니다! YOLO는 You Only Look Once라는 이름으로, one-stage object detection 딥러닝 기법으로 매우 빠른 속도의 추론 과정으로 2016년에 큰 충격을 안겨주었었습니다. 저는 증강/가상현실을.

lv99.tistory.com

Colab 환경에서 YOLOv5의 사용법과 코드를 공유합니다. 먼저 '수정 > 노트 설정 > 하드웨어 가속기 > None에서 GPU로 변경'을 해주시구요! YOLOv5를 official하게 공개한 ultralytics의 github repo로부터 clone을 하고, 필요한 requirements에 대해서 설치를 합니다. 그리고 torch, ipython display, google drive download 패키지들을 import 합니다.

 

!git clone https://github.com/ultralytics/yolov5  # clone repo
!pip install -r yolov5/requirements.txt  # install dependencies
%cd yolov5

import torch
from IPython.display import Image, clear_output  # to display images
from utils.google_utils import gdrive_download  # to download models/datasets

clear_output()
print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))

예제로 사용할 동영상은 미드 Office에서 파쿠르(Parkour)를 하는 장면입니다. 이전에 YOLO 예제에서 사용된 적이 있기에 저도 가져와봤습니다. 다운로드는 gdrive_download 함수로 다음과 같이 받을 수 있습니다. 

gdrive_download('1iivzAgvtDqtlIp-CDCzwxK5m9wlX2hFZ','Office-Parkour.mp4')  

만약 직접 다운로드 하고싶으시다면, 아래의 링크를 활용하시되, 구글 드라이브를 mount하셔야 한다는 점을 잊지 마시길 바랍니다!

drive.google.com/file/d/1iivzAgvtDqtlIp-CDCzwxK5m9wlX2hFZ/view?usp=sharing

(Office-Parkour.mp4 파일을 ipynb 파일과 동일한 위치에 위치시킨다고 가정하고 코드를 작성하도록 하겠습니다.)

 

%%time
!python detect.py --weights yolov5x.pt --img 1280 --conf 0.4 --source ./Office-Parkour.mp4

weights의 yolov5x.pt는 없는 경우에 자동으로 다운로드가 됩니다. 끝의 x를 s, m, l로도 바꾸어 속도와 성능의 차이를 경험해보시면 좋을 듯 합니다. 이 예제에서는 가장 성능이 좋은 xlarge 모델로 inference 해보겠습니다.

 

실행을 해보면, 이러한식으로 프레임의 결과들이 출력됩니다. 

결과파일은 ./inference/output 폴더에 있습니다. 그 폴더 내에있는 파일을 다운로드하기 위해서는 google.colab의 files를 이용하면 됩니다! (아니면 구글 드라이브 마운트를 하여서, 드라이브로 옮겨야하겠죠)

from google.colab import files
files.download('./inference/output/Office-Parkour.mp4')

저는 여기서 생각보다 오래걸리더라구요... 인내심이 적은건지... 원파일은 18.5MB 였는데 결과 파일은 87.0MB로 용량이 늘었습니다. 인코딩이 최적화가 안되어서 그런건지, 박스가 추가되는 것이 요란해서 압축이 잘 안되는 건지는 모르겠습니다. 결과 영상을 함께 즐겨보시죠 :)

 

 

 

 

혹시 YOLO v5 모델을 직접 학습해보고 싶으시다면 다음의 코드를 참조해주세요!

 

[분류 전체보기] - YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기

 

YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기

YOLOv5는 x(x-large), l(large), m(medium), s(small)의 4종류로 구성됩니다. 자세한 내용은 이전 글을 참조해주시고, 이 포스트에서는 학습 코드(스크립트)에 대해서 다루고자 합니다. [분류 전체보기] - YOLO v5

lv99.tistory.com