YOLO Vision 2026:

Ultralytics YOLO를 사용한 모델 예측#

Ultralytics YOLO ecosystem and integrations

소개#

머신 러닝컴퓨터 비전 분야에서 시각 데이터를 이해하는 과정은 종종 추론(inference) 또는 예측(prediction)이라고 불립니다. Ultralytics YOLO26은 다양한 데이터 소스에서 고성능 실시간 추론에 최적화된 **예측 모드(predict mode)**라는 강력한 기능을 제공합니다.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

실제 활용 사례#

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

왜 추론을 위해 Ultralytics YOLO를 사용하는가?#

다양한 추론 요구사항에 YOLO26의 예측 모드를 고려해야 하는 이유는 다음과 같습니다:

  • 범용성: 이미지, 비디오, 심지어 라이브 스트림에서도 추론을 실행할 수 있습니다.
  • 성능: 정확도를 희생하지 않으면서 실시간 고속 처리를 수행하도록 설계되었습니다.
  • 사용 편의성: 빠른 배포 및 테스트를 위한 직관적인 Python 및 CLI 인터페이스를 제공합니다.
  • 높은 사용자 정의 가능성: 특정 요구사항에 맞춰 모델의 추론 동작을 조정할 수 있는 다양한 설정 및 매개변수를 제공합니다.
  • 프로덕션 준비 완료: 자동 확장 및 모니터링 기능을 갖춘 Ultralytics Platform inference endpoints로 모델을 배포하거나 로컬에서 추론을 실행할 수 있습니다.

예측 모드의 주요 특징#

YOLO26의 예측 모드는 강력하고 범용적으로 설계되었으며 다음과 같은 기능을 갖추고 있습니다:

  • 다중 데이터 소스 호환성: 데이터가 개별 이미지, 이미지 모음, 비디오 파일, 실시간 비디오 스트림 등 어떤 형태이든 예측 모드에서 지원합니다.
  • 스트리밍 모드: 스트리밍 기능을 사용하여 메모리 효율적인 Results 객체 제너레이터를 생성합니다. 예측기의 호출 메서드에서 stream=True을 설정하여 이를 활성화할 수 있습니다. 모든 결과를 포함하는 리스트를 반환하는 기본 동작(stream=False)과 달리, stream=True은 결과를 한 번에 하나씩 생성하므로 긴 비디오 및 라이브 스트림에 특히 유용합니다.
  • 배치 처리: 여러 이미지 또는 비디오 프레임을 단일 배치로 처리하여 전체 추론 시간을 더욱 단축합니다.
  • 통합 용이성: 유연한 API 덕분에 기존 데이터 파이프라인 및 기타 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다.

Ultralytics YOLO 모델은 추론 중 모델에 stream=True를 전달할 때 Results 객체의 Python 리스트 또는 메모리 효율적인 Results 객체 제너레이터를 반환합니다.

추론(Predict)
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인 경우, 모든 프레임이나 데이터 포인트에 대한 결과가 메모리에 저장되므로 입력이 큰 경우 빠르게 누적되어 메모리 부족(out-of-memory) 오류를 유발할 수 있습니다. 반면 stream=True는 현재 프레임이나 데이터 포인트의 결과만 메모리에 유지하는 제너레이터를 활용하여 메모리 소비를 크게 줄이고 메모리 부족 문제를 방지합니다.

소스예시유형참고
이미지'image.jpg'str 또는 Path단일 이미지 파일.
URL'https://ultralytics.com/images/bus.jpg'str이미지 URL.
스크린샷'screen'str스크린샷 캡처.
PILImage.open('image.jpg')PIL.ImageRGB 채널을 포함하는 HWC 형식.
OpenCVcv2.imread('image.jpg')np.ndarrayBGR 채널이 있는 HWC 포맷 uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayBGR 채널이 있는 HWC 포맷 uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorRGB 채널이 있는 BCHW 포맷 float32 (0.0-1.0).
CSV'sources.csv'str 또는 Path이미지, 비디오 또는 디렉토리 경로가 포함된 CSV 파일.
비디오 ✅'video.mp4'str 또는 PathMP4, AVI 등 형식의 비디오 파일.
디렉토리 ✅'path/'str 또는 Path이미지나 비디오가 포함된 디렉토리 경로.
글로브(glob) ✅'path/*.jpg'str여러 파일을 일치시키기 위한 글로브(glob) 패턴입니다. * 문자를 와일드카드로 사용하세요.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strYouTube 비디오 URL.
스트림 ✅'rtsp://example.com/media.mp4'strRTSP, RTMP, TCP와 같은 스트리밍 프로토콜용 URL 또는 IP 주소.
멀티 스트림 ✅'list.streams'str 또는 Path행당 하나의 스트림 URL이 포함된 *.streams 텍스트 파일(예: 8개의 스트림이 배치 크기 8로 실행됨).
웹캠 ✅0int추론을 실행할 연결된 카메라 장치의 인덱스.

