DL [12] YOLOv8 객체탐지(RSP)

totwo·2024년 9월 13일
post-thumbnail

목표

  • YOLOv8을 활용하여 주먹, 가위, 보 객체탐지(Object Detection)
  • YOLOv6와 YOLOv8의 차이점
    • v6 : 객체탐지, 경량화 -> 속도가 빠르다
    • v8 : 높은 정확도, 유연한 탐지, 사용자 친화적인 인터페이스
  • 이미 라벨링된 데이터를 가져와서 학습 및 예측
# 런타임 변경 -> T4 (GPU자원 사용)
# 드라이브 마운트
# 현재 파일의 경로 설정 %cd
%cd /content/drive/MyDrive/Colab Notebooks/24.08.29 DeepLearning

# 데이터셋 다운로드
!pip install roboflow

from roboflow import Roboflow
rf = Roboflow(api_key="Itm8WkbVFGNUfRDOErTQ")
project = rf.workspace("project-kzetv").project("yolov7_rock_paper_scissors")
version = project.version(1)
dataset = version.download("yolov8")
# ultralytrics 설치 -> YOLO를 사용하기 위한 패키지
! pip -q install ultralytics
# YOLO 모델 불러오기 -> 객체 생성
# 8부터는 라이브러리 사용하듯이 쓸 수 있도록 변경
from ultralytics import YOLO
# 사전학습된 모델 -> 이미 훈련된 모델을 가져다가 사용
model = YOLO('yolov8n.pt')

# 사전학습이 안 된 기본 뼈대만 있는 모델 -> 우리의 데이터로 학습할 때
# 모델 구조만 로드하여 직접 훈련할 준비
# model = YOLO('yolov8n.yaml')

# 기본 뼈대를 불러오고 가중치만을 불러와서 사용한다
# model = YOLO(''yolov8n.yaml').load('yolov8n.pt')
# 모델 학습
# train 키워드 사용
model.train(data = './yolov7_rock_paper_scissors-1/data.yaml', epochs = 80, imgsz= 640)
# YOLO 모델 예측진행 predict

# best 모델 불러오기 -> 우리의 데이터로 학습한 epochs 중에서 최대 성능을 가지는 모델을 저장
best_model = YOLO('/content/drive/MyDrive/Colab Notebooks/DL/runs/detect/train2/weights/best.pt')

# 예측에 사용할 이미지 한장
# test 데이터 안에서 주소로 가져오기
img_src = '/content/drive/MyDrive/Colab Notebooks/DL/yolov7_rock_paper_scissors-1/test/images/IMG_5636_MOV-40_jpg.rf.451d107b173a6856044a5d884eb7ed90.jpg'

# 객체탐지 결과 이미지를 저장해줄 경로를 설정
save_dir = '/content/drive/MyDrive/Colab Notebooks/DL/runs/detect/predict'

# 예측
result = best_model(img_src, save_dir = save_dir, save = True, conf = 0.4)  
# conf = 0.4 : 신뢰도(confidence) -> 객체탐지시 40% 이상 확신한 데이터만 객체탐지 후 출력 
import matplotlib.pyplot as plt
plt.imshow(result[0].plot())

profile
Hello, World!

0개의 댓글