Ultralytics YOLO27:

추론#

Ultralytics Platform은 학습된 모델을 테스트할 수 있는 브라우저 기반 inference와 프로그래밍 방식으로 액세스할 수 있는 전용 엔드포인트를 제공합니다.

감지 오버레이가 표시된 Ultralytics Platform 모델 Predict 탭

Predict 탭#

가중치가 포함된 모든 모델에는 브라우저 기반 inference를 위한 Predict 탭이 표시됩니다:

  1. 모델로 이동합니다
  2. Predict 탭을 클릭합니다
  3. 이미지를 업로드하거나 예제 이미지를 사용하거나 웹캠을 엽니다
  4. 작업별 오버레이, prediction 요약, 처리 시간 및 원시 응답을 검토합니다

가중치가 없는 모델에는 대신 빈 상태가 표시됩니다. 먼저 모델을 학습하거나 가중치를 업로드합니다.

Ultralytics Platform Predict 탭 이미지 업로드 드롭존

입력 방법#

Predict 패널은 여러 입력 방법을 지원합니다:

메서드설명
이미지 업로드이미지를 드래그 앤 드롭하거나 클릭하여 업로드합니다
예제 이미지기본 제공 예제(데이터셋 이미지 또는 기본 이미지)를 클릭합니다
웹캠 캡처단일 프레임 캡처를 지원하는 실시간 카메라 피드
graph LR
    A[Upload Image]:::start --> D[Auto-Inference]:::proc
    B[Example Image]:::start --> D
    C[Webcam Capture]:::start --> D
    D --> E[Results + Overlays]:::out

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef out fill:#9C27B0,color:#fff

이미지 업로드#

드래그 앤 드롭하거나 클릭하여 업로드합니다:

  • 지원 형식: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
  • 최대 크기: 10 MB
  • 자동 inference: 업로드 후 결과가 자동으로 표시됩니다
자동 추론

이미지를 업로드하거나 예제를 선택하거나 웹캠 프레임을 캡처하면 Predict 패널이 자동으로 inference를 실행합니다. 버튼을 클릭할 필요가 없습니다.

클라이언트 측 크기 조정

업로드하기 전에 패널은 이미지의 가장 긴 변이 선택한 Image Size과 일치하도록 이미지 크기를 조정하고 정규화된 좌표를 요청합니다. 이를 통해 브라우저 테스트를 빠르게 수행할 수 있으며, 직접 보내는 요청의 크기는 조정되지 않습니다.

예제 이미지#

Predict 패널은 모델에 연결된 데이터셋에서 최대 2개의 예제 이미지를 표시하며, 먼저 val split을 선택하고 그다음 test, train 순으로 선택합니다. 연결된 데이터셋이 없으면 기본 예제가 사용됩니다:

이미지콘텐츠
bus.jpg차량이 있는 거리 풍경
zidane.jpg사람이 있는 스포츠 장면

OBB 모델의 경우 보트와 공항의 항공 이미지가 대신 표시됩니다.

미리 로드된 이미지

페이지가 로드될 때 예제 이미지가 미리 로드되므로, 예제를 클릭하면 다운로드를 기다릴 필요 없이 거의 즉시 inference가 실행됩니다.

Webcam#

웹캠 카드를 클릭하여 실시간 카메라 피드를 시작합니다:

  1. 메시지가 표시되면 카메라 권한을 허용합니다
  2. 비디오 미리 보기를 클릭하여 프레임을 캡처합니다
  3. 캡처한 프레임에서 inference가 자동으로 실행됩니다
  4. 다시 클릭하여 웹캠을 재시작합니다

결과 보기#

Inference 결과에는 모델 작업에 적합한 출력이 표시됩니다. 여기에는 box, mask, keypoint, oriented box, classification score, semantic coverage 또는 depth map이 포함됩니다. 사용 가능한 경우 객체 결과에는 데이터셋 클래스 색상이 사용됩니다. 패널에는 preprocess, inference, postprocess 및 network 처리 시간도 표시됩니다.

Ultralytics 플랫폼 예측 탭 결과(감지 및 속도 통계 포함)

결과 패널에 표시되는 내용은 다음과 같습니다:

필드설명
결과 요약감지별 목록 또는 classification 및 semantic 모델의 상위 5개 클래스
속도 통계Preprocess, inference, postprocess 및 network(ms)
VersionsUltralytics 및 PyTorch 버전과 해당하는 경우 depth 범위 또는 mask 크기
JSON 응답코드 블록에 표시된 원시 API 응답이며, base64 map 데이터는 생략됩니다

결과가 표시되면 미리 보기 위에 두 가지 컨트롤이 나타납니다. 이미지를 클릭하면 오버레이를 유지한 채 확대할 수 있고, 다운로드 버튼을 사용하면 현재 결과에 주석이 표시된 JPEG를 저장할 수 있습니다.

Inference 파라미터#

이미지 아래의 세 슬라이더로 inference 동작을 조정합니다:

Ultralytics Platform Predict 탭 파라미터 슬라이더