각 소스 유형을 사용하는 코드 예시는 다음과 같습니다:

예측 소스

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

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**을 사용하며, 가능한 경우 최소 사각형(minimum-rectangle) 패딩을 활성화합니다. 이미지는 imgsz 내부에 맞도록 크기가 조정되고 가장 가까운 스트라이드 배수까지만 패딩되므로 최종 텐서는 imgsz보다 작을 수 있습니다. 최소 사각형 패딩은 배치 내 모든 이미지의 형태가 같고 백엔드가 이를 지원하는 경우(PyTorch .pt 또는 동적 ONNX / Triton)에만 사용됩니다. 그렇지 않으면 이미지가 전체 imgsz 타겟으로 패딩됩니다.

항상 전체 imgsz 타겟으로 패딩하려면 **rect=False**을 사용하세요. 이는 내보낸 모델(ONNX, TensorRT 등)과 일치시키기 위해 고정된 입력 크기가 필요할 때 권장됩니다.

정수 대 튜플 imgsz

  • 정수 imgsz=640은 스트라이드 반올림 후 정사각형 타겟 (640, 640)이 됩니다.
  • 튜플 imgsz=(384, 672)은 직사각형 타겟을 설정합니다. rect=Trueauto=True를 사용하면 실제 텐서가 이 타겟보다 작을 수 있습니다.

학습 대 예측/내보내기

학습은 단일 정수 imgsz만 허용합니다([h, w] 리스트는 가장 큰 값으로 강제 변환됨). 예측 및 내보내기는 정수 또는 (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)

추론 인수:

