웹캠 영상을 입력으로 하여 YOLO v8을 실행해봅니다.
2023. 5. 8 최초작성
2023. 9. 28 링크 오류 수정
2023. 10. 3 CUDA 사용하기 위해 필요한 점 수정
관련 포스트
Yolo v8 pose 사용해보기
https://webnautes.tistory.com/1852
다음 포스트를 참고하여 파이썬 개발 환경을 만드는 것을 권장합니다.
Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu)
https://webnautes.tistory.com/1842
좀 더 빠르게 욜로를 실행시키려면 CUDA를 사용하도록 Pytorch를 설치해야 합니다.
( https://qiita.com/kotai2003/items/32329a90703394d39d5c )
Ubuntu 22.04에 CUDA 사용할 수 있도록 PyTorch 2.0 설치하는 방법
https://webnautes.tistory.com/1845
WSL2에서 CUDA 사용할 수 있도록 PyTorch 2.0 설치하는 방법
https://webnautes.tistory.com/1849
Windows에 CUDA Toolkit 11.8 cuDNN 8.7.0 PyTorch 설치하는 방법
https://webnautes.tistory.com/1850
욜로 테스트 코드를 실행할 가상환경을 생성합니다. Python 3.11을 사용하도록 생성했습니다.
(base) C:\Users\webnautes>conda create -n yolov8 python=3.11
가상환경을 활성화합니다.
(base) C:\Users\webnautes>conda activate yolov8
필요한 패키지를 설치합니다.
(yolov8) C:\Users\webnautes>pip install opencv-python
(yolov8) C:\Users\webnautes>pip install ultralytics
다음 코드를 test_yolov8.py 이름으로 저장합니다.
여기서부터는 Visual Studio Code에서 진행하면 편합니다.
import cv2 from ultralytics import YOLO # Load the YOLOv8 model model = YOLO('yolov8n.pt') # 동영상 파일 사용시 # video_path = "path/to/your/video/file.mp4" # cap = cv2.VideoCapture(video_path) # webcam 사용시 cap = cv2.VideoCapture(0) # Loop through the video frames while cap.isOpened(): # Read a frame from the video success, frame = cap.read() if success: # Run YOLOv8 inference on the frame results = model(frame) # Visualize the results on the frame annotated_frame = results[0].plot() # Display the annotated frame cv2.imshow("YOLOv8 Inference", annotated_frame) # Break the loop if 'q' is pressed if cv2.waitKey(1) & 0xFF == ord("q"): break else: # Break the loop if the end of the video is reached break # Release the video capture object and close the display window cap.release() cv2.destroyAllWindows() |
실행시키면 사람 및 물건이 검출이 된 결과를 보여줍니다.
사람이 검출된 확률이 76%이고 리모컨이 검출된 확률이 84%입니다.
q를 누르면 프로그램이 종료됩니다.
터미널에는 검출결과가 연속적으로 출력됩니다.
사람 1명과 리모컨 1개가 검출되었다고 출력되었고 검출하는데 163.4ms 걸렸다고 출력되었습니다.
0: 480x640 1 person, 1 remote, 163.4ms
Speed: 2.9ms preprocess, 163.4ms inference, 0.0ms postprocess per image at shape (1, 3, 640, 640)
코드에서는 욜로 모델로 yolov8n.pt를 사용하고 있습니다.
아래 표의 Model 열에 있는 모델 이름 중 아래쪽에 있는 걸 적을 수록 물체 검출 정확도가 올라가는 대신 검출하는데 걸리는 시간이 좀 더 걸립니다. 코드에서 yolov8n.pt 자리에 다른 모델 이름을 적어주면 됩니다.
참고
https://docs.ultralytics.com/modes/predict/#streaming-source-for-loop
https://github.com/ultralytics/ultralytics
'Deep Learning & Machine Learning > YOLO' 카테고리의 다른 글
YOLO v4 실행시키는 방법 (0) | 2023.10.21 |
---|---|
Ubuntu에서 darknet을 사용하여 Yolo v4 커스텀 학습하는 방법 (0) | 2023.10.08 |
YOLO v8 pose 사용해보기 (0) | 2023.10.04 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!