Ultralytics HUB Inference API
После того, как вы обучили модель, вы можете бесплатно использовать Shared Inference API. Если вы являетесь пользователем Pro, вы можете получить доступ к Dedicated Inference API. Inference API Ultralytics HUB позволяет вам запускать инференс через наш REST API без необходимости устанавливать и настраивать среду Ultralytics YOLO локально.
Смотреть: Пошаговое руководство по Ultralytics HUB Inference API
Выделенный API для инференса
В ответ на высокий спрос и широкий интерес, мы рады представить Ultralytics HUB Dedicated Inference API, предлагающий развертывание в один клик в выделенной среде для наших пользователей Pro!
Примечание
Мы рады предложить эту функцию БЕСПЛАТНО во время нашей публичной бета-версии в рамках Pro Plan, с возможными платными уровнями в будущем.
- Глобальное покрытие: Развернуто в 38 регионах по всему миру, что обеспечивает доступ с низкой задержкой из любой точки. См. полный список регионов Google Cloud.
- На базе Google Cloud Run: Поддерживается Google Cloud Run, обеспечивая бесконечно масштабируемую и надежную инфраструктуру.
- Высокая скорость: Задержка менее 100 мс возможна для инференса YOLOv8n с разрешением 640 из близлежащих регионов на основе тестирования Ultralytics.
- Усиленная безопасность: Предоставляет надежные функции безопасности для защиты ваших данных и обеспечения соответствия отраслевым стандартам. Узнайте больше о безопасности Google Cloud.
Чтобы использовать выделенный API Inference Ultralytics HUB, нажмите кнопку Start Endpoint. Затем используйте уникальный URL-адрес конечной точки, как описано в руководствах ниже.
Совет
Выберите регион с наименьшей задержкой для достижения наилучшей производительности, как описано в документации.
Чтобы выключить выделенную конечную точку, нажмите кнопку Stop Endpoint.
Общий API для инференса
Чтобы использовать общий API Inference Ultralytics HUB, следуйте приведенным ниже руководствам.
Общий API инференса Ultralytics HUB имеет следующие ограничения по использованию:
- 100 вызовов / час
Python
Чтобы получить доступ к Inference API Ultralytics HUB с помощью Python, используйте следующий код:
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
Чтобы получить доступ к Inference API Ultralytics HUB с помощью cURL, используйте следующий код:
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
тоже.
Аргументы
Полный список доступных аргументов вывода см. в таблице ниже.
Аргумент | По умолчанию | Тип | Описание |
---|---|---|---|
file |
file |
Файл изображения или видео, который будет использоваться для инференса. | |
imgsz |
640 |
int |
Размер входного изображения, допустимый диапазон: 32 - 1280 пикселей. |
conf |
0.25 |
float |
Порог достоверности для прогнозов, допустимый диапазон 0.01 - 1.0 . |
iou |
0.45 |
float |
Пересечение над объединением (IoU) порог, допустимый диапазон 0.0 - 0.95 . |
Ответ
API инференса Ultralytics HUB возвращает 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": ...
}