인수유형기본값설명
sourcestr 또는 int 또는 NoneNone추론을 위한 데이터 소스를 지정합니다. 이미지 경로, 비디오 파일, 디렉토리, URL, 또는 라이브 피드용 장치 ID일 수 있습니다. 생략할 경우 경고가 기록되고 모델은 기본 제공 데모 에셋(ultralytics/assets, 또는 OBB용 데모 URL)으로 대체됩니다. 다양한 형식과 소스를 지원하여 different types of input 전반에 걸쳐 유연한 적용이 가능합니다.
conffloat0.25탐지를 위한 최소 신뢰도 임계값을 설정합니다. 이 임계값 미만의 신뢰도로 탐지된 객체는 무시됩니다. 이 값을 조정하면 오탐을 줄이는 데 도움이 될 수 있습니다.
ioufloat0.7Non-Maximum Suppression (NMS)을 위한 Intersection Over Union (IoU) 임계값. 낮은 값은 겹치는 박스를 제거하여 더 적은 검출 결과를 생성하며, 중복을 줄이는 데 유용합니다.
imgszint 또는 tuple640레터박스 목표. 정수는 정사각형 N×N을 제공하며, 튜플은 (height, width)을 제공합니다. rect=True를 사용하면 최소 사각형 패딩으로 인해 실제 텐서가 이 목표보다 작을 수 있습니다. 고정 크기에는 rect=False을 사용하십시오. Fixed shape vs minimum rectangle을 참조하십시오.
rectboolTrueTrue인 경우, 가능할 때 최소 사각형 패딩을 사용합니다(동일 형태 배치 및 지원되는 백엔드). False인 경우, 항상 전체 imgsz로 패딩합니다. Fixed shape vs minimum rectangle을 참조하십시오.
quantizeint 또는 strNone추론 정밀도: 16/"fp16"은 지원되는 GPU에서 FP16 추론을 활성화하고, 32/"fp32"/미설정은 FP32입니다. INT8/PTQ 양자화는 export 중에 구성된 후 내보낸 모델을 로드하여 사용됩니다. 지원 중단된 half 플래그를 대체합니다.
devicestrNone추론을 위한 장치를 지정합니다(예: cpu, cuda:0, 0, npu 또는 npu:0). 사용자가 모델 실행을 위해 CPU, 특정 GPU, 화웨이 어센드 NPU 또는 기타 연산 장치 중에서 선택할 수 있도록 합니다.
batchint1추론을 위한 배치 크기를 지정합니다(소스가 a directory, video file, or .txt file인 경우에만 작동함). 더 큰 배치 크기는 더 높은 처리량을 제공하여 추론에 필요한 총 시간을 단축할 수 있습니다.
max_detint300이미지당 허용되는 최대 탐지 수입니다. 단일 추론에서 모델이 탐지할 수 있는 객체의 총 수를 제한하여 밀집된 장면에서 과도한 출력을 방지합니다.
vid_strideint1비디오 입력을 위한 프레임 스트라이드입니다. 비디오에서 프레임을 건너뛰어 시간적 해상도를 희생하는 대신 처리 속도를 높일 수 있습니다. 값 1은 모든 프레임을 처리하고, 더 높은 값은 프레임을 건너뜁니다.
stream_bufferboolFalse비디오 스트림의 수신 프레임을 대기열에 넣을지 여부를 결정합니다. False인 경우 새 프레임을 수용하기 위해 오래된 프레임이 삭제됩니다(실시간 애플리케이션에 최적화됨). True인 경우 새 프레임을 버퍼에 대기시켜 프레임 누락이 없도록 보장하지만, 추론 FPS가 스트림 FPS보다 낮을 경우 지연을 유발합니다.
visualizeboolFalse각 예측 옆에 클래스 활성화 히트맵을 저장하여, 어떤 픽셀이 예측된 클래스 점수를 높였는지 보여줍니다. confclasses을 준수하므로 classes=[0]는 해당 클래스만 매핑합니다. PyTorch 모델에서만 사용할 수 있습니다.
augmentboolFalse예측을 위한 TTA(test-time augmentation)를 활성화하여 추론 속도를 희생하는 대신 탐지 견고성을 향상시킬 수 있습니다.
agnostic_nmsboolFalse클래스에 구애받지 않는 NMS(Non-Maximum Suppression)를 활성화하여 서로 다른 클래스의 중복 상자를 병합합니다. 클래스 중첩이 흔한 다중 클래스 탐지 시나리오에서 유용합니다. 엔드 투 엔드 모델(YOLO26, YOLOv10)의 경우, 이는 동일한 탐지가 여러 클래스 레이블(IoU=1.0 중복)과 함께 나타나는 것만 방지하며 개별 상자 간의 IoU 임계값 기반 억제는 수행하지 않습니다.
classeslist[int]None예측을 클래스 ID 세트로 필터링합니다. 지정된 클래스에 속하는 탐지만 반환됩니다. 다중 클래스 탐지 작업에서 관련 객체에 집중하는 데 유용합니다.
retina_masksboolFalse고해상도 세그멘테이션 마스크를 반환합니다. 활성화된 경우 반환된 마스크(masks.data)는 원본 이미지 크기와 일치합니다. 비활성화된 경우 추론 중에 사용된 이미지 크기를 가집니다.
embedlist[int]None특징 벡터 또는 embeddings를 추출할 레이어를 지정합니다. 뒤에서 두 번째 레이어 임베딩에는 model.embed(source)을 사용하고, 특정 레이어를 선택하려면 model.predict(source, embed=[layer])를 사용합니다. 클러스터링이나 유사도 검색 같은 다운스트림 태스크에 유용합니다.
projectstrNonesave이 활성화된 경우 예측 출력이 저장되는 프로젝트 디렉토리의 이름.
namestrNone예측 실행의 이름. save이 활성화된 경우 예측 출력이 저장되는 프로젝트 폴더 내에 하위 디렉토리를 생성하는 데 사용됩니다.
streamboolFalse모든 프레임을 한 번에 메모리에 로드하는 대신 Results 객체 생성기를 반환하여 긴 비디오나 수많은 이미지에 대해 메모리 효율적인 처리를 활성화합니다.
verboseboolTrue터미널에 상세한 추론 로그를 표시할지 여부를 제어하여 예측 프로세스에 대한 실시간 피드백을 제공합니다.
compilebool 또는 strFalsePyTorch 2.x torch.compile 그래프 컴파일을 backend='inductor'(으)로 활성화합니다. True"default", False → 비활성화, 또는 "default", "reduce-overhead", "max-autotune-no-cudagraphs"과 같은 문자열 모드를 허용합니다. 지원되지 않는 경우 경고와 함께 eager로 대체됩니다.
channels_lastboolFalse추론 중 컨볼루션에 channels_last (NHWC) 메모리 형식을 사용하여 결과 변경 없이 CUDA Tensor Core GPU의 속도를 높입니다. 네이티브 PyTorch 모델에만 적용되며, CPU, MPS 및 TensorRT와 ONNX 같은 내보내기 형식에서는 무시됩니다.
end2endboolNoneNMS 프리 추론을 지원하는 YOLO 모델(YOLO26, YOLOv10)의 엔드투엔드 모드를 재정의합니다. 이를 False으로 설정하면 전통적인 NMS 파이프라인을 사용하여 예측을 실행할 수 있으며, 추가로 iou 인수를 활용할 수 있습니다. 자세한 내용은 End-to-End Detection guide를 참조하십시오.

