반응형
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. 결과
- YOLOv8 모델은 실시간으로 객체 탐지를 수행하며, 노트북 내장 카메라로 촬영되는 영상을 처리합니다.
- Bounding Box와 클래스 레이블이 표시된 실시간 영상이 출력됩니다.
추가적인 팁
- 성능 최적화:
- 내장 카메라는 종종 해상도가 낮고, GPU 가속이 없을 수 있어 속도가 느릴 수 있습니다. 이 경우 YOLOv8n (Nano 모델) 같은 작은 모델을 사용하면 속도를 개선할 수 있습니다.
- 모델 개선:
- 사전 학습된 모델을 바로 사용할 수 있지만, 특정 객체나 환경에 맞춰 추가 학습(fine-tuning)을 하면 더 좋은 성능을 얻을 수 있습니다.
- 실시간 성능:
- YOLOv8은 속도와 정확도의 균형이 잘 맞는 모델이라서, 일반적인 노트북 내장 카메라로도 실시간 탐지가 가능합니다. 그러나 속도가 중요하다면 더 작은 모델(YOLOv8n)을 사용하는 것이 좋습니다.
반응형