콘텐츠로 건너뛰기

Ultralytics YOLO를 사용한 모델 예측

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에 사용될 수 있습니다. top1top5 분류의 인덱스 및 점수입니다.

확률

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-pythonultralytics)입니다.

스트리밍 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") 와 같은 메서드를 사용하여 결과를 시각화하고 저장할 수 있습니다. 이러한 메서드의 전체 목록은 결과 작업 섹션에서 확인할 수 있습니다.



📅 1년 전에 생성됨 ✏️ 5일 전에 업데이트됨

댓글