시각화 인수:

인수유형기본값설명
showboolFalseTrue인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
saveboolFalse or True주석이 달린 이미지나 비디오를 파일로 저장하는 것을 활성화합니다. 문서화, 추가 분석 또는 결과 공유에 유용합니다. CLI 사용 시 기본값은 True이고 Python에서 사용 시 False입니다.
save_framesboolFalse비디오를 처리할 때 개별 프레임을 이미지로 저장합니다. 특정 프레임을 추출하거나 상세한 프레임별 분석에 유용합니다.
save_txtboolFalse[class] [x_center] [y_center] [width] [height] [confidence] 형식에 따라 감지 결과를 텍스트 파일로 저장합니다. 다른 분석 도구와의 통합에 유용합니다.
save_confboolFalse저장된 텍스트 파일에 신뢰도 점수를 포함합니다. 후처리 및 분석에 사용할 수 있는 세부 정보를 향상시킵니다.
save_cropboolFalse탐지된 이미지의 크롭된 이미지를 저장합니다. 데이터셋 증강, 분석 또는 특정 객체에 대한 집중 데이터셋을 만드는 데 유용합니다.
show_labelsboolTrue시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다.
show_confboolTrue각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다.
show_boxesboolTrue탐지된 객체 주위에 경계 상자를 그립니다. 이미지나 비디오 프레임에서 객체의 시각적 식별 및 위치 파악에 필수적입니다.
line_widthint or NoneNone바우딩 박스의 선 두께를 지정합니다. None인 경우, 선 두께가 이미지 크기에 따라 자동으로 조정됩니다. 가독성을 위한 시각적 커스텀을 제공합니다.

이미지 및 비디오 형식#

YOLO26은 ultralytics/data/utils.py에 지정된 대로 다양한 이미지 및 비디오 포맷을 지원합니다. 유효한 확장자 및 예시 predict 명령어는 아래 표를 참조하세요.

이미지#

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

참고

HEIC/HEIF 포맷은 첫 사용 시 자동으로 설치되는 pi-heif이 필요합니다. AVIF는 Pillow에서 기본적으로 지원됩니다.

이미지 접미사예제 예측 명령참조
.avifyolo predict source=image.avifAV1 이미지 파일 포맷
.bmpyolo predict source=image.bmp마이크로소프트 BMP 파일 포맷
.dngyolo predict source=image.dng어도비 DNG
.heicyolo predict source=image.heic고효율 이미지 포맷
.heifyolo predict source=image.heif고효율 이미지 포맷
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpo멀티 픽처 오브젝트
.pngyolo predict source=image.png포터블 네트워크 그래픽스
.tifyolo predict source=image.tif태그 이미지 파일 포맷
.tiffyolo predict source=image.tiff태그 이미지 파일 포맷
.webpyolo predict source=image.webpWebP

비디오#

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

