본문 바로가기

개발

yolov8 사용해보기

https://docs.ultralytics.com/ko

 

고속, 고정밀 물체 감지 및 이미지 세분화 모델인 Ultralytics YOLOv8 에 대한 전체 가이드를 살펴보세요. 설치, 예측, 교육 튜토리얼 등을 제공합니다.

docs.ultralytics.com

 

여기를 보면 yolov8에 대한 소개가 있다.

 

사용 방법도 나와있다.

!pip install ultralytics
 

설치한다

앞의 !는 코랩에서 터미널 명령어사용할때 쓰는 기호

 

파라미터 크기에따라 나노 스몰 미디움 라지 엑스라지 등의 모델이 있다.

 

사이트에 나와있는 

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Use the model
model.train(data="coco128.yaml", epochs=3)  # train the model
metrics = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
path = model.export(format="onnx")  # export the model to ONNX format

는 나노 모델을 사용하는 코드

 

모델을 훈련시키기 위해서는 훈련 데이터가 필요한데 

훈련시킬 사진으로 roboflow에서 만들면 된다.

 

yaml형식의 파일에 아래와 같은 형식대로 

data = {'train' : '/content/drive/MyDrive/file/train/images/',
        'val' : '/content/drive/MyDrive/file/valid/images/',
        'test' : '/content/drive/MyDrive/file/test/images/',
        'names' : ['mob','character'],
        'nc' : 2}

이런식으로 수정하면 된다.

 

train,val,test - train, val, test 이미지와 레이블이 있는 폴더

names - class 이름

nc : 클래스 개수

작성하고 

import yaml

data = {'train' : '/content/drive/MyDrive/file/train/images/',
        'val' : '/content/drive/MyDrive/file/valid/images/',
        'test' : '/content/drive/MyDrive/file/test/images/',
        'names' : ['mob','character'],
        'nc' : 2}

with open( '/content/drive/MyDrive/file/data.yaml', 'w') as f:
  yaml.dump(data,f)


with open( '/content/drive/MyDrive/file/data.yaml', 'r') as f:
  y = yaml.safe_load(f)
  display(y)
 

파이썬으로 작성하기

import ultralytics
from ultralytics import YOLO
model = YOLO('yolov8n.pt')

모델 불러오고 

model.train(data = '/content/drive/MyDrive/file/data.yaml',epochs = 1000,patience =30, batch=16,imgsz =640 )

 

학습시키고 

import os
import shutil

source = r"/content/runs/detect/train/weights/best.pt"
destination = r"/content/drive/MyDrive/best.pt"

shutil.move(source, destination)

 

구글 드라이브에 저장하고

 

 

import ultralytics
from ultralytics import YOLO
model = YOLO("/content/drive/MyDrive/best.pt")#학습한 모델 불러오기
 
while True:
    frame = capture.screenshot()#화면 캡쳐
    results = model.predict(source=frame, conf=0.65, iou=0.8, stream_buffer=True, verbose=False)# verbose=False - speed 로그 지우기 , 학습한 모델로 예측해보기
 

    conf=0
 
# Iterate over the results
    for result in results:
        boxes = result.boxes.cpu().numpy()  # Get boxes on CPU in numpy format
        for box in boxes:  # Iterate over boxes
            r = box.xyxy[0].astype(int)  # Get corner points as int  #위치 가져오기
            class_id = int(box.cls[0])  # Get class ID 
            class_name = model.names[class_id]  # Get class name using the class ID
            cv2.rectangle(frame, r[:2], r[2:], (0, 255, 0), 2)  # Draw boxes on the image# 네모 그리기 뒤에 imshow해서 보여줘야됨

저장한 모델 불러와서 예측한다