Ultralytics YOLO를 사용한 모델 예측
소개
머신 러닝 및 컴퓨터 비전 분야에서 시각적 데이터에서 의미를 도출하는 과정을 '추론' 또는 '예측'이라고 합니다. Ultralytics YOLO11은 광범위한 데이터 소스에서 고성능 실시간 추론에 맞게 조정된 예측 모드라는 강력한 기능을 제공합니다.
참고: 사용자 지정 프로젝트를 위해 Ultralytics YOLO 모델에서 출력을 추출하는 방법.
실제 응용 분야
제조 | 스포츠 | 안전 |
---|---|---|
차량 예비 부품 감지 | 축구 선수 감지 | 사람 넘어짐 감지 |
추론에 Ultralytics YOLO를 사용하는 이유는 무엇인가요?
다양한 추론 요구 사항에 대해 YOLO11의 예측 모드를 고려해야 하는 이유는 다음과 같습니다.
- 다재다능함: 이미지, 비디오, 심지어 라이브 스트림에서도 추론을 수행할 수 있습니다.
- 성능: 정확도를 희생하지 않고 실시간 고속 처리를 위해 설계되었습니다.
- 사용 편의성: 신속한 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스를 제공합니다.
- 높은 사용자 정의 가능성: 특정 요구 사항에 따라 모델의 추론 동작을 조정할 수 있는 다양한 설정 및 파라미터를 제공합니다.
Predict 모드의 주요 기능
YOLO11의 예측 모드는 다음과 같은 특징으로 강력하고 다재다능하도록 설계되었습니다.
- 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 비디오 파일 또는 실시간 비디오 스트림 형식이든 예측 모드에서 처리할 수 있습니다.
- 스트리밍 모드: 스트리밍 기능을 사용하여 메모리 효율적인 생성기를 생성합니다.
Results
객체. predictor의 호출 메서드에서 다음을 설정하여 활성화합니다.stream=True
predictor 호출 메서드에서. - 일괄 처리: 단일 일괄 처리에서 여러 이미지 또는 비디오 프레임을 처리하여 추론 시간을 더욱 단축하는 기능입니다.
- 통합 친화적: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.
Ultralytics YOLO 모델은 Python 객체 목록 또는 메모리 효율적인 Python 생성기 중 하나를 반환합니다. Results
객체 또는 메모리 효율적인 Python 생성기를 반환합니다. Results
객체 ( stream=True
추론 과정에서 모델에 전달됩니다.
예측
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
추론 소스
YOLO11은 아래 표와 같이 추론을 위해 다양한 유형의 입력 소스를 처리할 수 있습니다. 소스에는 정적 이미지, 비디오 스트림 및 다양한 데이터 형식이 포함됩니다. 또한 이 표는 각 소스를 인수와 함께 스트리밍 모드에서 사용할 수 있는지 여부를 나타냅니다. 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('image.jpg') |
PIL.Image |
RGB 채널이 있는 HWC 형식입니다. |
OpenCV | cv2.imread('image.jpg') |
np.ndarray |
BGR 채널이 있는 HWC 형식 uint8 (0-255) . |
numpy | np.zeros((640,1280,3)) |
np.ndarray |
BGR 채널이 있는 HWC 형식 uint8 (0-255) . |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
RGB 채널이 있는 BCHW 형식 float32 (0.0-1.0) . |
CSV | 'sources.csv' |
str 또는 Path |
이미지, 비디오 또는 디렉토리 경로가 포함된 CSV 파일입니다. |
비디오 ✅ | 'video.mp4' |
str 또는 Path |
MP4, AVI 등 형식의 비디오 파일 |
디렉터리 ✅ | 'path/' |
str 또는 Path |
이미지 또는 비디오가 포함된 디렉터리 경로입니다. |
glob ✅ | 'path/*.jpg' |
str |
여러 파일을 매칭하기 위한 Glob 패턴입니다. 와일드카드로 * 문자를 사용하세요. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
YouTube 비디오 URL입니다. |
스트림 ✅ | 'rtsp://example.com/media.mp4' |
str |
RTSP, RTMP, TCP 또는 IP 주소와 같은 스트리밍 프로토콜 URL입니다. |
멀티 스트림 ✅ | 'list.streams' |
str 또는 Path |
*.streams 행마다 스트림 URL이 하나씩 있는 텍스트 파일입니다. 예를 들어 8개의 스트림은 배치 크기 8로 실행됩니다. |
웹캠 ✅ | 0 |
int |
추론을 실행할 연결된 카메라 장치의 인덱스입니다. |
다음은 각 소스 유형 사용에 대한 코드 예제입니다.
예측 소스
이미지 파일에서 추론을 실행합니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects
현재 화면 콘텐츠에서 스크린샷으로 추론을 실행합니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define current screenshot as source
source = "screen"
# Run inference on the source
results = model(source) # list of Results objects
URL을 통해 원격으로 호스팅되는 이미지 또는 비디오에 대한 추론을 실행합니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Python Imaging Library(PIL)로 열린 이미지에 대한 추론을 실행합니다.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Open an image using PIL
source = Image.open("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
OpenCV로 읽은 이미지에 대한 추론을 실행합니다.
import cv2
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
numpy 배열로 표현된 이미지에 대한 추론을 실행합니다.
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")
# Run inference on the source
results = model(source) # list of Results objects
PyTorch tensor로 표현된 이미지에 대한 추론을 실행합니다.
import torch
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
CSV 파일에 나열된 이미지, URL, 비디오 및 디렉토리 모음에 대한 추론을 실행합니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"
# Run inference on the source
results = model(source) # list of Results objects
비디오 파일에 대한 추론을 실행합니다. 다음을 사용하여 stream=True
, Results 객체의 생성기를 만들어 메모리 사용량을 줄일 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to video file
source = "path/to/video.mp4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
디렉토리의 모든 이미지 및 비디오에 대한 추론을 실행합니다. 하위 디렉토리의 이미지 및 비디오도 캡처하려면 glob 패턴(예: )을 사용하십시오. path/to/dir/**/*
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to directory containing images and videos for inference
source = "path/to/dir"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
다음을 사용하여 glob 표현식과 일치하는 모든 이미지 및 비디오에 대한 추론을 실행합니다. *
문자.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
YouTube 비디오에 대한 추론을 실행합니다. 다음을 사용하여 stream=True
, Results 객체의 생성기를 만들어 긴 비디오의 메모리 사용량을 줄일 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
스트림 모드를 사용하여 RTSP, RTMP, TCP 또는 IP 주소 프로토콜을 사용하는 라이브 비디오 스트림에 대한 추론을 실행합니다. 단일 스트림이 제공되면 모델은 다음을 사용하여 추론을 실행합니다. 배치 크기 1. 여러 스트림의 경우, 배치 추론을 수행하는 데 텍스트 파일을 사용할 수 있으며, 여기서 배치 크기는 제공된 스트림 수에 따라 결정됩니다(예: 8개 스트림의 경우 배치 크기 8). .streams
텍스트 파일을 사용하여 일괄 추론을 수행할 수 있으며, 여기서 배치 크기는 제공된 스트림 수에 따라 결정됩니다(예: 8개 스트림의 경우 배치 크기 8).
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
단일 스트림을 사용하는 경우 배치 크기는 기본적으로 1로 설정되어 비디오 피드의 효율적인 실시간 처리가 가능합니다.
여러 비디오 스트림을 동시에 처리하려면 스트리밍 소스가 포함된 .streams
텍스트 파일을 사용하십시오. 모델은 배치 크기가 스트림 수와 같은 배치 추론을 실행합니다. 이 설정을 통해 여러 피드를 동시에 효율적으로 처리할 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
예시 .streams
텍스트 파일:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
파일의 각 행은 스트리밍 소스를 나타내므로 여러 비디오 스트림을 동시에 모니터링하고 추론을 수행할 수 있습니다.
특정 카메라의 인덱스를 전달하여 연결된 카메라 장치에서 추론을 실행할 수 있습니다. source
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on the source
results = model(source=0, stream=True) # generator of Results objects
추론 인수
model.predict()
는 추론 시 기본값을 재정의하기 위해 전달할 수 있는 여러 인수를 허용합니다.
예시
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
추론 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
source |
str |
'ultralytics/assets' |
추론을 위한 데이터 소스를 지정합니다. 이미지 경로, 비디오 파일, 디렉터리, URL 또는 라이브 피드를 위한 장치 ID가 될 수 있습니다. 다양한 형식과 소스를 지원하여 다양한 유형의 입력에 걸쳐 유연한 적용이 가능합니다. |
conf |
float |
0.25 |
검출에 대한 최소 신뢰도 임계값을 설정합니다. 이 임계값 미만의 신뢰도로 검출된 객체는 무시됩니다. 이 값을 조정하면 오탐지를 줄이는 데 도움이 될 수 있습니다. |
iou |
float |
0.7 |
Non-Maximum Suppression (NMS)을 위한 Intersection Over Union (IoU) 임계값입니다. 값이 낮을수록 중복 상자를 제거하여 검출 수가 줄어들며, 이는 중복을 줄이는 데 유용합니다. |
imgsz |
int 또는 tuple |
640 |
추론을 위한 이미지 크기를 정의합니다. 정사각형 크기 조정을 위한 단일 정수 640 또는 (높이, 너비) 튜플이 될 수 있습니다. 적절한 크기 조정은 검출 정확도 및 처리 속도를 향상시킬 수 있습니다. |
rect |
bool |
True |
활성화된 경우 추론 속도를 향상시키기 위해 이미지의 짧은 면을 스트라이드(stride)로 나눌 수 있을 때까지 최소한으로 채웁니다. 비활성화된 경우 추론 중에 이미지를 정사각형으로 채웁니다. |
half |
bool |
False |
Half-precision (FP16) 추론을 활성화하여 정확도에 미치는 영향을 최소화하면서 지원되는 GPU에서 모델 추론 속도를 높일 수 있습니다. |
device |
str |
None |
추론을 위한 장치를 지정합니다 (예: cpu , cuda:0 또는 0 ). 사용자는 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다. |
batch |
int |
1 |
추론을 위한 배치 크기를 지정합니다(소스가 다음인 경우에만 작동). 디렉토리, 비디오 파일 또는 .txt 파일). 배치 크기가 클수록 처리량이 높아져 추론에 필요한 총 시간을 단축할 수 있습니다. |
max_det |
int |
300 |
이미지당 허용되는 최대 검출 수입니다. 모델이 단일 추론에서 검출할 수 있는 총 객체 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다. |
vid_stride |
int |
1 |
비디오 입력에 대한 프레임 스트라이드입니다. 시간 해상도를 희생하면서 비디오에서 프레임을 건너뛰어 처리 속도를 높일 수 있습니다. 값이 1이면 모든 프레임을 처리하고, 값이 높을수록 프레임을 건너뜁니다. |
stream_buffer |
bool |
False |
비디오 스트림에 대한 들어오는 프레임을 대기열에 넣을지 여부를 결정합니다. 만약 False , 이전 프레임은 삭제되어 새 프레임을 수용합니다(실시간 애플리케이션에 최적화됨). `True`인 경우 True , 새 프레임을 버퍼에 대기시켜 프레임이 건너뛰지 않도록 하지만, 추론 FPS가 스트림 FPS보다 낮으면 지연이 발생합니다. |
visualize |
bool |
False |
추론 중에 모델 특징의 시각화를 활성화하여 모델이 "보고" 있는 내용에 대한 통찰력을 제공합니다. 디버깅 및 모델 해석에 유용합니다. |
augment |
bool |
False |
예측에 대한 테스트 시간 증강 (TTA)을 활성화하여 추론 속도를 희생하면서 검출 견고성을 잠재적으로 향상시킵니다. |
agnostic_nms |
bool |
False |
클래스에 구애받지 않는 Non-Maximum Suppression (NMS)을 활성화하여 서로 다른 클래스의 겹치는 상자를 병합합니다. 클래스 겹침이 흔한 다중 클래스 검출 시나리오에서 유용합니다. |
classes |
list[int] |
None |
예측을 클래스 ID 집합으로 필터링합니다. 지정된 클래스에 속하는 검출만 반환됩니다. 다중 클래스 검출 작업에서 관련 객체에 집중하는 데 유용합니다. |
retina_masks |
bool |
False |
고해상도 분할 마스크를 반환합니다. 반환된 마스크 (masks.data )는 활성화된 경우 원본 이미지 크기와 일치합니다. 비활성화된 경우 추론 중에 사용된 이미지 크기를 갖습니다. |
embed |
list[int] |
None |
특징 벡터 또는 임베딩을 추출할 레이어를 지정합니다. 클러스터링 또는 유사성 검색과 같은 다운스트림 작업에 유용합니다. |
project |
str |
None |
가 활성화된 경우 예측 결과가 저장되는 프로젝트 디렉토리의 이름입니다. save 입니다. |
name |
str |
None |
예측 실행 이름입니다. 프로젝트 폴더 내에 하위 디렉터리를 만드는 데 사용되며, 예측 결과가 저장되는 경우 save 입니다. |
stream |
bool |
False |
모든 프레임을 한 번에 메모리에 로드하는 대신 Results 객체의 생성기를 반환하여 긴 비디오 또는 수많은 이미지에 대한 메모리 효율적인 처리를 활성화합니다. |
verbose |
bool |
True |
터미널에 자세한 추론 로그를 표시할지 여부를 제어하여 예측 프로세스에 대한 실시간 피드백을 제공합니다. |
시각화 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
show |
bool |
False |
만약 True , 어노테이션이 적용된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다. |
save |
bool |
False or True |
어노테이션이 적용된 이미지 또는 비디오를 파일로 저장할 수 있습니다. 문서화, 추가 분석 또는 결과 공유에 유용합니다. CLI를 사용할 때는 기본적으로 True이고, python에서 사용할 때는 False입니다. |
save_frames |
bool |
False |
비디오를 처리할 때 개별 프레임을 이미지로 저장합니다. 특정 프레임을 추출하거나 프레임별 상세 분석에 유용합니다. |
save_txt |
bool |
False |
감지 결과를 텍스트 파일에 다음 형식으로 저장합니다. [class] [x_center] [y_center] [width] [height] [confidence] . 다른 분석 도구와의 통합에 유용합니다. |
save_conf |
bool |
False |
저장된 텍스트 파일에 신뢰도 점수를 포함합니다. 사후 처리 및 분석에 사용할 수 있는 세부 정보를 향상시킵니다. |
save_crop |
bool |
False |
감지된 객체의 잘린 이미지를 저장합니다. 데이터 세트 증강, 분석 또는 특정 객체에 대한 집중적인 데이터 세트 생성에 유용합니다. |
show_labels |
bool |
True |
시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다. |
show_conf |
bool |
True |
레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다. |
show_boxes |
bool |
True |
감지된 객체 주위에 경계 상자를 그립니다. 이미지 또는 비디오 프레임에서 객체의 시각적 식별 및 위치에 필수적입니다. |
line_width |
None or int |
None |
경계 상자의 선 너비를 지정합니다. 만약 None , 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다. |
이미지 및 비디오 형식
YOLO11은 ultralytics/data/utils.py에 지정된 대로 다양한 이미지 및 비디오 형식을 지원합니다. 유효한 접미사 및 예제 예측 명령어는 아래 표를 참조하십시오.
이미지
아래 표에는 유효한 Ultralytics 이미지 형식이 포함되어 있습니다.
참고
HEIC 이미지는 훈련에는 지원되지 않고 추론에만 지원됩니다.
이미지 접미사 | 예제 예측 명령어 | 참조 |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft BMP 파일 형식 |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
Multi Picture Object |
.png |
yolo predict source=image.png |
Portable Network Graphics |
.tif |
yolo predict source=image.tif |
Tag Image File Format |
.tiff |
yolo predict source=image.tiff |
Tag Image File Format |
.webp |
yolo predict source=image.webp |
WebP |
.pfm |
yolo predict source=image.pfm |
Portable FloatMap |
.HEIC |
yolo predict source=image.HEIC |
High Efficiency Image Format |
비디오
다음 표는 유효한 Ultralytics 비디오 형식을 나타냅니다.
비디오 접미사 | 예제 예측 명령어 | 참조 |
---|---|---|
.asf |
yolo predict source=video.asf |
Advanced Systems Format |
.avi |
yolo predict source=video.avi |
Audio Video Interleave |
.gif |
yolo predict source=video.gif |
Graphics Interchange Format |
.m4v |
yolo predict source=video.m4v |
MPEG-4 Part 14 |
.mkv |
yolo predict source=video.mkv |
Matroska |
.mov |
yolo predict source=video.mov |
QuickTime File Format |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 Part 14 - Wikipedia |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 Part 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 Part 2 |
.ts |
yolo predict source=video.ts |
MPEG Transport Stream |
.wmv |
yolo predict source=video.wmv |
Windows Media Video |
.webm |
yolo predict source=video.webm |
WebM Project |
결과 작업
모든 Ultralytics predict()
호출은 다음 목록을 반환합니다. Results
객체:
결과
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inference
Results
객체는 다음과 같은 속성을 가집니다.
속성 | 유형 | 설명 |
---|---|---|
orig_img |
np.ndarray |
numpy 배열 형태의 원본 이미지입니다. |
orig_shape |
tuple |
원본 이미지의 형태는 (높이, 너비) 형식입니다. |
boxes |
Boxes, optional |
검출된 경계 상자를 포함하는 Boxes 객체입니다. |
masks |
Masks, optional |
검출 마스크를 포함하는 Masks 객체입니다. |
probs |
Probs, optional |
분류 작업에 대한 각 클래스의 확률을 포함하는 Probs 객체입니다. |
keypoints |
Keypoints, optional |
각 객체에 대해 검출된 키포인트를 포함하는 Keypoints 객체입니다. |
obb |
OBB, optional |
방향이 지정된 경계 상자를 포함하는 OBB 객체입니다. |
speed |
dict |
이미지당 밀리초 단위의 전처리, 추론 및 후처리 속도에 대한 딕셔너리입니다. |
names |
dict |
클래스 인덱스를 클래스 이름에 매핑하는 사전입니다. |
path |
str |
이미지 파일의 경로입니다. |
save_dir |
str, optional |
결과를 저장할 디렉토리. |
Results
객체는 다음과 같은 메서드를 가지고 있습니다.
메서드 | 반환 유형 | 설명 |
---|---|---|
update() |
None |
새로운 감지 데이터(bounding box, 마스크, 확률, OBB, 키포인트)로 Results 객체를 업데이트합니다. |
cpu() |
Results |
모든 tensor가 CPU 메모리로 이동된 Results 객체의 복사본을 반환합니다. |
numpy() |
Results |
모든 tensor가 numpy 배열로 변환된 Results 객체의 복사본을 반환합니다. |
cuda() |
Results |
모든 tensor가 GPU 메모리로 이동된 Results 객체의 복사본을 반환합니다. |
to() |
Results |
tensor가 지정된 장치 및 dtype으로 이동된 Results 객체의 복사본을 반환합니다. |
new() |
Results |
동일한 이미지, 경로, 이름 및 속도 속성을 사용하여 새로운 Results 객체를 생성합니다. |
plot() |
np.ndarray |
입력 RGB 이미지에 감지 결과를 표시하고 주석이 달린 이미지를 반환합니다. |
show() |
None |
주석이 달린 추론 결과와 함께 이미지를 표시합니다. |
save() |
str |
어노테이션이 추가된 추론 결과 이미지를 파일에 저장하고 파일 이름을 반환합니다. |
verbose() |
str |
각 작업에 대한 로그 문자열을 반환하여 감지 및 분류 결과를 자세히 설명합니다. |
save_txt() |
str |
검출 결과를 텍스트 파일로 저장하고 저장된 파일의 경로를 반환합니다. |
save_crop() |
None |
잘라낸 검출 이미지를 지정된 디렉터리에 저장합니다. |
summary() |
List[Dict[str, Any]] |
추론 결과를 선택적 정규화를 통해 요약된 딕셔너리로 변환합니다. |
to_df() |
DataFrame |
탐지 결과를 폴라 데이터프레임으로 변환합니다. |
to_csv() |
str |
감지 결과를 CSV 형식으로 변환합니다. |
to_json() |
str |
감지 결과를 JSON 형식으로 변환합니다. |
자세한 내용은 다음을 참조하십시오. Results
클래스 문서.
상자
Boxes
객체를 사용하여 경계 상자를 인덱싱, 조작하고 다른 형식으로 변환할 수 있습니다.
상자
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxes
다음은 Boxes
클래스 메서드 및 속성에 대한 표입니다. 여기에는 이름, 유형 및 설명이 포함됩니다.
이름 | 유형 | 설명 |
---|---|---|
cpu() |
메서드 | 객체를 CPU 메모리로 이동합니다. |
numpy() |
메서드 | 객체를 numpy 배열로 변환합니다. |
cuda() |
메서드 | 객체를 CUDA 메모리로 이동합니다. |
to() |
메서드 | 객체를 지정된 장치로 이동합니다. |
xyxy |
속성 (torch.Tensor ) |
xyxy 형식으로 bounding box를 반환합니다. |
conf |
속성 (torch.Tensor ) |
bounding box의 신뢰도 값을 반환합니다. |
cls |
속성 (torch.Tensor ) |
bounding box의 클래스 값을 반환합니다. |
id |
속성 (torch.Tensor ) |
bounding box의 추적 ID를 반환합니다 (사용 가능한 경우). |
xywh |
속성 (torch.Tensor ) |
xywh 형식으로 bounding box를 반환합니다. |
xyxyn |
속성 (torch.Tensor ) |
원본 이미지 크기로 정규화된 xyxy 형식으로 bounding box를 반환합니다. |
xywhn |
속성 (torch.Tensor ) |
원본 이미지 크기로 정규화된 xywh 형식으로 bounding box를 반환합니다. |
자세한 내용은 다음을 참조하십시오. Boxes
클래스 문서.
마스크
Masks
object는 마스크를 인덱싱, 조작 및 세그먼트로 변환하는 데 사용할 수 있습니다.
마스크
from ultralytics import YOLO
# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masks
다음은 Masks
클래스 메서드 및 속성에 대한 표입니다. 여기에는 이름, 유형 및 설명이 포함됩니다.
이름 | 유형 | 설명 |
---|---|---|
cpu() |
메서드 | CPU 메모리에서 마스크 tensor를 반환합니다. |
numpy() |
메서드 | 마스크 tensor를 numpy 배열로 반환합니다. |
cuda() |
메서드 | GPU 메모리에서 마스크 tensor를 반환합니다. |
to() |
메서드 | 지정된 장치 및 dtype으로 마스크 tensor를 반환합니다. |
xyn |
속성 (torch.Tensor ) |
tensor로 표현된 정규화된 세그먼트 목록입니다. |
xy |
속성 (torch.Tensor ) |
tensor로 표현된 픽셀 좌표의 세그먼트 목록입니다. |
자세한 내용은 다음을 참조하십시오. Masks
클래스 문서.
키포인트
Keypoints
object는 좌표를 인덱싱, 조작 및 정규화하는 데 사용할 수 있습니다.
키포인트
from ultralytics import YOLO
# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypoints
다음은 Keypoints
클래스 메서드 및 속성에 대한 표입니다. 여기에는 이름, 유형 및 설명이 포함됩니다.
이름 | 유형 | 설명 |
---|---|---|
cpu() |
메서드 | CPU 메모리에서 키포인트 tensor를 반환합니다. |
numpy() |
메서드 | 키포인트 tensor를 numpy 배열로 반환합니다. |
cuda() |
메서드 | GPU 메모리에서 키포인트 tensor를 반환합니다. |
to() |
메서드 | 지정된 장치와 dtype을 사용하여 키포인트 tensor를 반환합니다. |
xyn |
속성 (torch.Tensor ) |
tensor로 표현된 정규화된 키포인트 목록입니다. |
xy |
속성 (torch.Tensor ) |
tensor로 표현된 픽셀 좌표의 키포인트 목록입니다. |
conf |
속성 (torch.Tensor ) |
사용 가능한 경우 키포인트의 신뢰도 값을 반환하고, 그렇지 않으면 None을 반환합니다. |
자세한 내용은 다음을 참조하십시오. Keypoints
클래스 문서.
확률
Probs
object는 인덱싱, get에 사용될 수 있습니다. top1
및 top5
분류의 인덱스 및 점수입니다.
확률
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilities
다음은 해당 메서드와 속성을 요약한 표입니다. Probs
클래스:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
메서드 | probs tensor의 복사본을 CPU 메모리에 반환합니다. |
numpy() |
메서드 | probs tensor의 복사본을 numpy 배열로 반환합니다. |
cuda() |
메서드 | probs tensor의 복사본을 GPU 메모리에 반환합니다. |
to() |
메서드 | 지정된 장치와 dtype을 사용하여 probs tensor의 복사본을 반환합니다. |
top1 |
속성 (int ) |
최상위 1개 클래스의 인덱스입니다. |
top5 |
속성 (list[int] ) |
상위 5개 클래스의 인덱스입니다. |
top1conf |
속성 (torch.Tensor ) |
최상위 1개 클래스의 신뢰도입니다. |
top5conf |
속성 (torch.Tensor ) |
상위 5개 클래스의 신뢰도입니다. |
자세한 내용은 다음을 참조하십시오. Probs
클래스 문서.
OBB
OBB
object는 방향이 지정된 경계 상자를 인덱싱, 조작 및 다양한 형식으로 변환하는 데 사용할 수 있습니다.
OBB
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxes
다음은 OBB
클래스 메서드 및 속성에 대한 표입니다. 여기에는 이름, 유형 및 설명이 포함됩니다.
이름 | 유형 | 설명 |
---|---|---|
cpu() |
메서드 | 객체를 CPU 메모리로 이동합니다. |
numpy() |
메서드 | 객체를 numpy 배열로 변환합니다. |
cuda() |
메서드 | 객체를 CUDA 메모리로 이동합니다. |
to() |
메서드 | 객체를 지정된 장치로 이동합니다. |
conf |
속성 (torch.Tensor ) |
bounding box의 신뢰도 값을 반환합니다. |
cls |
속성 (torch.Tensor ) |
bounding box의 클래스 값을 반환합니다. |
id |
속성 (torch.Tensor ) |
bounding box의 추적 ID를 반환합니다 (사용 가능한 경우). |
xyxy |
속성 (torch.Tensor ) |
xyxy 형식으로 가로 상자를 반환합니다. |
xywhr |
속성 (torch.Tensor ) |
xywhr 형식으로 회전된 상자를 반환합니다. |
xyxyxyxy |
속성 (torch.Tensor ) |
xyxyxyxy 형식으로 회전된 상자를 반환합니다. |
xyxyxyxyn |
속성 (torch.Tensor ) |
이미지 크기로 정규화된 xyxyxyxy 형식으로 회전된 상자를 반환합니다. |
자세한 내용은 다음을 참조하십시오. OBB
클래스 문서.
결과 플롯
에 지정되어 있습니다. plot()
메서드는 Results
object는 감지된 객체(예: 경계 상자, 마스크, 키포인트 및 확률)를 원본 이미지에 오버레이하여 예측 시각화를 용이하게 합니다. 이 메서드는 주석이 달린 이미지를 NumPy 배열로 반환하여 쉽게 표시하거나 저장할 수 있습니다.
플로팅
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")
plot()
메서드 매개변수
에 지정되어 있습니다. plot()
이 메서드는 출력을 사용자 정의하기 위한 다양한 인수를 지원합니다.
인수 | 유형 | 설명 | 기본값 |
---|---|---|---|
conf |
bool |
검출 신뢰도 점수를 포함합니다. | True |
line_width |
float |
바운딩 박스의 선 두께입니다. 가 이면 이미지 크기에 따라 조정됩니다. None . |
None |
font_size |
float |
텍스트 글꼴 크기입니다. 가 이면 이미지 크기에 따라 조정됩니다. None . |
None |
font |
str |
텍스트 주석에 사용할 글꼴 이름입니다. | 'Arial.ttf' |
pil |
bool |
이미지를 PIL 이미지 객체로 반환합니다. | False |
img |
np.ndarray |
플롯을 위한 대체 이미지입니다. 가 이면 원본 이미지를 사용합니다. None . |
None |
im_gpu |
torch.Tensor |
더 빠른 마스크 플롯을 위해 GPU 가속화된 이미지입니다. 형태: (1, 3, 640, 640). | None |
kpt_radius |
int |
그려진 키포인트의 반지름입니다. | 5 |
kpt_line |
bool |
키포인트를 선으로 연결합니다. | True |
labels |
bool |
주석에 클래스 레이블을 포함합니다. | True |
boxes |
bool |
이미지에 바운딩 박스를 오버레이합니다. | True |
masks |
bool |
이미지에 마스크를 오버레이합니다. | True |
probs |
bool |
분류 확률을 포함합니다. | True |
show |
bool |
기본 이미지 뷰어를 사용하여 주석이 달린 이미지를 직접 표시합니다. | False |
save |
bool |
주석이 달린 이미지를 로 지정된 파일에 저장합니다. filename . |
False |
filename |
str |
경우 주석이 달린 이미지를 저장할 파일의 경로 및 이름입니다. save 입니다. True . |
None |
color_mode |
str |
'instance' 또는 'class'와 같이 색상 모드를 지정합니다. | 'class' |
txt_color |
tuple[int, int, int] |
바운딩 박스 및 이미지 분류 레이블에 대한 RGB 텍스트 색상입니다. | (255, 255, 255) |
스레드 안전 추론
서로 다른 스레드에서 여러 YOLO 모델을 병렬로 실행하는 경우 추론 중 스레드 안전성을 보장하는 것이 중요합니다. 스레드 안전 추론은 각 스레드의 예측이 격리되어 서로 간섭하지 않도록 보장하여 경쟁 조건을 방지하고 일관되고 안정적인 출력을 보장합니다.
다중 스레드 애플리케이션에서 YOLO 모델을 사용할 때는 각 스레드에 대해 별도의 모델 객체를 인스턴스화하거나 스레드 로컬 스토리지를 사용하여 충돌을 방지하는 것이 중요합니다.
스레드 안전 추론
스레드 안전 추론을 위해 각 스레드 내부에 단일 모델을 인스턴스화합니다.
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
YOLO 모델을 사용한 스레드 안전 추론과 단계별 지침에 대한 자세한 내용은 YOLO 스레드 안전 추론 가이드를 참조하십시오. 이 가이드는 일반적인 함정을 피하고 다중 스레드 추론이 원활하게 실행되도록 하는 데 필요한 모든 정보를 제공합니다.
스트리밍 소스 for
-loop
다음은 OpenCV(cv2
)와 YOLO를 사용하여 비디오 프레임에서 추론을 실행하는 python 스크립트입니다. 이 스크립트는 필요한 패키지가 이미 설치되었다고 가정합니다(opencv-python
및 ultralytics
)입니다.
스트리밍 for 루프
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo11n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO 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()
이 스크립트는 비디오의 각 프레임에 대한 예측을 실행하고, 결과를 시각화하여 창에 표시합니다. 'q' 키를 누르면 루프를 종료할 수 있습니다.
FAQ
Ultralytics YOLO는 무엇이며 실시간 추론을 위한 예측 모드는 무엇입니까?
Ultralytics YOLO는 실시간 객체 감지, 분할 및 분류를 위한 최첨단 모델입니다. predict 모드를 통해 사용자는 이미지, 비디오, 라이브 스트림과 같은 다양한 데이터 소스에서 고속 추론을 수행할 수 있습니다. 성능과 다재다능성을 고려하여 설계되었으며, 일괄 처리 및 스트리밍 모드도 제공합니다. 기능에 대한 자세한 내용은 Ultralytics YOLO predict 모드를 참조하십시오.
Ultralytics YOLO를 사용하여 다양한 데이터 소스에서 추론을 실행하려면 어떻게 해야 합니까?
Ultralytics YOLO는 개별 이미지, 비디오, 디렉터리, URL 및 스트림을 포함한 광범위한 데이터 소스를 처리할 수 있습니다. 데이터 소스는 다음에서 지정할 수 있습니다. model.predict()
호출합니다. 예를 들어 로컬 이미지의 경우 'image.jpg'
를 사용하거나, URL의 경우 'https://ultralytics.com/images/bus.jpg'
를 사용합니다. 다양한 추론 소스 에 대한 자세한 예제는 설명서를 참조하십시오.
YOLO 추론 속도 및 메모리 사용량을 어떻게 최적화합니까?
추론 속도를 최적화하고 메모리를 효율적으로 관리하기 위해 stream=True
를 예측기 호출 메서드에서 설정하여 스트리밍 모드를 사용할 수 있습니다. 스트리밍 모드는 모든 프레임을 메모리에 로드하는 대신 메모리 효율적인 Results
객체 생성기를 생성합니다. 긴 비디오 또는 대규모 데이터 세트를 처리할 때 스트리밍 모드가 특히 유용합니다. 스트리밍 모드.
Ultralytics YOLO는 어떤 추론 인수를 지원합니까?
에 지정되어 있습니다. model.predict()
메서드는 conf
, iou
, imgsz
, device
등 다양한 인수를 지원합니다. 이러한 인수를 통해 신뢰도 임계값, 이미지 크기, 계산에 사용되는 장치와 같은 매개변수를 설정하여 추론 프로세스를 사용자 정의할 수 있습니다. 이러한 인수에 대한 자세한 설명은 추론 인수 섹션에서 확인할 수 있습니다.
YOLO 예측 결과를 시각화하고 저장하는 방법은 무엇입니까?
YOLO로 추론을 실행한 후 Results
객체에는 주석이 달린 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다. result.show()
및 result.save(filename="result.jpg")
와 같은 메서드를 사용하여 결과를 시각화하고 저장할 수 있습니다. 이러한 메서드의 전체 목록은 결과 작업 섹션에서 확인할 수 있습니다.