콘텐츠로 건너뛰기

다음을 사용한 모델 예측 Ultralytics YOLO

Ultralytics YOLO 에코시스템 및 통합

소개

In the world of machine learning and computer vision, the process of making sense out of visual data is called 'inference' or 'prediction'. Ultralytics YOLO11 offers a powerful feature known as predict mode that is tailored for high-performance, real-time inference on a wide range of data sources.



Watch: How to Extract the Outputs from Ultralytics YOLO Model for Custom Projects.

실제 애플리케이션

제조 스포츠 안전
차량 예비 부품 감지 축구 선수 감지 사람 낙상 감지
차량 예비 부품 감지 축구 선수 감지 사람 낙상 감지

추론에 Ultralytics YOLO 을 사용하는 이유는 무엇인가요?

Here's why you should consider YOLO11's predict mode for your various inference needs:

  • 다목적성: 이미지, 동영상, 라이브 스트림까지 추론할 수 있습니다.
  • Performance: Engineered for real-time, high-speed processing without sacrificing accuracy.
  • 사용 편의성: 신속한 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스.
  • 고도로 사용자 정의 가능: 특정 요구 사항에 따라 모델의 추론 동작을 조정할 수 있는 다양한 설정 및 매개변수.

예측 모드의 주요 기능

YOLO11's predict mode is designed to be robust and versatile, featuring:

  • 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 동영상 파일, 실시간 동영상 스트림 등 어떤 형태이든 예측 모드가 지원합니다.
  • 스트리밍 모드: 스트리밍 기능을 사용하여 다음과 같은 메모리 효율적인 제너레이터를 생성합니다. Results 객체를 사용할 수 있습니다. 설정하여 이 기능을 사용하도록 설정합니다. stream=True 를 예측자의 호출 메서드에 추가합니다.
  • 일괄 처리: 여러 이미지 또는 비디오 프레임을 한 번에 일괄 처리하여 추론 시간을 더욱 단축할 수 있는 기능입니다.
  • 통합 친화적: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.

Ultralytics YOLO 모델은 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 can process different types of input sources for inference, as shown in the table below. The sources include static images, video streams, and various data formats. The table also indicates whether each source can be used in streaming mode with the argument 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 글로브 패턴을 사용하여 여러 파일과 일치시킵니다. 사용 * 문자를 와일드카드로 사용할 수 있습니다.
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로 실행됩니다.
webcam ✅ 0 int Index of the connected camera device to run inference on.

다음은 각 소스 유형을 사용하는 코드 예제입니다:

예측 소스

