본문 바로가기
Visual Intelligence/Object Detection

[Object Detection] YOLOv5

by goatlab 2022. 9. 4.
728x90
반응형
SMALL

YOLOv5

 

https://github.com/ultralytics/yolov5

 

YOLO는 'You only look once'의 약자로 이미지를 그리드 시스템으로 분할하는 객체 감지 알고리즘이다. 그리드의 각 셀은 자체 내에서 개체를 감지하는 역할을 한다. YOLO는 속도와 정확성으로 인해 가장 유명한 객체 감지 알고리즘 중 하나이다.

 

YOLOv5🚀COCO 데이터 세트에서 사전 훈련된 객체 감지 아키텍처 및 모델이며, 수천 시간의 연구 및 개발을 통해 학습한 교훈과 모범 사례를 통합하여 미래 비전 AI 방법에 대한 Ultralytics 오픈 소스 연구가 있다.

 

YOLOv4 출시 직후 Glenn Jocher는 Pytorch 프레임워크를 사용하여 YOLOv5를 도입했다. 오픈 소스 코드는 GitHub 에서 사용할 수 있다.

 

YOLOv5 설치

 

구글 코랩에서 진행한다.

 

%cd /content

!git clone https://github.com/ultralytics/yolov5.git
# 필수 라이브러리 설치
!pip install -r /content/yolov5/requirements.txt
!wget -P /content/yolov5/ https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt
# yaml 파일 확인 및 설정
%cat /content/yolov5/data/coco128.yaml

 

테스트 데이터

 

import zipfile

with zipfile.ZipFile('/content/testdata.zip', 'r') as target_file:
  target_file.extractall('/content/yolov5/testdata/')
# 테스트 이미지
import glob

test_image_list = glob.glob('/content/yolov5/testdata/*.jpg')

print(len(test_image_list))

test_image_list.sort()

for i in range(len(test_image_list)):
  print('i = ', i, test_image_list[i])

 

detect

 

# detect 실행
!python3 /content/yolov5/detect.py --weights /content/yolov5/yolov5s.pt --source /content/yolov5/YOLOv5_Native_TestData/
detected_image_list = glob.glob(('/content/yolov5/runs/detect/exp/*.jpg'))

detected_image_nums = len(detected_image_list)

print(detected_image_nums)
print(detected_image_list)
import cv2
import matplotlib.pyplot as plt

test_img_list = []

test_img_name_list = glob.glob('/content/yolov5/runs/detect/exp/*')

for i in range(len(test_img_name_list)):
    src_img = cv2.imread(test_img_name_list[i])
    dst_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2RGB)
    test_img_list.append(dst_img)

plt.figure(figsize=(20, 20))

for i in range(len(test_img_list)):
    plt.subplot(2, 3, i+1)
    plt.axis('off')
    plt.imshow(test_img_list[i])

plt.show()

 

inference image 압축

 

import os

if not os.path.exists('/content/detected_result/'):
  os.mkdir('/content/detected_result')
  print('detected_result dir is created.')

with zipfile.ZipFile('/content/detected_result/detected_images.zip', 'w') as detected_images:
  for idx in range(detected_image_nums):
    detected_images.write(detected_image_list[idx])

 

압축 파일 다운

 

from google.colab import files

files.download('/content/detected_result/detected_images.zip')
728x90
반응형
LIST