매개변수범위기본값설명
Confidence0.01 – 1.0, 0.01 단위0.25최소 confidence 임계값
IoU0.0 – 0.95, 0.01 단위0.7NMS IoU 임계값
Image Size32 – 1280, 32 단위640입력 크기 조정 차원
자동 재실행

파라미터를 변경하면 500ms 디바운스를 적용하여 현재 이미지에서 inference가 자동으로 다시 실행됩니다. 다시 업로드할 필요가 없습니다.

Confidence 임계값#

confidence를 기준으로 prediction을 필터링합니다:

  • 높음(0.5 이상): 더 적고 확실성이 높은 prediction
  • 낮음(0.1~0.25): 더 많은 prediction과 일부 noise
  • 기본값(0.25): 대부분의 사용 사례에 균형 잡힌 설정

IoU 임계값#

비최대 억제를 제어합니다:

  • 높음(0.7 이상): 더 많이 겹치는 box 허용
  • 낮음(0.3~0.5): 겹치는 감지를 더 적극적으로 억제
  • 기본값(0.7): 대부분의 사용 사례에 균형 잡힌 NMS 동작

배포 Predict#

실행 중인 각 전용 엔드포인트에는 배포 카드에 Predict 탭이 직접 포함됩니다. 이 기능은 공유 Predict 서비스가 아니라 배포 자체의 inference 서비스를 사용하므로 브라우저에서 배포된 엔드포인트를 테스트할 수 있습니다.

모니터링이 활성화된 유료 엔드포인트에서는 처리된 이미지도 Monitoring 탭에 기여합니다. 샘플링된 예시와 집계 차트는 메모리에 유지되는 경량의 임시 데이터이며, 모델을 중지, 재시작, 재배포, 크기 조정 또는 교체하면 삭제될 수 있습니다. 예시를 유지하려면 데이터셋에 저장하세요.

전용 엔드포인트 API#

모델의 Predict 탭에 있는 API Docs 카드에는 confidence, IoU 및 현재 슬라이더에서 설정된 이미지 크기가 미리 입력된 Python, JavaScript 및 cURL 요청 예제가 포함되어 있습니다. 배포하기 전까지 URL과 key는 자리 표시자로 유지되며, 코드 탭 옆의 Deploy 버튼을 클릭하면 모델의 Deploy 탭으로 이동합니다. 배포 후에는 배포 카드의 Code 탭에 해당 엔드포인트의 URL과 workspace 소유자의 경우 연결된 API key가 입력되므로 복사하여 바로 실행할 수 있습니다.

인증#

요청에 API key를 포함합니다:

Authorization: Bearer YOUR_API_KEY
API Key 필요

자체 script, notebook 또는 app에서 inference를 실행하려면 API key를 포함해야 합니다. Settings > API Keys에서 하나를 생성합니다. 전용 엔드포인트는 생성 시 사용된 단일 key만 허용하고, 공유 모델 API는 workspace에서 활성 상태인 모든 key를 허용하며, public 모델은 익명 요청도 허용합니다.

엔드포인트#

전용 엔드포인트는 자체 URL로 요청을 받습니다:

POST https://YOUR_DEPLOYMENT_URL.run.app/predict

공유 inference는 모델의 전체 경로와 함께 Platform API를 사용합니다:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

두 방식 모두 동일한 multipart/form-data body를 허용하고 동일한 response shape을 반환합니다. Python SDK를 사용하는 경우 공유 inference에는 client.models.predict(owner, project, model, body=...)를, 전용 배포에는 client.deployments.predict(owner, deployment, body=...)을 사용합니다:

from ultralytics_platform import Platform

client = Platform()  # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
    results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})

요청#

import requests

url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}

with open("image.jpg", "rb") as image_file:
    response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())

Ultralytics Platform Predict 탭 코드 예제 Python 탭

요청 파라미터#

매개변수유형기본값범위설명
filefile--이미지 또는 비디오 파일(source이 설정된 경우를 제외하면 필수)
conffloat0.250.01 – 1.0최소 confidence 임계값
ioufloat0.70.0 – 0.95NMS IoU 임계값
imgszint64032 – 1280픽셀 단위 입력 이미지 크기
normalizeboolfalse-bounding box 좌표를 0 – 1 범위로 반환합니다
decimalsint50 – 10좌표 값의 소수점 정밀도
bitsint88, 12, 16depth 모델에만 적용되는 depth map 양자화
sourcestring--이미지 URL 또는 base64 문자열(file의 대안)