이미지 파일에서 추론을 실행합니다.

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 이미징 라이브러리(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

널 배열로 표현된 이미지에서 추론을 실행합니다.

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

Run inference on an image represented as a 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를 사용하여 결과 객체 생성기를 생성하여 메모리 사용량을 줄일 수 있습니다.

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

디렉토리에 있는 모든 이미지와 동영상에 대해 추론을 실행합니다. 하위 디렉터리에서도 이미지와 동영상을 캡처하려면 글로브 패턴을 사용합니다. 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

글로브 표현식과 일치하는 모든 이미지와 동영상에 대해 추론을 실행합니다. * 문자.

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를 사용하여 결과 객체 생성기를 생성하여 긴 동영상의 메모리 사용량을 줄일 수 있습니다.

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

Use the stream mode to run inference on live video streams using RTSP, RTMP, TCP, or IP address protocols. If a single stream is provided, the model runs inference with a batch size of 1. For multiple streams, a .streams text file can be used to perform batched inference, where the batch size is determined by the number of streams provided (e.g., batch-size 8 for 8 streams).

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

For single stream usage, the batch size is set to 1 by default, allowing efficient real-time processing of the video feed.

To handle multiple video streams simultaneously, use a .streams text file containing the streaming sources. The model will run batched inference where the batch size equals the number of streams. This setup enables efficient processing of multiple feeds concurrently.

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 text file:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Each row in the file represents a streaming source, allowing you to monitor and perform inference on several video streams at once.

You can run inference on a connected camera device by passing the index of that particular camera to 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("bus.jpg", save=True, imgsz=320, conf=0.5)

추론 인수:

인수 유형 기본값 설명
source str 'ultralytics/assets' Specifies the data source for inference. Can be an image path, video file, directory, URL, or device ID for live feeds. Supports a wide range of formats and sources, enabling flexible application across different types of input.
conf float 0.25 탐지에 대한 최소 신뢰도 임계값을 설정합니다. 이 임계값보다 낮은 신뢰도로 탐지된 개체는 무시됩니다. 이 값을 조정하면 오탐지를 줄이는 데 도움이 될 수 있습니다.
iou float 0.7 Intersection Over Union (IoU) threshold for Non-Maximum Suppression (NMS). Lower values result in fewer detections by eliminating overlapping boxes, useful for reducing duplicates.
imgsz int or tuple 640 추론할 이미지 크기를 정의합니다. 단일 정수일 수 있습니다. 640 for square resizing or a (height, width) tuple. Proper sizing can improve detection accuracy and processing speed.
half bool False Enables half-precision (FP16) inference, which can speed up model inference on supported GPUs with minimal impact on accuracy.
device str None 추론할 장치를 지정합니다(예, cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU, 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다.
max_det int 300 이미지당 허용되는 최대 감지 횟수. 모델이 한 번의 추론에서 감지할 수 있는 총 오브젝트 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다.
vid_stride int 1 비디오 입력의 프레임 보폭. 동영상에서 프레임을 건너뛰어 시간 해상도를 희생하면서 처리 속도를 높일 수 있습니다. 값이 1이면 모든 프레임을 처리하고, 값이 클수록 프레임을 건너뜁니다.
stream_buffer bool False Determines whether to queue incoming frames for video streams. If False, old frames get dropped to accomodate new frames (optimized for real-time applications). If `True', queues new frames in a buffer, ensuring no frames get skipped, but will cause latency if inference FPS is lower than stream FPS.
visualize bool False 추론 중에 모델 기능의 시각화를 활성화하여 모델이 '보고 있는 것'에 대한 인사이트를 제공합니다. 디버깅 및 모델 해석에 유용합니다.
augment bool False 예측을 위한 테스트 시간 증강(TTA)을 지원하여 추론 속도를 희생하더라도 탐지 견고성을 향상시킬 수 있습니다.
agnostic_nms bool False 서로 다른 클래스의 겹치는 상자를 병합하는 클래스 무관 NMS(Non-Maximum Suppression)를 활성화합니다. 클래스 중복이 일반적인 다중 클래스 탐지 시나리오에 유용합니다.
classes list[int] None 클래스 ID 집합으로 예측을 필터링합니다. 지정된 클래스에 속하는 탐지만 반환됩니다. 다중 클래스 탐지 작업에서 관련 개체에 집중하는 데 유용합니다.
retina_masks bool False 모델에서 사용 가능한 경우 고해상도 세분화 마스크를 사용합니다. 이렇게 하면 세분화 작업의 마스크 품질을 향상시켜 더 세밀한 디테일을 제공할 수 있습니다.
embed list[int] None Specifies the layers from which to extract feature vectors or embeddings. Useful for downstream tasks like clustering or similarity search.

시각화 인수:

인수 유형 기본값 설명
show bool False 만약 True를 클릭하면 주석이 달린 이미지 또는 동영상이 창에 표시됩니다. 개발 또는 테스트 중에 즉각적인 시각적 피드백을 받을 때 유용합니다.
save bool False 또는 True Enables saving of the annotated images or videos to file. Useful for documentation, further analysis, or sharing results. Defaults to True when using CLI & False when used in Python.
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 또는 int None 경계 상자의 선 너비를 지정합니다. 만약 None를 클릭하면 이미지 크기에 따라 선 너비가 자동으로 조정됩니다. 선명도를 위한 시각적 사용자 지정 기능을 제공합니다.

이미지 및 비디오 형식

YOLO11 supports various image and video formats, as specified in ultralytics/data/utils.py. See the tables below for the valid suffixes and example predict commands.

이미지

아래 표에는 유효한 Ultralytics 이미지 형식이 포함되어 있습니다.

참고

HEIC images are supported for inference only, not for training.

이미지 접미사 예측 명령 예제 참조
.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 다중 사진 개체
.png yolo predict source=image.png 휴대용 네트워크 그래픽
.tif yolo predict source=image.tif 태그 이미지 파일 형식
.tiff yolo predict source=image.tiff 태그 이미지 파일 형식
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm 휴대용 플로트맵
.HEIC yolo predict source=image.HEIC High Efficiency Image Format

동영상

아래 표에는 유효한 Ultralytics 동영상 형식이 포함되어 있습니다.

비디오 접미사 예측 명령 예제 참조
.asf yolo predict source=video.asf 고급 시스템 형식
.avi yolo predict source=video.avi 오디오 비디오 인터리브
.gif yolo predict source=video.gif 그래픽 교환 형식
.m4v yolo predict source=video.m4v MPEG-4 파트 14
.mkv yolo predict source=video.mkv 마트로스카
.mov yolo predict source=video.mov QuickTime 파일 형식
.mp4 yolo predict source=video.mp4 MPEG-4 파트 14 - 위키백과
.mpeg yolo predict source=video.mpeg MPEG-1 파트 2
.mpg yolo predict source=video.mpg MPEG-1 파트 2
.ts yolo predict source=video.ts MPEG 전송 스트림
.wmv yolo predict source=video.wmv Windows 미디어 비디오
.webm yolo predict source=video.webm WebM 프로젝트

결과 작업

모두 Ultralytics predict() 호출은 다음과 같은 목록을 반환합니다. Results 객체입니다:

결과

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

Results 객체에는 다음과 같은 속성이 있습니다:

속성 유형 설명
orig_img numpy.ndarray 원본 이미지가 덩어리 배열로 표시됩니다.
orig_shape tuple (높이, 너비) 형식의 원본 이미지 모양입니다.
boxes Boxes, optional 감지 경계 상자가 포함된 박스 개체입니다.
masks Masks, optional 감지 마스크가 포함된 마스크 객체입니다.
probs Probs, optional 분류 작업에 대한 각 클래스의 확률을 포함하는 Probs 객체입니다.
keypoints Keypoints, optional 각 객체에 대해 감지된 키포인트가 포함된 키포인트 객체입니다.
obb OBB, optional 방향이 지정된 바운딩 박스를 포함하는 OBB 객체입니다.
speed dict 이미지당 밀리초 단위의 전처리, 추론 및 후처리 속도 사전입니다.
names dict 클래스 이름 사전입니다.
path str 이미지 파일의 경로입니다.

Results 객체에는 다음과 같은 메서드가 있습니다:

방법 반환 유형 설명
update() None 결과 개체의 상자, 마스크 및 프로브 속성을 업데이트합니다.
cpu() Results CPU 메모리에 있는 모든 텐서가 포함된 결과 객체의 복사본을 반환합니다.
numpy() Results 모든 텐서가 포함된 결과 객체의 복사본을 널 배열로 반환합니다.
cuda() Results GPU 메모리에 있는 모든 텐서가 포함된 결과 객체의 복사본을 반환합니다.
to() Results 지정된 디바이스 및 dtype의 텐서가 포함된 결과 객체의 복사본을 반환합니다.
new() Results 동일한 이미지, 경로 및 이름을 가진 새 결과 개체를 반환합니다.
plot() numpy.ndarray 탐지 결과를 플로팅합니다. 주석이 달린 이미지의 널 배열을 반환합니다.
show() None 주석이 달린 결과를 화면에 표시합니다.
save() None 주석이 달린 결과를 파일에 저장합니다.
verbose() str 각 작업에 대한 로그 문자열을 반환합니다.
save_txt() None 예측을 txt 파일로 저장합니다.
save_crop() None 잘린 예측을 다음 위치에 저장합니다. save_dir/cls/file_name.jpg.
tojson() str 개체를 JSON 형식으로 변환합니다.

자세한 내용은 Results 클래스 문서.

상자

Boxes 객체를 사용하여 바운딩 박스를 색인하고, 조작하고, 다른 형식으로 변환할 수 있습니다.

상자

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("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() 방법 객체를 널 배열로 변환합니다.
cuda() 방법 개체를 CUDA 메모리로 이동합니다.
to() 방법 개체를 지정된 장치로 이동합니다.
xyxy 속성 (torch.Tensor) 상자를 xyxy 형식으로 반환합니다.
conf 속성 (torch.Tensor) 상자의 신뢰도 값을 반환합니다.
cls 속성 (torch.Tensor) 상자의 클래스 값을 반환합니다.
id 속성 (torch.Tensor) 상자의 트랙 ID를 반환합니다(가능한 경우).
xywh 속성 (torch.Tensor) 상자를 xywh 형식으로 반환합니다.
xyxyn 속성 (torch.Tensor) 원본 이미지 크기에 따라 정규화된 xyxy 형식의 상자를 반환합니다.
xywhn 속성 (torch.Tensor) 원본 이미지 크기로 정규화된 xywh 형식의 상자를 반환합니다.

자세한 내용은 Boxes 클래스 문서.

마스크

Masks 객체를 사용하여 마스크를 인덱싱하고, 조작하고, 세그먼트로 변환할 수 있습니다.

마스크

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

# Run inference on an image
results = model("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 마스크를 널 배열로 반환합니다.
cuda() 방법 GPU 메모리에 tensor 마스크를 반환합니다.
to() 방법 지정된 장치 및 dtype을 가진 tensor 마스크를 반환합니다.
xyn 속성 (torch.Tensor) 텐서로 표현된 정규화된 세그먼트의 목록입니다.
xy 속성 (torch.Tensor) 텐서로 표현된 픽셀 좌표의 세그먼트 목록입니다.

자세한 내용은 Masks 클래스 문서.

키포인트

Keypoints 객체를 사용하여 좌표를 색인하고, 조작하고, 정규화할 수 있습니다.

키포인트

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

# Run inference on an image
results = model("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 를 널 배열로 반환합니다.
cuda() 방법 GPU 메모리의 키포인트 tensor 를 반환합니다.
to() 방법 지정된 장치 및 dtype을 사용하여 tensor 키포인트를 반환합니다.
xyn 속성 (torch.Tensor) 텐서로 표현된 정규화된 키포인트 목록입니다.
xy 속성 (torch.Tensor) 텐서로 표현된 픽셀 좌표의 키포인트 목록입니다.
conf 속성 (torch.Tensor) 사용 가능한 경우 키포인트의 신뢰도 값을 반환하고, 그렇지 않으면 없음입니다.

자세한 내용은 Keypoints 클래스 문서.

Probs

Probs 객체를 사용할 수 있습니다. top1 그리고 top5 인덱스 및 분류 점수.

Probs

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

다음은 메서드와 속성을 요약한 표입니다. Probs 클래스:

이름 유형 설명
cpu() 방법 CPU 메모리에 probs tensor 의 복사본을 반환합니다.
numpy() 방법 probs tensor 의 사본을 널 배열로 반환합니다.
cuda() 방법 GPU 메모리에 probs tensor 의 복사본을 반환합니다.
to() 방법 지정된 장치 및 dtype이 포함된 probs tensor 사본을 반환합니다.
top1 속성 (int) 상위 1등급의 인덱스입니다.
top5 속성 (list[int]) 상위 5개 클래스의 지표입니다.
top1conf 속성 (torch.Tensor) 상위 1등급의 자신감.
top5conf 속성 (torch.Tensor) 상위 5개 클래스의 자신감.

자세한 내용은 Probs 클래스 문서.

OBB

OBB 객체를 사용하여 방향이 지정된 바운딩 박스를 색인하고, 조작하고, 다른 형식으로 변환할 수 있습니다.

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("bus.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() 방법 객체를 널 배열로 변환합니다.
cuda() 방법 개체를 CUDA 메모리로 이동합니다.
to() 방법 개체를 지정된 장치로 이동합니다.
conf 속성 (torch.Tensor) 상자의 신뢰도 값을 반환합니다.
cls 속성 (torch.Tensor) 상자의 클래스 값을 반환합니다.
id 속성 (torch.Tensor) 상자의 트랙 ID를 반환합니다(가능한 경우).
xyxy 속성 (torch.Tensor) 가로 상자를 xyxy 형식으로 반환합니다.
xywhr 속성 (torch.Tensor) 회전된 상자를 xywhr 형식으로 반환합니다.
xyxyxyxy 속성 (torch.Tensor) 회전된 상자를 xyxyxyxy 형식으로 반환합니다.
xyxyxyxyn 속성 (torch.Tensor) 회전된 상자를 이미지 크기에 따라 정규화된 xyxyxyxy 형식으로 반환합니다.

자세한 내용은 OBB 클래스 문서.

결과 플로팅

그리고 plot() 메서드의 Results 개체를 사용하면 감지된 개체(예: 바운딩 박스, 마스크, 키포인트, 확률)를 원본 이미지에 오버레이하여 예측을 시각화할 수 있습니다. 이 메서드는 주석이 달린 이미지를 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(["bus.jpg", "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 numpy.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 주석이 달린 이미지를 저장할 파일의 경로 및 이름(다음과 같은 경우) saveTrue. None
color_mode str 색상 모드(예: '인스턴스' 또는 '클래스')를 지정합니다. 'class'

스레드 안전 추론

추론 중 스레드 안전을 보장하는 것은 여러 개의 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를 사용하는 Python 스크립트입니다(cv2) and YOLO to run inference on video frames. This script assumes you have already installed the necessary packages (opencv-python 그리고 ultralytics).

포-루프 스트리밍

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'를 눌러 루프를 종료할 수 있습니다.

자주 묻는 질문

What is Ultralytics YOLO and its predict mode for real-time inference?

Ultralytics YOLO is a state-of-the-art model for real-time object detection, segmentation, and classification. Its predict mode allows users to perform high-speed inference on various data sources such as images, videos, and live streams. Designed for performance and versatility, it also offers batch processing and streaming modes. For more details on its features, check out the Ultralytics YOLO predict mode.

How can I run inference using Ultralytics YOLO on different data sources?

Ultralytics YOLO can process a wide range of data sources, including individual images, videos, directories, URLs, and streams. You can specify the data source in the model.predict() 호출합니다. 예를 들어 'image.jpg' 로컬 이미지의 경우 'https://ultralytics.com/images/bus.jpg' 를 입력하세요. 다양한 예시에서 자세한 내용을 확인하세요. 추론 소스 를 문서에 추가하세요.

How do I optimize YOLO inference speed and memory usage?

추론 속도를 최적화하고 메모리를 효율적으로 관리하기 위해 다음과 같이 설정하여 스트리밍 모드를 사용할 수 있습니다. stream=True 를 예측자의 호출 메서드에 추가합니다. 스트리밍 모드는 메모리 효율이 높은 제너레이터를 생성합니다. Results 객체를 사용하여 모든 프레임을 메모리에 로드하지 않습니다. 긴 동영상이나 대용량 데이터 세트를 처리할 때는 스트리밍 모드가 특히 유용합니다. 자세히 알아보기 스트리밍 모드.

What inference arguments does Ultralytics YOLO support?

그리고 model.predict() method in YOLO supports various arguments such as conf, iou, imgsz, device등을 사용할 수 있습니다. 이러한 인수를 사용하면 신뢰도 임계값, 이미지 크기 및 계산에 사용되는 디바이스와 같은 매개 변수를 설정하여 추론 프로세스를 사용자 지정할 수 있습니다. 이러한 인수에 대한 자세한 설명은 다음 문서에서 확인할 수 있습니다. 추론 인수 섹션으로 이동합니다.

How can I visualize and save the results of YOLO predictions?

After running inference with YOLO, the Results 객체에는 주석이 달린 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다. 다음과 같은 메서드를 사용할 수 있습니다. result.show() 그리고 result.save(filename="result.jpg") 를 클릭하여 결과를 시각화하고 저장합니다. 이러한 방법의 전체 목록은 다음을 참조하세요. 결과 작업 섹션으로 이동합니다.


📅 Created 11 months ago ✏️ Updated 0 days ago

댓글