Ultralytics YOLO로 모델 예측
소개
머신 러닝 및 컴퓨터 비전의 세계에서 시각적 데이터를 해석하는 과정을 '추론' 또는 '예측'이라고 합니다. Ultralytics YOLOv8는 다양한 데이터 소스에서의 고성능, 실시간 추론을 위해 맞춤화된 강력한 기능인 예측 모드를 제공합니다.
시청: Ultralytics YOLOv8 모델에서 출력을 추출하여 맞춤 프로젝트에 사용하는 방법.
실제 응용 분야
제조업 | 스포츠 | 안전 |
---|---|---|
차량 예비 부품 탐지 | 축구 선수 탐지 | 사람 넘어짐 탐지 |
예측 인퍼런스를 위해 Ultralytics YOLO 사용하기
다음은 YOLOv8의 예측 모드를 다양한 추론 요구 사항에 사용해야 하는 이유입니다:
- 다양성: 이미지, 비디오, 심지어 실시간 스트림에 대한 추론을 수행할 수 있습니다.
- 성능: 정확성을 희생하지 않고 실시간, 고속 처리를 위해 설계되었습니다.
- 사용 편의성: 빠른 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스를 제공합니다.
- 고도의 사용자 정의: 특정 요구 사항에 맞게 모델의 추론 행동을 조율하기 위한 다양한 설정 및 매개변수를 제공합니다.
예측 모드의 주요 기능
YOLOv8의 예측 모드는 강력하고 다재다능하게 설계되었으며, 다음과 같은 특징을 갖고 있습니다:
- 다중 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 컬렉션, 비디오 파일 또는 실시간 비디오 스트림의 형태로 존재하는지 여부에 관계없이 예측 모드가 지원합니다.
- 스트리밍 모드:
Results
객체의 메모리 효율적인 생성자로 스트리밍 기능을 사용합니다. 예측기의 호출 메서드에서stream=True
로 설정하여 활성화합니다. - 배치 처리: 단일 배치에서 여러 이미지 또는 비디오 프레임을 처리하는 기능을 통해 추론 시간을 더욱 단축합니다.
- 통합 친화적: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.
Ultralytics YOLO 모델은 Python Results
객체의 리스트를 반환하거나, 추론 중 stream=True
가 모델에 전달될 때 Results
객체의 메모리 효율적인 Python 생성자를 반환합니다:
예측
from ultralytics import YOLO
# 모델 로드
model = YOLO('yolov8n.pt') # 사전 훈련된 YOLOv8n 모델
# 이미지 리스트에 대한 배치 추론 실행
results = model(['im1.jpg', 'im2.jpg']) # Results 객체의 리스트 반환
# 결과 리스트 처리
for result in results:
boxes = result.boxes # bbox 출력을 위한 Boxes 객체
masks = result.masks # 세그멘테이션 마스크 출력을 위한 Masks 객체
keypoints = result.keypoints # 자세 출력을 위한 Keypoints 객체
probs = result.probs # 분류 출력을 위한 Probs 객체
from ultralytics import YOLO
# 모델 로드
model = YOLO('yolov8n.pt') # 사전 훈련된 YOLOv8n 모델
# 이미지 리스트에 대한 배치 추론 실행
results = model(['im1.jpg', 'im2.jpg'], stream=True) # Results 객체의 생성자 반환
# 결과 생성자 처리
for result in results:
boxes = result.boxes # bbox 출력을 위한 Boxes 객체
masks = result.masks # 세그멘테이션 마스크 출력을 위한 Masks 객체
keypoints = result.keypoints # 자세 출력을 위한 Keypoints 객체
probs = result.probs # 분류 출력을 위한 Probs 객체
추론 소스
YOLOv8은 아래 표에 표시된 바와 같이 추론을 위한 다양한 유형의 입력 소스를 처리할 수 있습니다. 소스에는 정적 이미지, 비디오 스트림, 다양한 데이터 형식이 포함됩니다. 표는 또한 각 소스를 'stream=True' ✅와 함께 스트리밍 모드에서 사용할 수 있는지 여부를 나타냅니다. 스트리밍 모드는 비디오나 라이브 스트림을 처리할 때 결과를 메모리에 모두 로드하는 대신 결과의 생성자를 만들어 유용하게 사용됩니다.
팁
긴 비디오나 큰 데이터 세트를 처리할 때 'stream=True'를 사용하여 효율적으로 메모리를 관리합니다. 'stream=False'일 때는 모든 프레임 또는 데이터 포인트에 대한 결과가 메모리에 저장되어, 입력이 크면 메모리 부족 오류를 빠르게 유발할 수 있습니다. 반면에, 'stream=True'는 생성자를 사용하여 현재 프레임 또는 데이터 포인트의 결과만 메모리에 유지하여 메모리 소비를 크게 줄이고 메모리 부족 문제를 방지합니다.
소스 | 인수 | 유형 | 비고 |
---|---|---|---|
이미지 | 'image.jpg' |
str 또는 Path |
단일 이미지 파일. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
이미지 URL. |
스크린샷 | 'screen' |
str |
스크린샷을 캡처합니다. |
PIL | Image.open('im.jpg') |
PIL.Image |
HWC 형식으로 RGB 채널이 있습니다. |
OpenCV | cv2.imread('im.jpg') |
np.ndarray |
HWC 형식으로 BGR 채널이 있고 uint8 (0-255) 입니다. |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
HWC 형식으로 BGR 채널이 있고 uint8 (0-255) 입니다. |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
BCHW 형식으로 RGB 채널이 있고 float32 (0.0-1.0) 입니다. |
CSV | 'sources.csv' |
str 또는 Path |
이미지, 비디오 또는 디렉토리 경로가 있는 CSV 파일. |
비디오 ✅ | 'video.mp4' |
str 또는 Path |
MP4, AVI 등과 같은 형식의 비디오 파일입니다. |
디렉토리 ✅ | 'path/' |
str 또는 Path |
이미지나 비디오가 있는 디렉토리 경로입니다. |
글로브 ✅ | 'path/*.jpg' |
str |
여러 파일에 일치하는 글로브 패턴입니다. '*' 문자를 와일드카드로 사용하세요. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
YouTube 비디오의 URL입니다. |
스트림 ✅ | 'rtsp://example.com/media.mp4' |
str |
RTSP, RTMP, TCP 또는 IP 주소와 같은 스트리밍 프로토콜의 URL입니다. |
멀티-스트림 ✅ | 'list.streams' |
str 또는 Path |
스트림 URL이 행당 하나씩 있는 *.streams 텍스트 파일이며, 예를 들어 8개의 스트림은 배치 크기 8에서 실행됩니다. |
아래는 각 유형의 소스를 사용하는 코드 예제입니다:
예측 소스
이미지 파일에서 추론을 실행합니다.
현재 스크린 콘텐츠를 스크린샷으로 추론을 실행합니다.
URL을 통해 원격으로 호스팅되는 이미지나 비디오에서 추론을 실행합니다.
Python Imaging Library (PIL)로 열린 이미지에서 추론을 실행합니다.
OpenCV로 읽은 이미지에서 추론을 실행합니다.
numpy 배열로 표현된 이미지에서 추론을 실행합니다.
PyTorch 텐서로 표현된 이미지에서 추론을 실행합니다.