비디오 확장자예제 예측 명령참조
.asfyolo predict source=video.asf고급 시스템 포맷
.aviyolo predict source=video.avi오디오 비디오 인터리브
.gifyolo predict source=video.gif그래픽스 인터체인지 포맷
.m4vyolo predict source=video.m4vMPEG-4 파트 14
.mkvyolo predict source=video.mkv마트로스카
.movyolo predict source=video.mov퀵타임 파일 포맷
.mp4yolo predict source=video.mp4MPEG-4 파트 14 - 위키백과
.mpegyolo predict source=video.mpegMPEG-1 파트 2
.mpgyolo predict source=video.mpgMPEG-1 파트 2
.tsyolo predict source=video.tsMPEG 트랜스포트 스트림
.wmvyolo predict source=video.wmv윈도우 미디어 비디오
.webmyolo predict source=video.webmWebM 프로젝트

결과 작업#

모든 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 inference

Results 객체는 다음과 같은 속성을 가집니다:

속성유형설명
orig_imgnp.ndarrayNumPy 배열 형태의 원본 이미지입니다.
orig_shapetuple(높이, 너비) 형식의 원본 이미지 크기입니다.
boxesBoxes, optional탐지된 BBox(바운딩 박스)를 포함하는 Boxes 객체입니다.
masksMasks, optional탐지된 마스크를 포함하는 Masks 객체입니다.
probsProbs, optional분류 작업에서 각 클래스에 대한 확률을 포함하는 Probs 객체입니다.
keypointsKeypoints, optional각 객체에 대해 탐지된 키포인트를 포함하는 Keypoints 객체입니다.
obbOBB, optional지향성 바운딩 박스를 포함하는 OBB 객체입니다.
semantic_maskSemanticMask, optional픽셀 단위 클래스 맵을 포함하는 SemanticMask 객체입니다.
speeddict이미지당 밀리초(ms) 단위로 측정된 전처리, 추론 및 후처리 속도를 담은 딕셔너리입니다.
namesdict클래스 인덱스와 클래스 이름을 매핑한 딕셔너리입니다.
pathstr이미지 파일 경로입니다.
save_dirstr, optional결과를 저장할 디렉토리입니다.

작업별 결과#

아래 필드 중 어떤 것이 채워지는지는 모델의 작업에 따라 다릅니다. 아직 선택하지 않았다면 검출, 분할, 시맨틱 분할, 깊이 추정, 분류, 포즈, OBB 비교를 참조하세요. 각 예측은 이미지나 프레임당 하나의 Results 객체를 반환합니다. 위의 공통 필드는 항상 사용 가능한 반면, 작업별 예측 데이터는 아래 필드에 저장됩니다. 좌표, 신뢰도 및 확률 텐서는 하프 정밀도가 사용되지 않는 경우 torch.float32, 사용되는 경우 torch.float16입니다. result.numpy() 이후, 텐서는 일치하는 NumPy dtype을 가진 NumPy 배열이 됩니다. 인스턴스 마스크는 torch.uint8 이진 텐서인 반면, 시맨틱 마스크는 클래스 수에 따라 클래스 ID에 가장 실용적인 정수 dtype(torch.uint8, torch.int16 또는 torch.int32)을 사용합니다.

속성유형형태설명
result.boxesBoxes(N)탐지 박스입니다.
result.boxes.datatorch.float32(N,6/7)원시 [x1,y1,x2,y2,conf,cls] 및 선택적 트랙 ID.
result.boxes.xyxytorch.float32(N,4)xyxy 픽셀 박스.
result.boxes.conftorch.float32(N,)신뢰도 점수입니다.
result.boxes.clstorch.float32(N,)클래스 ID; 이름을 위해 int으로 캐스팅됩니다.

Results 객체는 다음과 같은 메서드를 가집니다:

메서드반환 타입설명
update()None박스, 마스크, 확률, obb, 키포인트 또는 의미론적 마스크와 같은 새로운 데이터로 Results 객체를 업데이트합니다.
cpu()Results모든 텐서가 CPU 메모리로 이동된 Results 객체의 복사본을 반환합니다.
numpy()Results모든 텐서가 NumPy 배열로 변환된 Results 객체의 복사본을 반환합니다.
cuda()Results모든 텐서가 GPU 메모리로 이동된 Results 객체의 복사본을 반환합니다.
to()Results텐서가 지정된 장치와 dtype으로 이동된 Results 객체의 복사본을 반환합니다.
new()Results동일한 이미지, 경로, 이름 및 속도 속성을 가진 새로운 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#

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 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과 달리 객체당 하나의 이진 마스크를 포함하지 않으며 폴리곤 도우미를 제공하지 않습니다.

