Ultralytics YOLO를 사용한 모델 예측#
소개#
머신 러닝 및 컴퓨터 비전 분야에서 시각 데이터를 해석하는 프로세스를 흔히 추론 또는 예측이라고 합니다. Ultralytics YOLO26은 다양한 데이터 소스에서 고성능 실시간 추론을 수행하도록 설계된 predict 모드라는 강력한 기능을 제공합니다.
계획된 추론 예시는 미출시 YOLO27 미리보기를 참조하십시오.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
실제 애플리케이션#
| 제조 | 스포츠 | 안전 |
|---|---|---|
| 차량 예비 부품 감지 | 축구 선수 감지 | 사람 넘어짐 감지 |
추론에 Ultralytics YOLO를 사용하는 이유#
다양한 추론 요구 사항에 YOLO26의 predict 모드를 고려해야 하는 이유는 다음과 같습니다.
- 다용도성: 이미지, 동영상 및 라이브 스트림에서 추론을 실행할 수 있습니다.
- 성능: 정확도를 유지하면서 실시간 고속 처리를 수행하도록 설계되었습니다.
- 사용 편의성: 신속한 배포와 테스트를 위한 직관적인 Python 및 CLI 인터페이스를 제공합니다.
- 높은 사용자 지정 가능성: 특정 요구 사항에 맞게 모델의 추론 동작을 조정할 수 있는 다양한 설정과 매개변수를 제공합니다.
- 프로덕션 지원: 자동 스케일링과 모니터링을 지원하는 Ultralytics Platform 추론 엔드포인트로 모델을 배포하거나 로컬에서 추론을 실행할 수 있습니다.
Predict 모드의 주요 기능#
YOLO26의 predict 모드는 다음과 같은 기능을 갖추고 있어 견고하고 다용도로 사용할 수 있도록 설계되었습니다.
- 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 동영상 파일 또는 실시간 동영상 스트림 형식인지 여부와 관계없이 predict 모드를 사용할 수 있습니다.
- 스트리밍 모드: 스트리밍 기능을 사용하여 메모리 효율적인
Results객체 제너레이터를 생성할 수 있습니다. predictor의 호출 메서드에서stream=True을 설정하여 활성화합니다. 모든 결과가 포함된 목록을 반환하는 기본 동작(stream=False)과 달리,stream=True은 결과를 한 번에 하나씩 생성하므로 긴 동영상과 라이브 스트림에 특히 유용합니다. - 배치 처리: 여러 이미지 또는 동영상 프레임을 단일 배치로 처리하여 전체 추론 시간을 더욱 줄일 수 있습니다.
- 간편한 통합: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.
Ultralytics YOLO 모델은 추론 중 모델에 stream=True를 전달하면 Python Results 객체 목록 또는 메모리 효율적인 Results 객체 제너레이터를 반환합니다.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n 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추론 소스#
YOLO26은 아래 표에 표시된 것처럼 다양한 유형의 입력 소스를 추론에 처리할 수 있습니다. 소스에는 정적 이미지, 동영상 스트림 및 다양한 데이터 형식이 포함됩니다. 또한 표에는 각 소스를 stream=True ✅ 인수와 함께 스트리밍 모드에서 사용할 수 있는지 여부가 표시되어 있습니다. 스트리밍 모드는 모든 프레임을 메모리에 로드하는 대신 결과 제너레이터를 생성하므로 동영상 또는 라이브 스트림 처리에 유용합니다.
긴 동영상 또는 대규모 데이터 세트를 처리하여 메모리를 효율적으로 관리하려면 stream=True을 사용합니다. stream=False인 경우 모든 프레임 또는 데이터 포인트의 결과가 메모리에 저장되므로 대규모 입력에서 빠르게 누적되어 메모리 부족 오류가 발생할 수 있습니다. 반면 stream=True는 현재 프레임 또는 데이터 포인트의 결과만 메모리에 유지하는 제너레이터를 사용하여 메모리 사용량을 크게 줄이고 메모리 부족 문제를 방지합니다.
| 소스 | 예시 | 유형 | 참고 |
|---|---|---|---|
| image | 'image.jpg' | str 또는 Path | 단일 이미지 파일입니다. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | 이미지의 URL입니다. |
| screenshot | '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 ✅ | 'video.mp4' | str 또는 Path | MP4, AVI 등의 형식을 사용하는 동영상 파일입니다. |
| directory ✅ | 'path/' | str 또는 Path | 이미지 또는 동영상이 포함된 디렉터리의 경로입니다. |
| glob ✅ | 'path/*.jpg' | str | 여러 파일과 일치하는 Glob 패턴입니다. 와일드카드로 * 문자를 사용합니다. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | YouTube 동영상의 URL입니다. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | RTSP, RTMP, TCP와 같은 스트리밍 프로토콜 또는 IP 주소의 URL입니다. |
| multi-stream ✅ | 'list.streams' | str 또는 Path | 행마다 하나의 스트림 URL이 포함된 *.streams 텍스트 파일입니다. 즉, 8개 스트림은 배치 크기 8로 실행됩니다. |
| webcam ✅ | 0 | int | 추론을 실행할 연결된 카메라 장치의 인덱스입니다. |
다음은 각 소스 유형을 사용하는 코드 예제입니다.
이미지 파일에서 추론을 실행합니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects추론 인수#
model.predict()은 추론 시 전달하여 기본값을 재정의할 수 있는 여러 인수를 허용합니다.
고정 크기와 최소 사각형 비교(rect)#
기본적으로 predict는 **rect=True**을 사용하며, 가능한 경우 최소 사각형 패딩을 활성화합니다. 이미지는 imgsz 안에 맞도록 크기가 조정되고 가장 가까운 stride 배수만큼만 패딩되므로 최종 텐서는 imgsz보다 작을 수 있습니다. 최소 사각형 패딩은 배치의 모든 이미지가 동일한 크기이고 백엔드가 이를 지원하는 경우에만 사용됩니다(PyTorch .pt 또는 동적 ONNX / Triton). 그렇지 않으면 이미지가 전체 imgsz 대상으로 패딩됩니다.
항상 전체 imgsz 대상으로 패딩하려면 **rect=False**을 사용합니다. 내보낸 모델(ONNX, TensorRT 등)에 맞추기 위해 고정 입력 크기가 필요한 경우 이 옵션을 사용하는 것이 좋습니다.
정수와 튜플 imgsz 비교
- 정수
imgsz=640은 stride 반올림 후 정사각형 대상(640, 640)이 됩니다. - 튜플
imgsz=(384, 672)은 직사각형 대상을 설정합니다.rect=True및auto=True를 사용하면 실제 텐서가 이 대상보다 작을 수 있습니다.
Training과 predict/export 비교
Training은 단일 정수 imgsz만 허용합니다([h, w] 목록은 가장 큰 값으로 변환됩니다). Predict와 export는 정수 또는 (height, width) 튜플을 허용합니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)추론 인수:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
source | str 또는 int 또는 None | None | 추론을 위한 데이터 소스를 지정합니다. 이미지 경로, 비디오 파일, 디렉터리, URL 또는 실시간 피드용 장치 ID일 수 있습니다. 생략하면 경고가 로그에 기록되고 모델은 기본 제공 데모 에셋(ultralytics/assets, OBB의 경우 데모 URL)으로 대체됩니다. 다양한 형식과 소스를 지원하므로 다양한 유형의 입력에 유연하게 적용할 수 있습니다. |
conf | float | 0.25 | 검출을 위한 최소 confidence threshold를 설정합니다. 이 threshold보다 낮은 confidence로 검출된 객체는 무시됩니다. 이 값을 조정하면 false positive를 줄이는 데 도움이 될 수 있습니다. |
iou | float | 0.7 | 비최대 억제(NMS)를 위한 Intersection over Union (IoU) threshold입니다. 값이 낮을수록 겹치는 box를 제거하여 검출 수가 줄어들며, 중복을 줄이는 데 유용합니다. |
imgsz | int 또는 tuple | 640 | Letterbox target입니다. 정수는 정사각형 N×N을 지정하고, tuple은 (height, width)을 지정합니다. rect=True를 사용하면 minimum-rectangle padding으로 인해 실제 tensor가 이 target보다 작을 수 있습니다. 고정 크기에는 rect=False을 사용합니다. 자세한 내용은 고정 shape와 minimum rectangle 비교를 참조하십시오. |
rect | bool | True | True인 경우 가능한 때에 minimum-rectangle padding을 사용합니다(동일 shape batch 및 지원되는 backend). False인 경우 항상 전체 imgsz에 맞춰 padding합니다. 자세한 내용은 고정 shape와 minimum rectangle 비교를 참조하십시오. |
quantize | int 또는 str | None | 추론 정밀도: 16/"fp16" 및 32/"fp32"/설정 안 함은 PyTorch 및 TorchScript 모델에 대한 FP16 또는 FP32 연산을 선택하며, 다른 형식은 아티팩트와 런타임이 선택하는 정밀도로 연산합니다. 16에서 OpenVINO는 여전히 클라이언트에서 입력을 FP16으로 반올림한 후 다시 FP32로 확장하지만, 런타임이 연산하는 정밀도 자체는 변경하지 않습니다. INT8/PTQ 양자화는 export 중에 구성된 후 내보낸 모델을 로드하여 사용됩니다. 지원 중단된 half 플래그를 대체합니다. |
device | str | None | 추론에 사용할 device를 지정합니다(예: cpu, cuda:0, 0, npu 또는 npu:0). CPU, 특정 GPU, Huawei Ascend NPU 또는 기타 연산 device 중에서 모델 실행에 사용할 장치를 선택할 수 있습니다. |
dnn | bool | False | True인 경우 ONNX 모델 추론에 ONNX Runtime 대신 OpenCV DNN 모듈을 사용합니다. |
data | str | None | dataset YAML의 경로입니다(예: coco8.yaml). 이 파일은 names만 읽으며, 로드된 모델에 자체 class name이 없는 경우에만 사용됩니다. 이러한 경우는 third-party export이거나, 함께 제공되는 metadata와 분리된 Ultralytics export입니다. 이러한 모델은 그렇지 않으면 class0, class1 등을 보고합니다. |
batch | int | 1 | 추론을 위한 batch size를 지정합니다(source가 디렉터리, 비디오 파일 또는 .txt 파일인 경우에만 작동합니다). batch size가 클수록 throughput이 높아져 추론에 필요한 총 시간이 단축될 수 있습니다. |
max_det | int | 300 | 이미지당 허용되는 최대 검출 수입니다. 한 번의 추론에서 모델이 검출할 수 있는 객체의 총 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다. |
vid_stride | int | 1 | 비디오 입력을 위한 frame stride입니다. temporal resolution을 낮추는 대신 비디오의 frame을 건너뛰어 처리 속도를 높일 수 있습니다. 값이 1이면 모든 frame을 처리하고, 더 높은 값이면 frame을 건너뜁니다. |
stream_buffer | bool | False | 비디오 stream으로 들어오는 frame을 queue에 넣을지 결정합니다. False인 경우 새 frame을 수용하기 위해 이전 frame을 삭제합니다(실시간 애플리케이션에 최적화됨). True인 경우 새 frame을 buffer에 queue하여 frame이 건너뛰지 않도록 하지만, inference FPS가 stream FPS보다 낮으면 latency가 발생합니다. |
visualize | bool | False | 각 prediction 옆에 class activation heatmap을 저장하여 어떤 pixel이 예측된 class score를 높였는지 보여 줍니다. conf 및 classes을 따르므로 classes=[0]는 해당 class에만 매핑됩니다. Ultralytics PyTorch 모델에서만 사용할 수 있습니다. |
augment | bool | False | prediction에 test-time augmentation (TTA)을 사용하도록 설정합니다. 추론 속도가 느려지는 대신 detection robustness가 향상될 수 있습니다. Ultralytics PyTorch 모델에서만 사용할 수 있습니다. |
agnostic_nms | bool | False | 클래스 비구분 NMS를 활성화하여 동일 클래스 내에서뿐만 아니라 서로 다른 클래스 간에도 점수가 낮은 겹치는 상자를 억제합니다. 클래스 겹침이 흔한 다중 클래스 감지 시나리오에서 유용합니다. NMS가 없는 추론(YOLO26 또는 YOLOv10의 nms=False)의 경우, 이는 동일한 감지가 여러 클래스 레이블(IoU=1.0 중복)로 표시되는 것만 방지하며 서로 다른 상자 간의 IoU 임계값 기반 억제는 수행하지 않습니다. |
classes | list[int] | None | prediction을 class ID 집합으로 필터링합니다. 지정된 class에 속하는 detection만 반환됩니다. multi-class detection task에서 관련 객체에 집중할 때 유용합니다. |
retina_masks | bool | False | 고해상도 segmentation mask를 반환합니다. 활성화하면 반환되는 mask(masks.data)가 원본 이미지 크기와 일치합니다. 비활성화하면 추론에 사용된 이미지 크기를 갖습니다. |
embed | list[int] | None | feature vector 또는 embedding을 추출할 layer를 지정합니다. 두 번째 마지막 layer의 embedding에는 model.embed(source)을 사용하고, 특정 layer를 선택하려면 model.predict(source, embed=[layer])를 사용합니다. clustering이나 similarity search와 같은 downstream task에 유용합니다. Ultralytics PyTorch 모델에서만 사용할 수 있습니다. |
project | str | None | save이 활성화된 경우 prediction output이 저장되는 project directory의 이름입니다. |
name | str | None | prediction run의 이름입니다. project folder 내에 subdirectory를 생성할 때 사용되며, save이 활성화된 경우 prediction output이 이곳에 저장됩니다. |
stream | bool | False | 모든 frame을 한 번에 memory에 로드하는 대신 Results object의 generator를 반환하여 긴 비디오나 많은 이미지에 대해 memory-efficient processing을 활성화합니다. |
verbose | bool | True | terminal에 상세한 inference log를 표시할지 제어하여 prediction process에 대한 실시간 피드백을 제공합니다. |
compile | bool 또는 str | False | PyTorch 2.x torch.compile 그래프 컴파일을 backend='inductor'과 함께 활성화합니다. True → "default", False → 비활성화 또는 "default", "reduce-overhead", "max-autotune-no-cudagraphs"과 같은 문자열 모드를 사용할 수 있습니다. 지원되지 않는 경우 경고와 함께 eager 모드로 대체됩니다. |
channels_last | bool | None | native PyTorch inference에 channels_last (NHWC) memory format을 사용합니다. None은 PyTorch 1.13 이상을 사용하는 oneDNN-enabled Linux 및 Windows x86 CPU에서 이를 자동으로 활성화하고, False은 비활성화하며, True는 지원되는 x86 CPU 또는 CUDA device에서 이를 요청합니다. ARM64, MPS, 이전 PyTorch version, oneDNN이 없는 CPU, TensorRT 및 ONNX와 같은 export format은 변경되지 않습니다. |
nms | bool, 선택 사항 | None | 기본적으로 NMS가 포함된 일대다 추론을 실행합니다(None 또는 True). 사용 가능한 경우 NMS가 없는 일대일 헤드를 사용하려면 False로 설정하세요. 자세한 내용은 End-to-End Detection guide를 참조하세요. |
시각화 인자:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우 annotation이 추가된 이미지 또는 비디오를 window에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 제공하는 데 유용합니다. |
save | bool | False or True | annotation이 추가된 이미지 또는 비디오를 파일로 저장하도록 설정합니다. 문서화, 추가 분석 또는 결과 공유에 유용합니다. CLI 사용 시 기본값은 True이고 Python에서 사용할 때는 False입니다. |
save_frames | bool | False | 비디오를 처리할 때 개별 frame을 이미지로 저장합니다. 특정 frame을 추출하거나 frame 단위의 상세한 분석을 수행할 때 유용합니다. |
save_txt | bool | False | detection 결과를 [class] [x_center] [y_center] [width] [height] [confidence] 형식에 따라 text file에 저장합니다. 다른 analysis tool과 통합할 때 유용합니다. |
save_conf | bool | False | 저장된 text file에 confidence score를 포함합니다. post-processing 및 analysis에 사용할 수 있는 세부 정보를 향상합니다. |
save_crop | bool | False | detection을 crop한 이미지를 저장합니다. dataset augmentation, analysis 또는 특정 객체에 초점을 맞춘 dataset 생성에 유용합니다. |
show_labels | bool | True | visual output에 각 detection의 label을 표시합니다. 검출된 객체를 즉시 파악할 수 있습니다. |
show_conf | bool | True | 각 detection의 confidence score를 label과 함께 표시합니다. 각 detection에 대한 모델의 확신 정도를 파악할 수 있습니다. |
show_boxes | bool | True | 검출된 객체 주위에 bounding box를 그립니다. 이미지 또는 비디오 frame에서 객체를 시각적으로 식별하고 위치를 파악하는 데 필수적입니다. |
line_width | int or None | None | bounding box의 line width를 지정합니다. None인 경우 이미지 크기에 따라 line width가 자동으로 조정됩니다. 명확한 시각적 표현을 위해 사용자 지정이 가능합니다. |
이미지 및 비디오 형식#
YOLO26은 ultralytics/data/utils.py에 지정된 다양한 이미지 및 비디오 형식을 지원합니다. 유효한 suffix와 예시 predict command는 아래 표를 참조하십시오.
이미지#
아래 표에는 유효한 Ultralytics 이미지 형식이 포함되어 있습니다.
HEIC/HEIF 형식에는 pi-heif이 필요하며, 처음 사용할 때 자동으로 설치됩니다. AVIF는 Pillow에서 native로 지원됩니다.
| 이미지 suffix | 예시 Predict Command | 참조 |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 이미지 파일 형식 |
.bmp | yolo predict source=image.bmp | Microsoft BMP 파일 형식 |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | 고효율 이미지 형식 |
.heif | yolo predict source=image.heif | 고효율 이미지 형식 |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.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 | 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 |
비디오#
아래 표에는 유효한 Ultralytics 비디오 형식이 포함되어 있습니다.
| 비디오 suffix | 예시 Predict Command | 참조 |
|---|---|---|
.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 파일 형식 |
.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 |
Results 사용#
모든 Ultralytics predict() 호출은 Results object의 list를 반환합니다:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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 inferenceResults object에는 다음 attribute가 있습니다:
| Attribute | 유형 | 설명 |
|---|---|---|
orig_img | np.ndarray | 원본 이미지를 NumPy array로 나타냅니다. |
orig_shape | tuple | (height, width) 형식의 원본 이미지 shape입니다. |
boxes | Boxes, optional | detection bounding box를 포함하는 Boxes object입니다. |
masks | Masks, optional | detection mask를 포함하는 Masks object입니다. |
probs | Probs, optional | classification task에서 각 class의 probability를 포함하는 Probs object입니다. |
keypoints | Keypoints, optional | 각 객체에서 검출된 keypoint를 포함하는 Keypoints object입니다. |
obb | OBB, optional | oriented bounding box를 포함하는 OBB object입니다. |
semantic_mask | SemanticMask, optional | pixel별 dense class map을 포함하는 SemanticMask object입니다. |
speed | dict | 이미지당 millisecond 단위의 preprocess, inference 및 postprocess 속도를 매핑하는 dictionary입니다. |
names | dict | class index를 class name에 매핑하는 dictionary입니다. |
path | str | 이미지 파일의 경로입니다. |
save_dir | str, optional | 결과를 저장할 directory입니다. |
Task별 Results#
아래에 채워지는 필드는 모델의 태스크에 따라 다릅니다. 아직 태스크를 선택하지 않았다면 detection, segmentation, semantic segmentation, depth estimation, classification, pose, and OBB 비교를 참고하세요. 각 예측은 이미지 또는 프레임당 하나의 Results 객체를 반환합니다. 위의 공통 필드는 항상 사용할 수 있으며, 태스크별 예측 데이터는 아래 필드에 저장됩니다. YOLO 좌표 및 신뢰도 텐서는 torch.float32이며, 확률 텐서는 반정밀도가 사용되지 않는 한 torch.float32이고, 반정밀도가 사용되는 경우 torch.float16입니다. result.numpy() 이후에는 텐서가 일치하는 NumPy 데이터 유형을 가진 NumPy 배열이 됩니다. 인스턴스 마스크는 torch.uint8 이진 텐서인 반면, 시맨틱 마스크는 클래스 수에 따라 클래스 ID에 대해 가장 실용적인 최소 정수 데이터 유형인 torch.uint8, torch.int16, 또는 torch.int32를 사용합니다.
| Attribute | 유형 | Shape | 설명 |
|---|---|---|---|
result.boxes | Boxes | (N) | Detection box입니다. |
result.boxes.data | torch.float32 | (N,6/7) | Raw [x1,y1,x2,y2,conf,cls]이며, 선택적으로 track ID를 포함합니다. |
result.boxes.xyxy | torch.float32 | (N,4) | xyxy pixel box입니다. |
result.boxes.conf | torch.float32 | (N,) | Confidence score입니다. |
result.boxes.cls | torch.float32 | (N,) | Class ID이며, name을 가져오려면 int으로 cast합니다. |
Results 객체는 다음 메서드를 제공합니다.
| 메서드 | 반환 유형 | 설명 |
|---|---|---|
update() | None | 박스, 마스크, probs, obb, 키포인트 또는 시맨틱 마스크와 같은 새 데이터로 Results 객체를 업데이트합니다. |
cpu() | Results | 모든 텐서를 CPU 메모리로 이동한 Results 객체의 복사본을 반환합니다. |
numpy() | Results | 모든 텐서를 NumPy 배열로 변환한 Results 객체의 복사본을 반환합니다. |
cuda() | Results | 모든 텐서를 GPU 메모리로 이동한 Results 객체의 복사본을 반환합니다. |
to() | Results | 텐서를 지정된 디바이스와 dtype으로 이동한 Results 객체의 복사본을 반환합니다. |
new() | Results | 동일한 이미지, 경로, 이름 및 speed 속성을 가진 새 Results 객체를 생성합니다. |
plot() | np.ndarray | 입력 BGR 이미지에 탐지 결과를 플로팅하고 주석이 추가된 이미지를 반환합니다. |
show() | None | 주석이 추가된 추론 결과와 함께 이미지를 표시합니다. |
save() | str | 주석이 추가된 추론 결과 이미지를 파일에 저장하고 파일 이름을 반환합니다. |
verbose() | str | 각 작업에 대한 로그 문자열을 반환하며, 탐지 및 분류 결과를 자세히 기록합니다. |
save_txt() | str | 탐지 결과를 텍스트 파일에 저장하고 저장된 파일의 경로를 반환합니다. |
save_crop() | None | 잘린 탐지 이미지를 지정된 디렉터리에 저장합니다. |
summary() | List[Dict[str, Any]] | 추론 결과를 선택적 정규화와 함께 요약된 딕셔너리로 변환합니다. |
to_df() | DataFrame | 탐지 결과를 Polars DataFrame으로 변환합니다. |
to_csv() | str | 탐지 결과를 CSV 형식으로 변환합니다. |
to_json() | str | 탐지 결과를 JSON 형식으로 변환합니다. |
자세한 내용은 Results 클래스 문서를 참조하십시오.
박스#
Boxes 객체를 사용하여 바운딩 박스를 인덱싱하고 조작하며 여러 형식으로 변환할 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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 형식으로 반환합니다. |
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 YOLO26n-seg Segment model
model = YOLO("yolo26n-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 클래스 메서드와 속성의 표입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
data | 속성 (torch.Tensor) | (N,H,W) 형태와 0 또는 1 값을 갖는 torch.uint8 이진 마스크 텐서입니다. |
cpu() | 메서드 | CPU 메모리의 마스크 텐서를 반환합니다. |
numpy() | 메서드 | 마스크 텐서를 NumPy 배열로 반환합니다. |
cuda() | 메서드 | GPU 메모리의 마스크 텐서를 반환합니다. |
to() | 메서드 | 지정된 디바이스와 dtype을 사용하는 마스크 텐서를 반환합니다. |
xyn | 속성 (list[np.ndarray]) | 정규화된 마스크 폴리곤 목록입니다. |
xy | 속성 (list[np.ndarray]) | 픽셀 좌표의 마스크 폴리곤 목록입니다. |
자세한 내용은 Masks 클래스 문서를 참조하십시오.
SemanticMask#
SemanticMask은 시맨틱 세그멘테이션 결과를 위한 하나의 밀집 클래스 맵을 저장합니다. Masks과 달리 객체마다 하나의
이진 마스크를 포함하지 않으며 폴리곤 헬퍼를 제공하지 않습니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| 이름 | 유형 | 설명 |
|---|---|---|
data | 속성 (torch.Tensor) | (H,W) 형태의 클래스 ID 맵입니다. dtype는 클래스 수에 따라 선택되는 torch.uint8, torch.int16 또는 torch.int32입니다. |
shape | 속성 (tuple) | 클래스 맵의 형태이며, 일반적으로 result.orig_shape과 일치합니다. |
cpu() | 메서드 | CPU 메모리의 시맨틱 마스크 텐서를 반환합니다. |
numpy() | 메서드 | 시맨틱 마스크 텐서를 NumPy 배열로 반환합니다. |
cuda() | 메서드 | GPU 메모리의 시맨틱 마스크 텐서를 반환합니다. |
to() | 메서드 | 지정된 디바이스와 dtype을 사용하는 시맨틱 마스크 텐서를 반환합니다. |
키포인트#
Keypoints 객체를 사용하여 좌표를 인덱싱하고 조작하며 정규화할 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-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 메모리의 키포인트 텐서를 반환합니다. |
numpy() | 메서드 | 키포인트 텐서를 NumPy 배열로 반환합니다. |
cuda() | 메서드 | GPU 메모리의 키포인트 텐서를 반환합니다. |
to() | 메서드 | 지정된 디바이스와 dtype을 사용하는 키포인트 텐서를 반환합니다. |
xyn | 속성 (torch.Tensor) | 텐서로 표현된 정규화된 키포인트 목록입니다. |
xy | 속성 (torch.Tensor) | 텐서로 표현된 픽셀 좌표의 키포인트 목록입니다. |
conf | 속성 (torch.Tensor) | 사용 가능한 경우 키포인트의 신뢰도 값을 반환하고, 그렇지 않으면 None을 반환합니다. |
자세한 내용은 Keypoints 클래스 문서를 참조하십시오.
확률#
Probs 객체를 사용하여 top1 및 top5 분류 인덱스와 점수를 가져올 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-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() | 메서드 | CPU 메모리에 있는 probs 텐서의 복사본을 반환합니다. |
numpy() | 메서드 | probs 텐서를 NumPy 배열로 변환한 복사본을 반환합니다. |
cuda() | 메서드 | GPU 메모리에 있는 probs 텐서의 복사본을 반환합니다. |
to() | 메서드 | 지정된 디바이스와 dtype을 사용하는 probs 텐서의 복사본을 반환합니다. |
top1 | 속성 (int) | 상위 1개 클래스의 인덱스입니다. |
top5 | 속성 (list[int]) | 상위 5개 클래스의 인덱스입니다. |
top1conf | 속성 (torch.Tensor) | 상위 1개 클래스의 신뢰도입니다. |
top5conf | 속성 (torch.Tensor) | 상위 5개 클래스의 신뢰도입니다. |
자세한 내용은 Probs 클래스 문서를 참조하십시오.
OBB#
OBB 객체를 사용하여 방향이 지정된 바운딩 박스를 인덱싱하고 조작하며 여러 형식으로 변환할 수 있습니다.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-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) | 박스의 신뢰도 값을 반환합니다. |
cls | 속성 (torch.Tensor) | 박스의 클래스 값을 반환합니다. |
id | 속성 (torch.Tensor) | 박스의 트랙 ID를 반환합니다(사용 가능한 경우). |
xyxy | 속성 (torch.Tensor) | 수평 박스를 xyxy 형식으로 반환합니다. |
xywhr | 속성 (torch.Tensor) | 회전 박스를 xywhr 형식으로 반환합니다. |
xyxyxyxy | 속성 (torch.Tensor) | 회전 박스를 xyxyxyxy 형식으로 반환합니다. |
xyxyxyxyn | 속성 (torch.Tensor) | 이미지 크기로 정규화된 회전 박스를 xyxyxyxy 형식으로 반환합니다. |
자세한 내용은 OBB 클래스 문서를 참조하십시오.
결과 플로팅#
Results 객체의 plot() 메서드는 감지된 객체(예: 바운딩 박스, 마스크, 키포인트, 확률)를 원본 이미지 위에 오버레이하여 예측 결과를 시각화합니다. 이 메서드는 주석이 추가된 이미지를 NumPy 배열로 반환하므로 쉽게 표시하거나 저장할 수 있습니다.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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 Image 객체로 반환합니다. | False |
img | np.ndarray | torch.Tensor | 대체 이미지입니다. 텐서는 연속적인 HWC BGR uint8 형식이어야 합니다. | 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] | 바운딩 박스 및 이미지 분류 레이블에 사용할 BGR 텍스트 색상입니다. | (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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()YOLO 모델을 사용한 스레드 안전 추론을 자세히 살펴보고 단계별 지침을 확인하려면 YOLO 스레드 안전 추론 가이드를 참조하십시오. 이 가이드에서는 일반적인 문제를 방지하고 멀티스레드 추론이 원활하게 실행되도록 하는 데 필요한 모든 정보를 제공합니다.
스트리밍 소스 for 루프#
다음은 OpenCV(cv2)와 YOLO를 사용하여 비디오 프레임에서 추론을 실행하는 Python 스크립트입니다. 이 스크립트는 필요한 패키지(opencv-python 및 ultralytics)가 이미 설치되어 있다고 가정합니다.
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.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' 키를 누르면 루프를 종료할 수 있습니다.
다음 단계#
사전 학습된 모델을 넘어설 준비가 되셨습니까? 문제에 맞는 작업인지 확인하고, Datasets 가이드를 사용하여 자체 데이터를 포맷한 다음 해당 데이터로 학습하십시오.
FAQ#
Ultralytics YOLO는 실시간 객체 감지, 인스턴스 세그멘테이션, 시맨틱 세그멘테이션, 깊이 추정 및 분류를 위한 최첨단 모델입니다. predict 모드를 사용하면 이미지, 비디오, 라이브 스트림과 같은 다양한 데이터 소스에서 고속 추론을 수행할 수 있습니다. 성능과 범용성을 고려하여 설계되었으며, 배치 처리와 스트리밍 모드도 제공합니다. 기능에 대한 자세한 내용은 Ultralytics YOLO predict 모드를 참조하십시오.
Ultralytics YOLO는 개별 이미지, 비디오, 디렉터리, URL 및 스트림을 비롯한 다양한 데이터 소스를 처리할 수 있습니다.
model.predict()호출에서 데이터 소스를 지정할 수 있습니다. 예를 들어 로컬 이미지에는'image.jpg'을, URL에는'https://ultralytics.com/images/bus.jpg'를 사용합니다. 문서에서 다양한 추론 소스에 대한 자세한 예제를 확인하십시오.추론 속도를 최적화하고 메모리를 효율적으로 관리하려면 predictor의 호출 메서드에서
stream=True을 설정하여 스트리밍 모드를 사용할 수 있습니다. 스트리밍 모드는 모든 프레임을 메모리에 로드하는 대신 메모리 효율적인Results객체 제너레이터를 생성합니다. 긴 비디오나 대규모 데이터 세트를 처리할 때 스트리밍 모드가 특히 유용합니다. 스트리밍 모드에 대해 자세히 알아보십시오.YOLO의
model.predict()메서드는conf,iou,imgsz,device등의 다양한 인수를 지원합니다. 이러한 인수를 사용하면 신뢰도 임계값, 이미지 크기, 연산에 사용할 디바이스 등의 매개변수를 설정하여 추론 프로세스를 사용자 지정할 수 있습니다. 이러한 인수에 대한 자세한 설명은 추론 인수 섹션에서 확인할 수 있습니다.model.embed(source)을 사용하여 뒤에서 두 번째 레이어에서 특징 임베딩을 추출하거나, 특정 레이어를 선택하려면embed=[layer_index]을model.predict()에 전달합니다.from ultralytics import YOLO model = YOLO("yolo26n.pt") source = "https://ultralytics.com/images/bus.jpg" results = model.predict(source) # Results objects embeddings = model.embed(source) # list of torch.Tensor embeddingsYOLO로 추론을 실행한 후
Results객체에는 주석이 추가된 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다.result.show()및result.save(filename="result.jpg")와 같은 메서드를 사용하여 결과를 시각화하고 저장할 수 있습니다. 파일 이름 경로에 없는 상위 디렉터리는 자동으로 생성됩니다(예:result.save("path/to/result.jpg")). 이러한 메서드의 전체 목록은 결과 사용 섹션을 참조하십시오.