다음을 사용한 모델 예측 Ultralytics YOLO
소개
머신러닝과 컴퓨터 비전의 세계에서 시각적 데이터에서 의미를 찾아내는 과정을 '추론' 또는 '예측'이라고 합니다. Ultralytics YOLO11 은 광범위한 데이터 소스에서 고성능 실시간 추론을 위해 맞춤화된 예측 모드라는 강력한 기능을 제공합니다.
Watch: Ultralytics YOLO 모델에서 출력을 추출하는 방법 사용자 지정 프로젝트용 모델.
실제 애플리케이션
제조 | 스포츠 | 안전 |
---|---|---|
차량 예비 부품 감지 | 축구 선수 감지 | 사람 낙상 감지 |
추론에 Ultralytics YOLO 을 사용하는 이유는 무엇인가요?
다양한 추론 요구에 맞는 YOLO11 의 예측 모드를 고려해야 하는 이유는 다음과 같습니다:
- 다목적성: 이미지, 동영상, 라이브 스트림까지 추론할 수 있습니다.
- 성능: 정확도 저하 없이 실시간 고속 처리를 위해 설계되었습니다.
- 사용 편의성: 신속한 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스.
- 고도로 사용자 정의 가능: 특정 요구 사항에 따라 모델의 추론 동작을 조정할 수 있는 다양한 설정 및 매개변수.
예측 모드의 주요 기능
YOLO11의 예측 모드는 강력하고 다용도로 사용할 수 있도록 설계되었습니다:
- 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 동영상 파일, 실시간 동영상 스트림 등 어떤 형태이든 예측 모드가 지원합니다.
- 스트리밍 모드: 스트리밍 기능을 사용하여 다음과 같은 메모리 효율적인 제너레이터를 생성합니다.
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 는 아래 표와 같이 다양한 유형의 입력 소스를 처리하여 추론할 수 있습니다. 소스에는 정적 이미지, 비디오 스트림 및 다양한 데이터 형식이 포함됩니다. 이 표는 또한 각 소스를 스트리밍 모드에서 사용할 수 있는지 여부를 인수 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로 실행됩니다. |
웹캠 ✅ | 0 |
int |
추론을 실행할 연결된 카메라 장치의 인덱스입니다. |
다음은 각 소스 유형을 사용하는 코드 예제입니다:
예측 소스
이미지 파일에서 추론을 실행합니다.
현재 화면 콘텐츠에 대한 추론을 스크린샷으로 실행합니다.
URL을 통해 원격으로 호스팅된 이미지 또는 동영상에서 추론을 실행합니다.
Python 이미징 라이브러리(PIL)로 연 이미지에서 추론을 실행합니다.
OpenCV로 읽은 이미지에서 추론을 실행합니다.
널 배열로 표현된 이미지에서 추론을 실행합니다.
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, 동영상 및 디렉터리 모음에 대해 추론을 실행합니다.
동영상 파일에서 추론을 실행합니다. 다음을 사용하여 stream=True
를 사용하여 결과 객체 생성기를 생성하여 메모리 사용량을 줄일 수 있습니다.
디렉토리에 있는 모든 이미지와 동영상에 대해 추론을 실행합니다. 하위 디렉터리에서도 이미지와 동영상을 캡처하려면 글로브 패턴을 사용합니다. path/to/dir/**/*
.
글로브 표현식과 일치하는 모든 이미지와 동영상에 대해 추론을 실행합니다. *
문자.
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
를 사용하여 결과 객체 생성기를 생성하여 긴 동영상의 메모리 사용량을 줄일 수 있습니다.
스트림 모드를 사용하여 RTSP, RTMP, TCP 또는 IP 주소 프로토콜을 사용하는 실시간 동영상 스트림에서 추론을 실행합니다. 단일 스트림이 제공된 경우 모델은 배치 크기 1. 여러 스트림의 경우 .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
...
파일의 각 행은 스트리밍 소스를 나타내므로 한 번에 여러 비디오 스트림을 모니터링하고 추론을 수행할 수 있습니다.
추론 인수
model.predict()
는 기본값을 재정의하기 위해 추론 시 전달할 수 있는 여러 인수를 허용합니다:
예
추론 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
source |
str |
'ultralytics/assets' |
추론할 데이터 소스를 지정합니다. 이미지 경로, 동영상 파일, 디렉토리, URL 또는 실시간 피드용 디바이스 ID가 될 수 있습니다. 다양한 형식과 소스를 지원하므로 다양한 유형의 입력에 유연하게 적용할 수 있습니다. |
conf |
float |
0.25 |
탐지에 대한 최소 신뢰도 임계값을 설정합니다. 이 임계값보다 낮은 신뢰도로 탐지된 개체는 무시됩니다. 이 값을 조정하면 오탐지를 줄이는 데 도움이 될 수 있습니다. |
iou |
float |
0.7 |
비최대 억제(NMS)에 대한 교차점 초과 (IoU) 임계값입니다. 값이 낮을수록 중복되는 상자를 제거하여 탐지 횟수가 줄어들어 중복을 줄이는 데 유용합니다. |
imgsz |
int or tuple |
640 |
추론할 이미지 크기를 정의합니다. 단일 정수일 수 있습니다. 640 를 사용하여 정사각형 크기 조정 또는 (높이, 너비) 튜플을 사용합니다. 적절한 크기 조정은 감지율을 향상시킬 수 있습니다. 정확성 처리 속도. |
half |
bool |
False |
정확도에 미치는 영향을 최소화하면서 지원되는 GPU에서 모델 추론 속도를 높일 수 있는 반정확도 (FP16) 추론을 활성화합니다. |
device |
str |
None |
추론할 장치를 지정합니다(예, cpu , cuda:0 또는 0 ). 사용자가 모델 실행을 위해 CPU, 특정 GPU, 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다. |
max_det |
int |
300 |
이미지당 허용되는 최대 감지 횟수. 모델이 한 번의 추론에서 감지할 수 있는 총 오브젝트 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다. |
vid_stride |
int |
1 |
비디오 입력의 프레임 보폭. 동영상에서 프레임을 건너뛰어 시간 해상도를 희생하면서 처리 속도를 높일 수 있습니다. 값이 1이면 모든 프레임을 처리하고, 값이 클수록 프레임을 건너뜁니다. |
stream_buffer |
bool |
False |
비디오 스트림에 대해 수신 프레임을 대기열에 넣을지 여부를 결정합니다. 만약 False 로 설정하면 새 프레임을 수용하기 위해 이전 프레임이 삭제됩니다(실시간 애플리케이션에 최적화됨). True'면 새 프레임을 버퍼에 대기시켜 건너뛰는 프레임이 없도록 하지만 추론 FPS가 스트림 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 |
고해상도 분할 마스크를 반환합니다. 반환된 마스크(masks.data )를 활성화하면 원본 이미지 크기와 일치합니다. 비활성화하면 추론 중에 사용되는 이미지 크기가 사용됩니다. |
embed |
list[int] |
None |
특징 벡터 또는 임베딩을 추출할 레이어를 지정합니다. 클러스터링이나 유사도 검색과 같은 다운스트림 작업에 유용합니다. |
project |
str |
None |
예측 출력이 저장되는 프로젝트 디렉터리의 이름(다음과 같은 경우). save 가 활성화되어 있습니다. |
name |
str |
None |
예측 실행의 이름입니다. 다음과 같은 경우 예측 출력이 저장되는 프로젝트 폴더 내에 하위 디렉터리를 만드는 데 사용됩니다. save 가 활성화되어 있습니다. |
시각화 인수:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
show |
bool |
False |
만약 True 를 클릭하면 주석이 달린 이미지 또는 동영상이 창에 표시됩니다. 개발 또는 테스트 중에 즉각적인 시각적 피드백을 받을 때 유용합니다. |
save |
bool |
False 또는 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 또는 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 |
다중 사진 개체 |
.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 |
고효율 이미지 포맷 |
동영상
아래 표에는 유효한 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
객체입니다:
결과
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
객체를 사용하여 바운딩 박스를 색인하고, 조작하고, 다른 형식으로 변환할 수 있습니다.
상자
다음은 표입니다. 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
객체를 사용하여 마스크를 인덱싱하고, 조작하고, 세그먼트로 변환할 수 있습니다.
마스크
다음은 표입니다. Masks
클래스 메서드 및 속성(이름, 유형 및 설명 포함)을 포함합니다:
이름 | 유형 | 설명 |
---|---|---|
cpu() |
방법 | CPU 메모리에 tensor 마스크를 반환합니다. |
numpy() |
방법 | tensor 마스크를 널 배열로 반환합니다. |
cuda() |
방법 | GPU 메모리에 tensor 마스크를 반환합니다. |
to() |
방법 | 지정된 장치 및 dtype을 가진 tensor 마스크를 반환합니다. |
xyn |
속성 (torch.Tensor ) |
텐서로 표현된 정규화된 세그먼트의 목록입니다. |
xy |
속성 (torch.Tensor ) |
텐서로 표현된 픽셀 좌표의 세그먼트 목록입니다. |
자세한 내용은 Masks
클래스 문서.
키포인트
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
다음은 메서드와 속성을 요약한 표입니다. 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
다음은 표입니다. 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 |
주석이 달린 이미지를 저장할 파일의 경로 및 이름(다음과 같은 경우) save 는 True . |
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
) 및 YOLO 를 사용하여 비디오 프레임에 대한 추론을 실행합니다. 이 스크립트는 필요한 패키지를 이미 설치했다고 가정합니다(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'를 눌러 루프를 종료할 수 있습니다.
자주 묻는 질문
실시간 추론을 위한 예측 모드( Ultralytics YOLO )란 무엇인가요?
Ultralytics YOLO 는 실시간 객체 감지, 세분화, 분류를 위한 최첨단 모델입니다. 예측 모드를 사용하면 이미지, 동영상, 라이브 스트림 등 다양한 데이터 소스에서 고속 추론을 수행할 수 있습니다. 성능과 다용도를 위해 설계된 이 모델은 일괄 처리 및 스트리밍 모드도 제공합니다. 기능에 대한 자세한 내용은 Ultralytics YOLO 예측 모드에서 확인하세요.
다른 데이터 원본에서 Ultralytics YOLO 을 사용하여 추론을 실행하려면 어떻게 해야 하나요?
Ultralytics YOLO 는 개별 이미지, 동영상, 디렉토리, URL, 스트림 등 다양한 데이터 소스를 처리할 수 있습니다. 데이터 소스는 model.predict()
호출합니다. 예를 들어 'image.jpg'
로컬 이미지의 경우 'https://ultralytics.com/images/bus.jpg'
를 입력하세요. 다양한 예시에서 자세한 내용을 확인하세요. 추론 소스 를 문서에 추가하세요.
YOLO 추론 속도와 메모리 사용량을 최적화하려면 어떻게 해야 하나요?
추론 속도를 최적화하고 메모리를 효율적으로 관리하기 위해 다음과 같이 설정하여 스트리밍 모드를 사용할 수 있습니다. stream=True
를 예측자의 호출 메서드에 추가합니다. 스트리밍 모드는 메모리 효율이 높은 제너레이터를 생성합니다. Results
객체를 사용하여 모든 프레임을 메모리에 로드하지 않습니다. 긴 동영상이나 대용량 데이터 세트를 처리할 때는 스트리밍 모드가 특히 유용합니다. 자세히 알아보기 스트리밍 모드.
Ultralytics YOLO 은 어떤 추론 인수를 지원하나요?
그리고 model.predict()
메서드는 YOLO 에서 다음과 같은 다양한 인수를 지원합니다. conf
, iou
, imgsz
, device
등을 사용할 수 있습니다. 이러한 인수를 사용하면 신뢰도 임계값, 이미지 크기 및 계산에 사용되는 디바이스와 같은 매개 변수를 설정하여 추론 프로세스를 사용자 지정할 수 있습니다. 이러한 인수에 대한 자세한 설명은 다음 문서에서 확인할 수 있습니다. 추론 인수 섹션으로 이동합니다.
YOLO 예측 결과를 시각화하고 저장하려면 어떻게 해야 하나요?
YOLO 로 추론을 실행한 후 Results
객체에는 주석이 달린 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다. 다음과 같은 메서드를 사용할 수 있습니다. result.show()
그리고 result.save(filename="result.jpg")
를 클릭하여 결과를 시각화하고 저장합니다. 이러한 방법의 전체 목록은 다음을 참조하세요. 결과 작업 섹션으로 이동합니다.