응답#

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                },
                {
                    "class": 2,
                    "name": "car",
                    "confidence": 0.87,
                    "box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
                }
            ],
            "speed": {
                "preprocess": 1.2,
                "inference": 12.5,
                "postprocess": 2.3
            }
        }
    ],
    "metadata": {
        "imageCount": 1,
        "functionTimeAlive": 1284.51,
        "functionTimeCall": 0.018,
        "task": "detect",
        "version": {
            "ultralytics": "8.x.x",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Ultralytics Platform Predict 탭 JSON 응답 보기

응답 필드#

필드유형설명
images배열처리된 이미지 목록이며, 동영상의 경우 각 비디오 프레임당 하나의 항목이 포함됩니다.
images[].shape배열이미지 크기 [높이, 너비]
images[].results배열탐지 목록
images[].results[].classint클래스 인덱스(정수 ID)
images[].results[].namestring클래스 이름
images[].results[].confidencefloat탐지 신뢰도(0~1)
images[].results[].box객체바운딩 박스 좌표
images[].semantic_mask객체픽셀별 클래스 맵(시맨틱 모델만 해당)
images[].depth객체픽셀별 깊이 맵(깊이 모델만 해당)
images[].speed객체밀리초 단위 처리 시간
metadata객체이미지 수, 서비스 처리 시간, 작업, Ultralytics/PyTorch 버전

작업별 응답#

응답 형식은 작업에 따라 달라집니다:

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}

속도 제한#

공유 모델 API는 각 API 키, 로그인한 호출자 또는 익명 IP마다 분당 20개 요청으로 제한됩니다. 요청이 제한되면 API는 429Retry-After 헤더를 반환합니다. 모든 엔드포인트 범주에 대한 자세한 내용은 속도 제한 참조를 확인하십시오.

더 높은 처리량이 필요하신가요?

전용 엔드포인트로 직접 전송된 요청은 Platform API 속도 제한기를 거치지 않습니다. 엔드포인트의 용량이 일시적으로 가득 찬 경우에도 429Retry-After 헤더를 사용하여 부하를 분산합니다. 대규모 로컬 추론은 Predict 모드 가이드를 참조하십시오.

오류 처리#

일반적인 오류 응답:

코드메시지솔루션
400잘못된 이미지파일 형식 또는 모델에 학습된 가중치가 있는지 확인하십시오.
401인증되지 않음API 키를 확인하십시오.
404모델을 찾을 수 없음소유자, 프로젝트 및 모델 이름을 확인하십시오.
413입력이 너무 큼엔드포인트 제한보다 작아지도록 파일 크기를 줄이십시오.
429속도 제한 적용됨잠시 기다린 후 다시 시도하거나 전용 엔드포인트로 직접 요청을 보내십시오.
500서버 오류요청을 다시 시도하십시오.
503서비스를 사용할 수 없음Predict 서비스가 시작 중이거나 연결할 수 없습니다. 잠시 기다린 후 다시 시도하십시오.

FAQ#

  • 두 추론 방법 모두 동영상 파일을 지원합니다:

    • 전용 엔드포인트는 동영상 파일을 직접 지원합니다. 지원되는 형식(최대 100MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. 각 프레임은 개별적으로 처리되며 결과는 프레임별로 반환됩니다. 자세한 내용은 전용 엔드포인트를 참조하십시오.
    • 공유 추론(POST /api/models/{owner}/{project}/{model}/predict)은 동일한 Predict 서비스를 사용하며 동일한 동영상 형식을 지원합니다. 브라우저의 Predict 탭에서는 이미지만 선택할 수 있으므로, 동영상에는 API 또는 전용 엔드포인트를 사용하십시오.
  • Predict 탭에서 미리보기 위의 다운로드 버튼을 누르면 현재 결과가 주석이 추가된 JPEG로 저장됩니다. API 자체는 JSON 예측 결과를 반환합니다. 이를 시각화하려면 다음을 수행하십시오:

    1. 예측 결과를 사용하여 로컬에서 박스 그리기
    2. Ultralytics의 plot() 메서드를 사용하십시오:
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("image.jpg")
    results[0].save("annotated.jpg")

    전체 결과 API 및 시각화 옵션은 Predict 모드 문서를 참조하십시오.

    • Predict 탭 제한: 10MB
    • API 제한: 공유 추론과 전용 엔드포인트 모두 100MB
    • Predict 탭의 자동 크기 조정: 업로드 전에 이미지 크기를 선택한 Image Size으로 조정합니다.

    큰 이미지는 가로세로 비율을 유지하면서 브라우저에서 자동으로 크기가 조정됩니다. 직접 보내는 요청의 이미지는 크기가 조정되지 않으므로 제한을 초과하는 이미지는 413과 함께 거부됩니다.

  • 현재 API는 요청당 이미지 한 장을 처리합니다. 배치 처리는 다음과 같이 수행할 수 있습니다:

    1. 각 이미지에 대해 별도의 요청을 보냅니다.
    2. 적절한 경우 요청을 여러 전용 엔드포인트에 분산합니다.
    3. 대규모 배치에는 로컬 추론을 사용합니다.
    Python을 사용한 배치 추론
    import concurrent.futures
    
    import requests
    
    url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
    headers = {"Authorization": "Bearer YOUR_API_KEY"}
    images = ["img1.jpg", "img2.jpg", "img3.jpg"]
    
    def predict(image_path):
        with open(image_path, "rb") as f:
            return requests.post(url, headers=headers, files={"file": f}).json()
    
    with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
        results = list(executor.map(predict, images))

댓글