콘텐츠로 건너뛰기

Ultralytics HUB 추론 API

모델을 학습한 후에는 공유 추론 API를 무료로 사용할 수 있습니다. Pro 사용자의 경우, 전용 추론 API에 액세스할 수 있습니다. Ultralytics HUB 추론 API를 사용하면 Ultralytics YOLO 환경을 로컬에 설치 및 설정할 필요 없이 REST API를 통해 추론을 실행할 수 있습니다.

Ultralytics 모델 페이지 내부의 배포 탭 스크린샷에서 전용 추론 API 카드를 가리키는 화살표와 공유 추론 API 카드를 가리키는 화살표가 있습니다.


Watch: Ultralytics HUB 추론 API 연습

전용 추론 API

높은 수요와 폭넓은 관심에 부응하여, 프로 사용자를 위한 전용 환경에서 클릭 한 번으로 배포할 수 있는 Ultralytics HUB 전용 추론 API를 공개하게 되어 매우 기쁘게 생각합니다!

참고

프로 요금제의 일부로 공개 베타 기간 동안 이 기능을 무료로 제공하게 되어 기쁘게 생각하며, 추후 유료화할 예정입니다.

  • 글로벌 서비스 범위: 전 세계 38개 지역에 배포되어 어느 위치에서나 지연 시간이 짧은 액세스를 보장합니다. Google 클라우드 리전 전체 목록 보기.
  • Google 클라우드 런 지원: 무한한 확장성과 높은 안정성의 인프라를 제공하는 Google Cloud Run의 지원을 받습니다.
  • 빠른 속도: Ultralytics 테스트 결과, 인근 지역에서 640 해상도로 YOLOv8n 추론 시 100ms 미만의 지연 시간이 가능합니다.
  • 강화된 보안: 강력한 보안 기능을 제공하여 데이터를 보호하고 업계 표준을 준수할 수 있도록 합니다. Google 클라우드 보안에 대해 자세히 알아보세요.

Ultralytics HUB 전용 추론 API를 사용하려면 엔드포인트 시작 버튼을 클릭합니다. 그런 다음 아래 가이드에 설명된 대로 고유한 엔드포인트 URL을 사용합니다.

Ultralytics 모델 페이지 내 배포 탭의 허브 스크린샷과 전용 추론 API 카드의 시작 엔드포인트 버튼을 가리키는 화살표가 있습니다.

문서에 설명된 대로 최상의 성능을 위해 지연 시간이 가장 짧은 지역을 선택하세요.

전용 엔드포인트를 종료하려면 엔드포인트 중지 버튼을 클릭합니다.

Ultralytics 모델 페이지 내부의 배포 탭 스크린샷과 전용 추론 API 카드의 엔드포인트 중지 버튼을 가리키는 화살표가 있습니다.

공유 추론 API

Ultralytics HUB 공유 추론 API를 사용하려면 아래 가이드를 따르세요.

무료 사용자에게는 다음과 같은 사용 제한이 있습니다:

  • 시간당 100 통화
  • 월 1,000 통화

프로 사용자에게는 다음과 같은 사용 제한이 있습니다:

  • 시간당 1,000 통화
  • 월 10000 통화

Python

Python 을 사용하여 Ultralytics HUB 추론 API에 액세스하려면 다음 코드를 사용합니다:

import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())

참고

교체 MODEL_ID 를 원하는 모델 ID와 함께 입력합니다, API_KEY 실제 API 키와 path/to/image.jpg 를 추론을 실행하려는 이미지의 경로와 함께 입력합니다.

사용 중인 경우 전용 추론 API에서 url 도 마찬가지입니다.

cURL

cURL을 사용하여 Ultralytics HUB 추론 API에 액세스하려면 다음 코드를 사용합니다:

curl -X POST "https://predict.ultralytics.com" \
  -H "x-api-key: API_KEY" \
  -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"

참고

교체 MODEL_ID 를 원하는 모델 ID와 함께 입력합니다, API_KEY 실제 API 키와 path/to/image.jpg 를 추론을 실행하려는 이미지의 경로와 함께 입력합니다.

사용 중인 경우 전용 추론 API에서 url 도 마찬가지입니다.

인수

사용 가능한 추론 인수의 전체 목록은 아래 표를 참조하세요.

인수기본값유형설명
filefile추론에 사용할 이미지 또는 동영상 파일입니다.
imgsz640int입력 이미지의 크기, 유효한 범위는 32 - 1280 픽셀.
conf0.25float예측에 대한 신뢰도 임계값, 유효 범위 0.01 - 1.0.
iou0.45float유니온을 통한 교차로 (IoU) threshold, valid range 0.0 - 0.95.

응답

Ultralytics HUB 추론 API는 JSON 응답을 반환합니다.

분류

분류 모델

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-cls.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
    -H "x-api-key: API_KEY" \
    -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

탐지

탐지 모델

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
    -H "x-api-key: API_KEY" \
    -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

OBB

OBB 모델

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-obb.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
    -H "x-api-key: API_KEY" \
    -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 374.85565,
            "x2": 392.31824,
            "x3": 412.81805,
            "x4": 395.35547,
            "y1": 264.40704,
            "y2": 267.45728,
            "y3": 150.0966,
            "y4": 147.04634
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

세분화

세분화 모델

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-seg.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
    -H "x-api-key: API_KEY" \
    -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          },
          "segments": {
            "x": [
              266.015625,
              266.015625,
              258.984375,
              ...
            ],
            "y": [
              110.15625,
              113.67188262939453,
              120.70311737060547,
              ...
            ]
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}

포즈

포즈 모델

from ultralytics import YOLO

# Load model
model = YOLO("yolov8n-pose.pt")

# Run inference
results = model("image.jpg")

# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
    -H "x-api-key: API_KEY" \
    -F "model=https://hub.ultralytics.com/models/MODEL_ID" \
    -F "file=@/path/to/image.jpg" \
    -F "imgsz=640" \
    -F "conf=0.25" \
    -F "iou=0.45"
import requests

# API URL
url = "https://predict.ultralytics.com"

# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}

# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}

# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
    files = {"file": image_file}
    response = requests.post(url, headers=headers, files=files, data=data)

print(response.json())
{
  "images": [
    {
      "results": [
        {
          "class": 0,
          "name": "person",
          "confidence": 0.92,
          "box": {
            "x1": 118,
            "x2": 416,
            "y1": 112,
            "y2": 660
          },
          "keypoints": {
            "visible": [
              0.9909399747848511,
              0.8162999749183655,
              0.9872099757194519,
              ...
            ],
            "x": [
              316.3871765136719,
              315.9374694824219,
              304.878173828125,
              ...
            ],
            "y": [
              156.4207763671875,
              148.05775451660156,
              144.93240356445312,
              ...
            ]
          }
        }
      ],
      "shape": [
        750,
        600
      ],
      "speed": {
        "inference": 200.8,
        "postprocess": 0.8,
        "preprocess": 2.8
      }
    }
  ],
  "metadata": ...
}
📅 Created 9 months ago ✏️ Updated 29 days ago

댓글