SemanticMask
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#

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 클래스 메서드 및 속성 표입니다:

이름유형설명
cpu()메서드CPU 메모리의 키포인트 텐서를 반환합니다.
numpy()메서드NumPy 배열로 키포인트 텐서를 반환합니다.
cuda()메서드GPU 메모리의 키포인트 텐서를 반환합니다.
to()메서드지정된 디바이스와 dtype으로 키포인트 텐서를 반환합니다.
xyn속성 (torch.Tensor)텐서로 표현된 정규화된 키포인트 목록입니다.
xy속성 (torch.Tensor)텐서로 표현된 픽셀 좌표의 키포인트 목록입니다.
conf속성 (torch.Tensor)사용 가능한 경우 키포인트의 신뢰도 값을 반환하고, 그렇지 않으면 None을 반환합니다.

자세한 내용은 Keypoints 클래스 문서를 참조하세요.

Probs#

Probs 객체는 top1top5 분류 인덱스와 점수를 얻는 데 사용할 수 있습니다.

Probs
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()메서드NumPy 배열로 probs 텐서 복사본을 반환합니다.
cuda()메서드GPU 메모리의 probs 텐서 복사본을 반환합니다.
to()메서드지정된 디바이스와 dtype으로 probs 텐서 복사본을 반환합니다.
top1속성 (int)상위 1개 클래스의 인덱스입니다.
top5속성 (list[int])상위 5개 클래스의 인덱스입니다.
top1conf속성 (torch.Tensor)상위 1개 클래스의 신뢰도입니다.
top5conf속성 (torch.Tensor)상위 5개 클래스의 신뢰도입니다.

자세한 내용은 Probs 클래스 문서를 참조하세요.

OBB(방향성 경계 상자)#

OBB 객체는 지향성 바운딩 박스를 인덱싱하고, 조작하고, 다른 포맷으로 변환하는 데 사용할 수 있습니다.

OBB(방향성 경계 상자)
from ultralytics import YOLO

# Load a pretrained 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 클래스 문서를 참조하세요.

결과 시각화(Plotting Results)#

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() 메서드는 출력을 사용자 정의하기 위한 다양한 인자를 지원합니다:

인수유형설명기본값
confbool감지 신뢰도 점수를 포함합니다.True
line_widthfloatBBox의 선 두께입니다. None인 경우 이미지 크기에 따라 비례하여 조정됩니다.None
font_sizefloat텍스트 글꼴 크기입니다. None인 경우 이미지 크기에 따라 비례하여 조정됩니다.None
fontstr텍스트 주석에 사용할 글꼴 이름입니다.'Arial.ttf'
pilbool이미지를 PIL Image 객체로 반환합니다.False
imgnp.ndarray | torch.Tensor대체 이미지입니다. 텐서는 연속적인 HWC BGR uint8 형식이어야 합니다.None
kpt_radiusint그려진 키포인트의 반지름입니다.5
kpt_linebool키포인트를 선으로 연결합니다.True
labelsbool주석에 클래스 레이블을 포함합니다.True
boxesbool이미지에 경계 상자를 오버레이합니다.True
masksbool이미지에 마스크를 오버레이합니다.True
probsbool분류 확률을 포함합니다.True
showbool기본 이미지 뷰어를 사용하여 주석이 달린 이미지를 직접 표시합니다.False
savebool주석이 달린 이미지를 filename(이)가 지정한 파일로 저장합니다.False
filenamestrsave이(가) True인 경우 주석이 달린 이미지를 저장할 파일의 경로 및 이름입니다.None
color_modestr색상 모드를 지정합니다 (예: 'instance' 또는 'class').'class'
txt_colortuple[int, int, int]경계 상자 및 이미지 분류 레이블을 위한 BGR 텍스트 색상입니다.(255, 255, 255)

스레드 안전한 추론#

