YOLO 모델이란? 빠르고 효율적인 객체 탐지 알고리즘 이해하기
YOLO(You Only Look Once) 모델은 단 한 번의 네트워크 실행으로 객체를 탐지하는 혁신적인 알고리즘이다. YOLO의 원리, 최신 버전(YOLOv8)의 성능, 그리고 간단한 사용 예제 코드까지 알아보자. 코랩 환경에서 YOLO 모델 테스트하기.
YOLO(You Only Look Once)
YOLO는 2015년에 발표된 혁신적인 객체 탐지 알고리즘이다. 이름 그대로 You Only Look Once, 즉 단 한 번의 네트워크 실행을 통해 전체 이미지를 탐지할 수 있는 것이 특징으로, 기존의 R-CNN과 같은 복잡한 방법론과 차별화된다.
YOLO 모델은 합성곱 신경망(Convolutional Neural Network, CNN)을 기반으로 만들어졌다. 영상은 그리드로 분할되어 신경망을 통해 바운딩 박스를 예측한 뒤 최종 감지 출력을 생성하게되는데, 이 접근 방식은 매우 빠르고 효율적인 객체 탐지를 가능하게 한다.
YOLO 모델 최근 현황
현재 YOLO 모델은 다양한 버전으로 발전해 왔으며 최신 버전인 YOLOv8은 YOLOv7에 비해 성능이 향상되어, mAP 86.4%를 COCO(Common Objects in Context) 데이터셋에서 달성했다. COCO 데이터셋은 80개의 객체 클래스로 구성된 방대한 대규모 데이터셋으로, 객체 탐지 알고리즘의 성능을 평가하는 데에 널리 사용되어진다.
IOU(Intersection Over Union): 물체 검출 분야의 평가 지표로, 머신러닝의 물체 검출 분야에서 2개의영역이 얼마나 겹쳐져있는가를 표시하는 평가 지표.
Bbox(Bounding Box): 객체 탐지에서 각 객체를 둘러싸는 경계 상자로, 객체의 위치와 크기를 정의한다.
합성곱 신경망이란?
합성곱 신경망(CNN)은 이미지 데이터를 처리하는 데 강력한 기능을 수행하는 신경망 구조로, 기본적으로 합성곱 층(Convolutional Layer), 활성화 함수(Activation Function), 풀링 층(Pooling Layer), 완전 연결층(Fully Connected Layer)으로 구성된다.
간단하게 YOLO 모델 사용해 보기
yolo모델은 코랩(Colab)이나 로컬 환경에서 파이썬을 이용하여 간단하게 테스트해 볼 수 있다. 아래는 YOLOv8 모델을 사용하여 객체를 탐지하는 예제 코드이다.
코랩이라면 !pip로 ultralytics 패키지를 설치한 후 실행하자.
!pip install ultralytics
from ultralytics import YOLO
import matplotlib.pyplot as plt
import cv2
import numpy as np
# YOLO 모델 로드
model = YOLO('yolov8n.pt')
# 이미지 URL 및 예측 수행
results = model.predict(
source='https://media.roboflow.com/notebooks/examples/dog.jpeg',
conf=0.25
)
# 결과에서 첫 번째 이미지를 가져옴
result = results[0]
# 디텍션된 이미지 가져오기
annotated_frame = result.plot() # bounding box와 함께 이미지를 그립니다.
# 이미지를 PIL 형식으로 변환
is_success, im_buf_arr = cv2.imencode(".jpg", annotated_frame)
im_buf_arr = np.frombuffer(im_buf_arr.tobytes(), dtype=np.uint8)
annotated_image = cv2.imdecode(im_buf_arr, cv2.IMREAD_COLOR)
# 이미지를 화면에 출력
plt.imshow(cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB))
plt.axis('off') # 축 제거
plt.show()
코랩에서도 인식이 잘 되는 것을 볼 수 있다.