본문 바로가기
카테고리 없음

YOLOv8 실습 예제 : 노트북 캠으로 객체(사람) 탐지(Object Detection)

by 쨔우쨔우 2025. 3. 21.
반응형

YOLOv8을 이용해서 노트북 내장 캠으로 객체(사람) 탐지하는 예제를 수행해보겠습니다.

OpenCV와 YOLOv8을 함께 사용하여 실시간 객체 탐지 앱을 만들 수 있습니다.

이 과정은 크게 YOLOv8 모델 로딩, 카메라 스트림 캡처, 객체 탐지 수행 단계로 나눠집니다.

 

YOLOv8을 이용한 실시간 객체 탐지(노트북 내장 카메라)

1. 필요한 라이브러리 설치

 

  • 먼저, YOLOv8을 사용할 수 있도록 Ultralytics의 YOLOv8 라이브러리를 설치해야 합니다.
  • 또한, OpenCV는 카메라 스트림을 캡처하고 이미지를 처리하는 데 필요합니다.
pip install ultralytics opencv-python

 

 

2. YOLOv8 모델 다운로드 및 로드

  • YOLOv8을 사용하려면 사전 학습된 모델을 로드해야 합니다. Ultralytics에서 제공하는 모델을 쉽게 다운로드하고 사용할 수 있습니다.
from ultralytics import YOLO

# YOLOv8 모델 로드 (예: YOLOv8s, YOLOv8m 등)
model = YOLO("yolov8n.pt")  # yolov8n는 작은 모델이어서 속도가 빠름(nano)

 

3. 노트북 카메라에서 실시간 영상 캡처

  • OpenCV를 이용해 카메라에서 실시간 영상을 캡처하고, 이 영상을 YOLOv8 모델로 객체 탐지를 할 수 있어.
from ultralytics import YOLO
import cv2

# YOLOv8 모델 로드 (예: YOLOv8n.pt)
model = YOLO("yolov8n.pt")  # yolov8n 모델을 사용 (속도가 빠름)

# 카메라 스트림 시작 (내장 카메라는 일반적으로 0번)
cap = cv2.VideoCapture(0)

while True:
    # 프레임 캡처
    ret, frame = cap.read()
    if not ret:
        break

    # YOLOv8 모델로 객체 탐지 수행
    results = model(frame)

    # 렌더링된 이미지 반환 (results[0]으로 접근)
    # results 객체는 리스트 형식으로 반환되므로 results[0]로 접근하여 해당 객체를 렌더링 해야 함!
    frame_rendered = results[0].plot()  # 'plot()'을 사용하여 렌더링된 이미지를 반환

    # 결과 화면에 출력
    cv2.imshow("YOLOv8 Object Detection", frame_rendered)

    # 'q' 키를 누르면 종료
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 카메라와 윈도우 리소스 해제
cap.release()
cv2.destroyAllWindows()

 

4. 코드 설명

 

  • cv2.VideoCapture(0): 노트북 내장 카메라(일반적으로 0번 카메라)를 열어 비디오 스트림을 시작합니다.
  • model(frame): YOLOv8 모델을 사용하여 각 프레임에서 객체 탐지를 수행합니다.
  • results[0].plot: YOLOv8 모델이 탐지한 객체에 대해 Bounding Box를 그려줍니다. results 객체는 리스트 형식으로 반환되므로 results[0]으로 접근하여 해당 객체를 랜더링해야 합니다.
  • cv2.imshow(): 탐지된 객체가 표시된 비디오를 화면에 출력합니다.
  • cv2.waitKey(1): 1ms 대기 후 키 입력을 감지하고, 'q' 키를 누르면 프로그램이 종료됩니다.

5. 결과

test result

 

  • YOLOv8 모델은 실시간으로 객체 탐지를 수행하며, 노트북 내장 카메라로 촬영되는 영상을 처리합니다.
  • Bounding Box와 클래스 레이블이 표시된 실시간 영상이 출력됩니다.

추가적인 팁

  • 성능 최적화:
    • 내장 카메라는 종종 해상도가 낮고, GPU 가속이 없을 수 있어 속도가 느릴 수 있습니다. 이 경우 YOLOv8n (Nano 모델) 같은 작은 모델을 사용하면 속도를 개선할 수 있습니다.
  • 모델 개선:
    • 사전 학습된 모델을 바로 사용할 수 있지만, 특정 객체나 환경에 맞춰 추가 학습(fine-tuning)을 하면 더 좋은 성능을 얻을 수 있습니다.
  • 실시간 성능:
    • YOLOv8속도와 정확도의 균형이 잘 맞는 모델이라서, 일반적인 노트북 내장 카메라로도 실시간 탐지가 가능합니다. 그러나 속도가 중요하다면 더 작은 모델(YOLOv8n)을 사용하는 것이 좋습니다.

 

 

반응형