[YOLO] #1. YOLO v8 실행하기

임소현·2023년 6월 25일
1

YOLO

목록 보기
1/5

이번에 URP 프로젝트로 YOLO를 이용하여 진행하기로 해서 YOLO를 요즘 한창 공부하는 중이다.

사실 YOLO는 작년에 대회 나갈 때 한번 써본 적이 있긴 하지만, 그때는 정말 아무것도 모르고 했던 시기이기 때문에 이제서야 어떠한 원리로 작동하는지 알아가는 중이다.

YOLO v1, v2는 상세하게 논문을 읽고 원리를 공부했는데 시간 여유가 있을 때 정리해서 포스팅 할 예정이다.

YOLO v1 ~ v7 까지는 코드까지 공부하지는 않았고 원리 및 변화점 위주로만 공부했지만, 프로젝트에 직접 이용할 YOLO v8 같은 경우에는 직접 사용할 것이기 때문에 코드를 직접 공부해볼 예정이다. 아직 코드를 보지는 못했지만 코드 분석 만으로도 많은 시간이 걸릴 것 같다.

본격적으로 코드 분석을 해보기 전에 먼저 YOLO v8에 대해 알아보려 한다. 직접 실행해보며 어떻게 작동되는지를 알면 좀 더 수월하게 코드를 볼 수 있을 것 같기도 하다.

코드 실행은 vscode 환경에서 진행했다. colab에서 실행을 시도해보았지만, 아무래도 노트북 웹캠이랑 연결을 해야해서 colab 환경에서는 안되는 것 같다.
vscode에서 python 파일은 처음 실행해봐서 아예 실행 자체가 되지 않아서 당황했지만.. vscode 왼쪽에 4번째쯤 파이썬 표식을 클릭하고 실행을 하면 웹캠까지 잘 작동되는 것을 확인할 수 있었다.

vscode는 보통 웹 개발할 때만 썼었는데 아무래도 이제부터는 py 역시 vscode에서 할 것 같다.. vscode는 정말정말 편하다.

코드는 다음과 같다. 구글링해서 그대로 코드만 가져왔다.

import cv2
from ultralytics import YOLO

model = YOLO('yolov8n.pt')

cap = cv2.VideoCapture(0)

while cap.isOpened():
    success, frame = cap.read()
    
    if success:
        results= model(frame)
        
        annotated_frame = results[0].plot()
        
        cv2.imshow("YOLOv8 Inference", annotated_frame)
        
        if cv2.waitKey(1)&0xFF == ord("q"):
            break
    else:
        print("hhi")
        break
    
cap.release()
cv2.destroyAllWindows()

YOLO는 미리 사전에 정의된 라이브러리가 있어서 라이브러리 설치 후, 모델의 pt 파일만 불러와서 매우 쉽게 사용할 수 있다. n은 객체 사이즈를 의미하며 s,m,l 등 사이즈에 따라 다른 pt 파일이 있기 때문에 주로 객체 탐지를 할 객체 사이즈에 해당하는 pt 파일을 로드하여 사용하면 된다.
실행하기 전 cv2와 ultralytics만 잘 설치해준다면 잘 작동할 것이다. 에러없이 한번에 모델 실행까지 해본 경험이 정말 오랜만이라 기분이 좋다. 다음 포스팅은 코드 분석하기전 마지막으로 YOLO v8에 대한 공부를 더 깊이있게 해볼 예정이다. 근데 v8은 논문이 발간이 안됐는지 아무리 찾아도 안보인다. 내가 못찾는 걸수도..

다음 공부에 참고할 링크 주소