서로 다른 스레드에서 여러 YOLO 모델을 병렬로 실행할 때 추론 중 스레드 안전성(thread safety)을 보장하는 것은 매우 중요합니다. 스레드 안전한 추론은 각 스레드의 예측이 격리되어 서로 간섭하지 않도록 보장함으로써, 경쟁 상태(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 모델을 사용한 스레드 안전(Thread-safe) 추론에 대한 심층적인 내용과 단계별 지침은 YOLO Thread-Safe Inference Guide를 참조하십시오. 이 가이드는 일반적인 실수를 방지하고 멀티스레드 추론이 원활하게 실행되도록 보장하는 데 필요한 모든 정보를 제공합니다.

스트리밍 소스 for-루프#

다음은 비디오 프레임에서 추론을 실행하기 위해 OpenCV (cv2) 및 YOLO를 사용하는 Python 스크립트입니다. 이 스크립트는 필요한 패키지(opencv-pythonultralytics)를 이미 설치했다고 가정합니다.

스트리밍 for 루프
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 guide로 자신만의 데이터를 포맷한 다음, 해당 데이터로 학습을 진행하세요.

FAQ#

Ultralytics YOLO와 실시간 추론을 위한 predict 모드는 무엇입니까?#

Ultralytics YOLO는 실시간 object detection, instance segmentation, semantic segmentation, depth estimationclassification을 위한 최첨단 모델입니다. predict mode를 사용하면 이미지, 비디오, 라이브 스트림과 같은 다양한 데이터 소스에서 고속 추론을 수행할 수 있습니다. 성능과 범용성을 위해 설계되었으며, 배치 처리 및 스트리밍 모드도 제공합니다. 기능에 대한 자세한 내용은 Ultralytics YOLO predict mode를 확인하세요.

Ultralytics YOLO를 사용하여 다양한 데이터 소스에서 어떻게 추론을 실행할 수 있습니까?#

Ultralytics YOLO는 개별 이미지, 비디오, 디렉토리, URL 및 스트림을 포함하여 광범위한 데이터 소스를 처리할 수 있습니다. model.predict() 호출에서 데이터 소스를 지정할 수 있습니다. 예를 들어, 로컬 이미지에는 'image.jpg'을 사용하고 URL에는 'https://ultralytics.com/images/bus.jpg'를 사용합니다. 문서에서 다양한 inference sources에 대한 자세한 예제를 확인하세요.

YOLO 추론 속도와 메모리 사용량을 최적화하려면 어떻게 해야 합니까?#

추론 속도를 최적화하고 메모리를 효율적으로 관리하기 위해 예측기의 호출 메서드에서 stream=True을 설정하여 스트리밍 모드를 사용할 수 있습니다. 스트리밍 모드는 모든 프레임을 메모리에 로드하는 대신 메모리 효율적인 Results 객체 제너레이터를 생성합니다. 긴 비디오나 대규모 데이터셋을 처리할 때 스트리밍 모드가 특히 유용합니다. streaming mode에 대해 자세히 알아보세요.

Ultralytics YOLO는 어떤 추론 인수를 지원합니까?#

YOLO의 model.predict() 메서드는 conf, iou, imgsz, device 등 다양한 인자를 지원합니다. 이러한 인자를 통해 신뢰도 임계값, 이미지 크기, 연산에 사용되는 디바이스와 같은 매개변수를 설정하여 추론 과정을 사용자 정의할 수 있습니다. 이러한 인자에 대한 자세한 설명은 inference arguments 섹션에서 확인할 수 있습니다.

YOLO 모델에서 임베딩을 어떻게 추출합니까?#

끝에서 두 번째 레이어에서 피처 임베딩을 추출하려면 model.embed(source)을 사용하거나, 특정 레이어를 선택하려면 model.predict()embed=[layer_index]을 전달하세요.

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 embeddings

YOLO 예측 결과를 시각화하고 저장하려면 어떻게 해야 합니까?#

YOLO로 추론을 실행한 후 Results 객체에는 주석이 달린 이미지를 표시하고 저장하는 메서드가 포함되어 있습니다. result.show()result.save(filename="result.jpg")와 같은 메서드를 사용하여 결과를 시각화하고 저장할 수 있습니다. 파일 이름 경로에 누락된 상위 디렉토리는 자동으로 생성됩니다 (예: result.save("path/to/result.jpg")). 이러한 메서드의 전체 목록은 working with results 섹션을 참조하십시오.

댓글