Ultralytics YOLO를 활용한 모델 예측
소개
머신러닝 및 컴퓨터 비전 분야에서 시각적 데이터를 해석하는 과정을 흔히 추론(inference) 또는 예측(prediction)이라고 합니다. Ultralytics YOLO26은 광범위한 데이터 소스 전반에서 고성능 실시간 추론을 수행하도록 설계된 강력한 기능인 predict 모드를 제공합니다.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
실제 적용 사례
| 제조업 | 스포츠 | 안전 |
|---|---|---|
![]() | ![]() | ![]() |
| 차량 예비 부품 감지 | 축구 선수 감지 | 사람 넘어짐 감지 |
추론에 Ultralytics YOLO를 사용하는 이유는 무엇입니까?
다양한 추론 요구 사항에 YOLO26의 predict 모드를 고려해야 하는 이유는 다음과 같습니다:
- 다재다능함: 이미지, 비디오, 라이브 스트림에서 추론을 실행할 수 있습니다.
- 성능: 정확도를 희생하지 않으면서 실시간 고속 처리를 위해 설계되었습니다.
- 사용 편의성: 빠른 배포와 테스트를 위한 직관적인 Python 및 CLI 인터페이스를 제공합니다.
- 높은 사용자 정의 가능성: 특정 요구 사항에 맞춰 모델의 추론 동작을 조정할 수 있는 다양한 설정과 파라미터를 제공합니다.
- 프로덕션 준비 완료: 자동 확장 및 모니터링 기능을 갖춘 Ultralytics Platform에서 모델을 API 엔드포인트로 배포하거나 로컬에서 추론을 실행할 수 있습니다.
Predict 모드의 주요 특징
YOLO26의 predict 모드는 강력하고 다재다능하도록 설계되었으며, 다음과 같은 특징을 가집니다:
- 다양한 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 컬렉션, 비디오 파일, 실시간 비디오 스트림 등 무엇이든 predict 모드가 처리할 수 있습니다.
- 스트리밍 모드: 스트리밍 기능을 사용하여 메모리 효율적인
Results객체 제너레이터를 생성할 수 있습니다. 예측기 호출 메서드에서stream=True를 설정하여 활성화하십시오. - 배치 처리: 여러 이미지나 비디오 프레임을 단일 배치로 처리하여 총 추론 시간을 더욱 단축합니다.
- 간편한 통합: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.
Ultralytics YOLO models return either a Python list of Results objects or a memory-efficient generator of Results objects when stream=True is passed to the model during inference:
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는 제너레이터를 활용하여 현재 프레임이나 데이터 포인트의 결과만 메모리에 유지하므로 메모리 소비를 크게 줄이고 메모리 부족 문제를 방지합니다.
| 소스 | 예시 | 유형(Type) | 참고 사항 |
|---|---|---|---|
| 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와 같은 스트리밍 프로토콜용 URL 또는 IP 주소. |
| multi-stream ✅ | 'list.streams' | str 또는 Path | 줄당 하나의 스트림 URL이 포함된 *.streams 텍스트 파일, 예: 8개의 스트림이 batch-size 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 내에 맞게 조정되고 가장 가까운 스트라이드 배수로만 패딩되므로, 최종 텐서는 imgsz보다 작을 수 있습니다. 최소 사각형 패딩은 배치의 모든 이미지가 동일한 모양을 가지고 백엔드가 이를 지원하는 경우(PyTorch .pt 또는 동적 ONNX / Triton)에만 사용됩니다. 그렇지 않으면 이미지는 전체 imgsz 타겟으로 패딩됩니다.
Use rect=False to always pad to the full imgsz target. This is recommended when you need a fixed input size to match exported models (ONNX, TensorRT, etc.).
정수 대 튜플 imgsz
- 정수
imgsz=640은 스트라이드 반올림 후 정사각형 타겟(640, 640)이 됩니다. - 튜플
imgsz=(384, 672)는 직사각형 타겟을 설정합니다.rect=True및auto=True설정 시, 실제 텐서는 이 타겟보다 작을 수 있습니다.
학습 대 예측/내보내기
Training accepts only a single integer imgsz (a [h, w] list is coerced to the largest value). Predict and export accept either an integer or a (height, width) tuple.
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)추론 인자:
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
source | str 또는 int 또는 None | None | 추론을 위한 데이터 소스를 지정합니다. 이미지 경로, 비디오 파일, 디렉토리, URL 또는 라이브 피드용 장치 ID일 수 있습니다. 생략하면 경고가 기록되고 모델은 내장된 데모 에셋(ultralytics/assets 또는 OBB용 데모 URL)을 사용합니다. 다양한 형식과 소스를 지원하여 다양한 유형의 입력 전반에 걸쳐 유연한 애플리케이션을 가능하게 합니다. |
conf | float | 0.25 | 감지를 위한 최소 신뢰도 임계값을 설정합니다. 이 임계값 미만의 신뢰도로 감지된 객체는 무시됩니다. 이 값을 조정하면 오탐지(false positive)를 줄이는 데 도움이 될 수 있습니다. |
iou | float | 0.7 | 비최대 억제(NMS)를 위한 교차 영역 합(Intersection Over Union) (IoU) 임계값입니다. 낮은 값은 겹치는 상자를 제거하여 감지 수를 줄이며 중복을 줄이는 데 유용합니다. |
imgsz | int 또는 tuple | 640 | Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle. |
rect | bool | True | True이면 가능한 경우 최소 사각형 패딩을 사용합니다(동일 모양 배치 및 지원되는 백엔드). False이면 항상 전체 imgsz로 패딩합니다. 고정 모양 대 최소 사각형을 참조하십시오. |
half | bool | False | 반-정밀도 (FP16) 추론을 활성화하여 지원되는 GPU에서 정확도에 미치는 영향을 최소화하면서 모델 추론 속도를 높일 수 있습니다. |
device | str | None | 추론을 위한 장치를 지정합니다(예: cpu, cuda:0, 0, npu 또는 npu:0). 사용자는 CPU, 특정 GPU, Huawei Ascend NPU 또는 기타 연산 장치 중에서 모델 실행을 선택할 수 있습니다. |
batch | int | 1 | 추론을 위한 배치 사이즈를 지정합니다(소스가 디렉토리, 비디오 파일 또는 .txt 파일인 경우에만 작동). 더 큰 배치 사이즈는 더 높은 처리량을 제공하여 추론에 필요한 총 시간을 단축할 수 있습니다. |
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)를 활성화하여 서로 다른 클래스의 겹치는 상자를 병합합니다. 클래스 중첩이 흔한 다중 클래스 탐지 시나리오에서 유용합니다. 엔드투엔드 모델(YOLO26, YOLOv10)의 경우, 이 옵션은 동일한 탐지가 여러 클래스 레이블(IoU=1.0 중복)로 나타나는 것만 방지하며, 서로 다른 상자 간의 IoU 임계값 기반 억제는 수행하지 않습니다. |
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 | 터미널에 상세한 추론 로그를 표시할지 여부를 제어하여 예측 과정에 대한 실시간 피드백을 제공합니다. |
compile | bool 또는 str | False | Enables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True → "default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported. |
end2end | bool | None | NMS 없는 추론(YOLO26, YOLOv10)을 지원하는 YOLO 모델에서 엔드투엔드 모드를 재정의합니다. False로 설정하면 기존 NMS 파이프라인을 사용하여 예측을 실행할 수 있으며, 추가로 iou 인수를 활용할 수 있습니다. 자세한 내용은 엔드투엔드 탐지 가이드를 참조하십시오. |
시각화 인수:
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
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 | int or None | None | 바운딩 박스의 선 두께를 지정합니다. None인 경우 이미지 크기에 따라 선 두께가 자동으로 조정됩니다. 명확성을 위한 시각적 사용자 정의를 제공합니다. |
이미지 및 비디오 형식
YOLO26은 ultralytics/data/utils.py에 명시된 다양한 이미지 및 비디오 형식을 지원합니다. 유효한 접미사와 예시 예측 명령어는 아래 표를 참조하십시오.
이미지
아래 표에는 유효한 Ultralytics 이미지 형식이 포함되어 있습니다.
HEIC/HEIF 형식은 pi-heif가 필요하며, 이는 처음 사용 시 자동으로 설치됩니다. AVIF는 Pillow에서 기본적으로 지원됩니다.
| 이미지 접미사 | 예시 예측 명령어 | 참고 |
|---|---|---|
.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 | 휴대용 네트워크 그래픽 |
.tif | yolo predict source=image.tif | 태그 이미지 파일 형식 |
.tiff | yolo predict source=image.tiff | 태그 이미지 파일 형식 |
.webp | yolo predict source=image.webp | WebP |
비디오
아래 표에는 유효한 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 | 퀵타임 파일 형식 |
.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 | 윈도우 미디어 비디오 |
.webm | yolo predict source=video.webm | WebM 프로젝트 |
결과 작업하기
모든 Ultralytics predict() 호출은 Results 객체 리스트를 반환합니다:
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 객체는 다음과 같은 속성을 가집니다:
| 속성 | 유형(Type) | 설명 |
|---|---|---|
orig_img | np.ndarray | NumPy 배열 형태의 원본 이미지입니다. |
orig_shape | tuple | (높이, 너비) 형식의 원본 이미지 크기입니다. |
boxes | Boxes, optional | 탐지된 BBox를 포함하는 Boxes 객체입니다. |
masks | Masks, optional | 탐지된 마스크를 포함하는 Masks 객체입니다. |
probs | Probs, optional | 분류 작업에서 각 클래스에 대한 확률을 포함하는 Probs 객체입니다. |
keypoints | Keypoints, optional | 각 객체에 대해 탐지된 키포인트를 포함하는 Keypoints 객체입니다. |
obb | OBB, optional | 회전된 BBox를 포함하는 OBB 객체입니다. |
speed | dict | 이미지당 밀리초(ms) 단위로 전처리, 추론, 후처리 속도를 나타내는 딕셔너리입니다. |
names | dict | 클래스 인덱스와 클래스 이름을 매핑하는 딕셔너리입니다. |
path | str | 이미지 파일 경로입니다. |
save_dir | str, optional | 결과를 저장할 디렉토리입니다. |
Results 객체는 다음과 같은 메서드를 가집니다:
| 메서드 | 반환 타입 | 설명 |
|---|---|---|
update() | None | 새로운 탐지 데이터(boxes, masks, probs, obb, keypoints)로 Results 객체를 업데이트합니다. |
cpu() | Results | 모든 텐서가 CPU 메모리로 이동된 Results 객체의 복사본을 반환합니다. |
numpy() | Results | 모든 텐서가 NumPy 배열로 변환된 Results 객체의 복사본을 반환합니다. |
cuda() | Results | 모든 텐서가 GPU 메모리로 이동된 Results 객체의 복사본을 반환합니다. |
to() | Results | 텐서가 지정된 장치와 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 | 탐지 결과를 Polars DataFrame으로 변환합니다. |
to_csv() | str | 탐지 결과를 CSV 형식으로 변환합니다. |
to_json() | str | 탐지 결과를 JSON 형식으로 변환합니다. |
자세한 내용은 Results 클래스 문서를 참조하십시오.
Boxes
Boxes 객체는 BBox를 인덱싱, 조작하고 다른 형식으로 변환하는 데 사용할 수 있습니다.
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 boxesBoxes 클래스 메서드와 속성, 이름, 타입, 설명을 포함한 표입니다:
| 이름 | 유형(Type) | 설명 |
|---|---|---|
cpu() | 메서드 | 객체를 CPU 메모리로 이동합니다. |
numpy() | 메서드 | 객체를 NumPy 배열로 변환합니다. |
cuda() | 메서드 | 객체를 CUDA 메모리로 이동합니다. |
to() | 메서드 | 객체를 지정된 장치로 이동합니다. |
xyxy | 속성 (torch.Tensor) | xyxy 형식으로 BBox를 반환합니다. |
conf | 속성 (torch.Tensor) | BBox의 신뢰도 값을 반환합니다. |
cls | 속성 (torch.Tensor) | BBox의 클래스 값을 반환합니다. |
id | 속성 (torch.Tensor) | BBox의 추적 ID를 반환합니다(사용 가능한 경우). |
xywh | 속성 (torch.Tensor) | xywh 형식으로 BBox를 반환합니다. |
xyxyn | 속성 (torch.Tensor) | 원본 이미지 크기로 정규화된 xyxy 형식의 BBox를 반환합니다. |
xywhn | 속성 (torch.Tensor) | 원본 이미지 크기로 정규화된 xywh 형식의 BBox를 반환합니다. |
자세한 내용은 Boxes 클래스 문서를 참조하십시오.
Masks
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 masksMasks 클래스 메서드와 속성, 이름, 타입, 설명을 포함한 표입니다:
| 이름 | 유형(Type) | 설명 |
|---|---|---|
cpu() | 메서드 | CPU 메모리의 마스크 텐서를 반환합니다. |
numpy() | 메서드 | NumPy 배열 형태의 마스크 텐서를 반환합니다. |
cuda() | 메서드 | GPU 메모리의 마스크 텐서를 반환합니다. |
to() | 메서드 | 지정된 장치와 dtype의 마스크 텐서를 반환합니다. |
xyn | 속성 (torch.Tensor) | 텐서로 표현된 정규화된 세그먼트 리스트입니다. |
xy | 속성 (torch.Tensor) | 텐서로 표현된 픽셀 좌표계의 세그먼트 리스트입니다. |
자세한 내용은 Masks 클래스 문서를 참조하십시오.
Keypoints
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 클래스의 메서드와 속성에 대한 표이며, 이름, 유형 및 설명을 포함합니다:
| 이름 | 유형(Type) | 설명 |
|---|---|---|
cpu() | 메서드 | CPU 메모리의 키포인트 텐서를 반환합니다. |
numpy() | 메서드 | NumPy 배열 형태의 키포인트 텐서를 반환합니다. |
cuda() | 메서드 | GPU 메모리의 키포인트 텐서를 반환합니다. |
to() | 메서드 | 지정된 장치(device)와 데이터 유형(dtype)으로 키포인트 텐서를 반환합니다. |
xyn | 속성 (torch.Tensor) | 텐서로 표현된 정규화된 키포인트 리스트입니다. |
xy | 속성 (torch.Tensor) | 텐서로 표현된 픽셀 좌표계의 키포인트 리스트입니다. |
conf | 속성 (torch.Tensor) | 사용 가능한 경우 키포인트의 신뢰도 값을 반환하며, 그렇지 않으면 None을 반환합니다. |
더 자세한 내용은 Keypoints 클래스 문서를 참조하십시오.
Probs
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 클래스의 메서드와 속성을 요약한 표입니다:
| 이름 | 유형(Type) | 설명 |
|---|---|---|
cpu() | 메서드 | CPU 메모리에 있는 probs 텐서의 복사본을 반환합니다. |
numpy() | 메서드 | NumPy 배열 형태의 probs 텐서 복사본을 반환합니다. |
cuda() | 메서드 | GPU 메모리에 있는 probs 텐서의 복사본을 반환합니다. |
to() | 메서드 | 지정된 장치(device)와 데이터 유형(dtype)을 적용한 probs 텐서의 복사본을 반환합니다. |
top1 | 속성 (int) | 상위 1개 클래스의 인덱스입니다. |
top5 | 속성 (list[int]) | 상위 5개 클래스의 인덱스들입니다. |
top1conf | 속성 (torch.Tensor) | 상위 1개 클래스의 신뢰도입니다. |
top5conf | 속성 (torch.Tensor) | 상위 5개 클래스의 신뢰도들입니다. |
더 자세한 내용은 Probs 클래스 문서를 참조하십시오.
OBB
OBB 객체를 사용하여 회전된 경계 상자(oriented bounding boxes)를 인덱싱, 조작 및 다른 형식으로 변환할 수 있습니다.
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 클래스의 메서드와 속성에 대한 표이며, 이름, 유형 및 설명을 포함합니다:
| 이름 | 유형(Type) | 설명 |
|---|---|---|
cpu() | 메서드 | 객체를 CPU 메모리로 이동합니다. |
numpy() | 메서드 | 객체를 NumPy 배열로 변환합니다. |
cuda() | 메서드 | 객체를 CUDA 메모리로 이동합니다. |
to() | 메서드 | 객체를 지정된 장치로 이동합니다. |
conf | 속성 (torch.Tensor) | BBox의 신뢰도 값을 반환합니다. |
cls | 속성 (torch.Tensor) | BBox의 클래스 값을 반환합니다. |
id | 속성 (torch.Tensor) | BBox의 추적 ID를 반환합니다(사용 가능한 경우). |
xyxy | 속성 (torch.Tensor) | xyxy 형식의 수평 상자를 반환합니다. |
xywhr | 속성 (torch.Tensor) | xywhr 형식의 회전된 상자를 반환합니다. |
xyxyxyxy | 속성 (torch.Tensor) | xyxyxyxy 형식의 회전된 상자를 반환합니다. |
xyxyxyxyn | 속성 (torch.Tensor) | 이미지 크기로 정규화된 xyxyxyxy 형식의 회전된 상자를 반환합니다. |
더 자세한 내용은 OBB 클래스 문서를 참조하십시오.
결과 시각화 (Plotting Results)
The plot() method in Results objects facilitates visualization of predictions by overlaying detected objects (such as bounding boxes, masks, keypoints, and probabilities) onto the original image. This method returns the annotated image as a NumPy array, allowing for easy display or saving.
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() 메서드는 출력을 사용자 정의하기 위해 다양한 인수를 지원합니다:
| 인수(Argument) | 유형(Type) | 설명 | 기본값(Default) |
|---|---|---|---|
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 | 시각화를 위한 대체 이미지입니다. 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) |
스레드 안전 추론 (Thread-Safe Inference)
서로 다른 스레드에서 여러 YOLO 모델을 병렬로 실행할 때는 추론 중 스레드 안전성을 보장하는 것이 중요합니다. 스레드 안전 추론은 각 스레드의 예측이 격리되어 서로 간섭하지 않도록 보장하며, 경쟁 상태(race condition)를 방지하고 일관되고 신뢰할 수 있는 출력을 보장합니다.
멀티 스레드 애플리케이션에서 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'를 눌러 종료할 수 있습니다.
FAQ
Ultralytics YOLO란 무엇이며 실시간 추론을 위한 predict 모드는 무엇입니까?
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는 어떤 추론 인수를 지원합니까?
YOLO의 model.predict() 메서드는 conf, iou, imgsz, device 등 다양한 인수를 지원합니다. 이러한 인수를 사용하면 신뢰도 임계값, 이미지 크기, 계산에 사용되는 장치와 같은 매개변수를 설정하여 추론 과정을 사용자 정의할 수 있습니다. 이러한 인수에 대한 자세한 설명은 추론 인수 섹션에서 찾을 수 있습니다.
YOLO 예측 결과를 시각화하고 저장하려면 어떻게 해야 합니까?
YOLO로 추론을 실행한 후 Results 객체에는 주석이 달린 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다. result.show() 및 result.save(filename="result.jpg")와 같은 메서드를 사용하여 결과를 시각화하고 저장할 수 있습니다. 파일 경로에 누락된 상위 디렉토리는 자동으로 생성됩니다(예: result.save("path/to/result.jpg")). 이러한 메서드의 전체 목록은 결과 작업하기 섹션을 참조하십시오.


