Inference#
Ultralytics Platform предоставляет инференс в браузере для тестирования обученных моделей и выделенные эндпоинты для программного доступа.

Вкладка Предсказание (Predict)#
У каждой модели есть вкладка 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, DNG, MPO
- Максимальный размер: 10 МБ
- Автоматический инференс: Результаты появляются автоматически после загрузки
Панель прогнозирования автоматически запускает инференс, когда ты загружаешь изображение, выбираешь пример или захватываешь кадр с веб-камеры. Нажимать кнопку не нужно.
Примеры изображений#
На панели прогнозирования отображаются примеры изображений из связанного набора данных твоей модели. Если набор данных не связан, используются стандартные примеры:
| Изображение | Контент |
|---|---|
bus.jpg | Уличная сцена с транспортными средствами |
zidane.jpg | Спортивная сцена с людьми |
Для моделей OBB вместо них отображаются снимки с воздуха, на которых запечатлены лодки и аэропорты.
Примеры изображений предварительно загружаются при открытии страницы, поэтому клик по примеру запускает инференс практически мгновенно, без ожидания скачивания.
Веб-камера#
Нажми на карточку веб-камеры, чтобы запустить трансляцию:
- Предоставь разрешение на использование камеры, когда появится запрос
- Нажми на предварительный просмотр видео, чтобы захватить кадр
- Инференс автоматически запустится для захваченного кадра
- Нажми еще раз, чтобы перезапустить веб-камеру
Просмотр результатов#
Результаты инференса отображают выходные данные, соответствующие задаче модели: боксы, маски, ключевые точки, ориентированные боксы, оценки классификации, семантическое покрытие или карту глубины. Результаты для объектов используют цвета классов датасета, если они доступны. Панель также показывает время препроцессинга, инференса, постобработки и сети.
Панель результатов показывает:
| Поле | Описание |
|---|---|
| Сводка результатов | Детекции, классификации или покрытие семантических классов |
| Статистика скорости | Препроцессинг, инференс, постобработка и сеть (мс) |
| JSON-ответ | Необработанный API-ответ в блоке кода |
Параметры инференса#
Настрой поведение инференса с помощью трех ползунков под изображением:

| Параметр | Диапазон | По умолчанию | Описание |
|---|---|---|---|
| Уверенность (Confidence) | 0.01 – 1.0, шаги по 0.01 | 0.25 | Минимальный порог достоверности |
| IoU | 0.0 – 0.95, шаги по 0.01 | 0.7 | Порог NMS IoU |
| Размер изображения | 32 – 1280, шаги по 32 | 640 | Размер изменения входного изображения |
Изменение любого параметра автоматически перезапускает инференс на текущем изображении с задержкой в 500 мс. Повторно загружать не нужно.
Порог достоверности (Confidence Threshold)#
Фильтрация предсказаний по уверенности:
- Выше (0.5+): Меньше предсказаний, но они более точные
- Ниже (0.1-0.25): Больше предсказаний, возможен шум
- По умолчанию (0.25): Сбалансировано для большинства случаев использования
Порог IoU#
Управление Non-Maximum Suppression (NMS):
- Выше (0.7+): Разрешить больше пересекающихся рамок
- Нижняя (0.3-0.5): Более агрессивно подавлять пересекающиеся детекции
- По умолчанию (0.7): Сбалансированное поведение NMS для большинства случаев использования
Инференс развертывания (Deployment Predict)#
Каждая запущенная выделенная конечная точка включает вкладку Predict прямо на карточке развертывания. Она использует сервис инференса самого развертывания, а не общий сервис прогнозирования, что позволяет тестировать развернутую конечную точку из браузера.
API выделенного эндпоинта#
Карточка API Docs во вкладке модели Predict содержит примеры запросов для Python, JavaScript и cURL. Примеры используют плейсхолдеры, пока ты не развернешь модель. После развертывания вкладка Code карточки развертывания заполняет URL эндпоинта и API-ключ, доступные для твоего воркспейса.
Аутентификация#
Включай свой API-ключ в запросы:
Authorization: Bearer YOUR_API_KEYЧтобы запускать инференс из своих скриптов, блокнотов или приложений, укажи API-ключ. Сгенерируй его в разделе Settings > API Keys.
Эндпоинт#
POST https://YOUR_DEPLOYMENT_URL.run.app/predictЗапрос#
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())
Параметры запроса#
| Параметр | Тип | По умолчанию | Диапазон | Описание |
|---|---|---|---|---|
file | файл | - | - | Файл изображения или видео (обязательно, если не задан параметр source) |
conf | float | 0.25 | 0.01 – 1.0 | Минимальный порог достоверности |
iou | float | 0.7 | 0.0 – 0.95 | Порог NMS IoU |
imgsz | int | 640 | 32 – 1280 | Размер входного изображения в пикселях |
normalize | bool | false | - | Возвращать координаты рамки в диапазоне 0–1 |
decimals | int | 5 | 0 – 10 | Десятичная точность для значений координат |
source | string | - | - | 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,
"functionTimeCall": 0.018,
"task": "detect",
"version": {
"ultralytics": "8.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}
Поля ответа#
| Поле | Тип | Описание |
|---|---|---|
images | массив | Список обработанных изображений |
images[].shape | массив | Размеры изображения [высота, ширина] |
images[].results | массив | Список обнаружений |
images[].results[].class | int | Индекс класса (целочисленный ID) |
images[].results[].name | string | Название класса |
images[].results[].confidence | float | Уверенность обнаружения (0-1) |
images[].results[].box | объект | Координаты ограничивающей рамки |
images[].speed | объект | Время обработки в миллисекундах |
metadata | объект | Метаданные запроса и информация о версии |
Ответы, специфичные для задачи#
Формат ответа зависит от задачи:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Ограничения частоты запросов#
Общий API моделей ограничен 20 запросами в минуту для каждого API-ключа, вошедшего в систему пользователя или анонимного IP. При превышении лимита API возвращает 429 с заголовком Retry-After. Ознакомься с полным справочником лимитов запросов для всех категорий эндпоинтов.
Запросы, отправляемые напрямую на выделенный эндпоинт, не проходят через ограничитель запросов Platform API. Для высоконагруженного локального инференса см. руководство по режиму Predict.
Обработка ошибок#
Типичные ответы об ошибках:
| Код | Сообщение | Решение |
|---|---|---|
| 400 | Недопустимое изображение | Проверь формат файла |
| 401 | Неавторизован | Проверь API-ключ |
| 404 | Модель не найдена | Проверь ID модели |
| 429 | Лимит запросов превышен | Подожди и повтори попытку либо отправь запросы напрямую на выделенный эндпоинт |
| 500 | Ошибка сервера | Повторить запрос |
| 503 | Сервис недоступен | Сервис прогнозирования запускается или недоступен; подожди немного и повтори попытку |
FAQ#
Можно ли запустить инференс на видео?#
Оба метода инференса принимают видеофайлы:
- Выделенные эндпоинты напрямую принимают видеофайлы. Поддерживаемые форматы (до 100 МБ): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Каждый кадр обрабатывается индивидуально, и результаты возвращаются для каждого кадра. Подробности см. в разделе выделенные эндпоинты.
- Общий инференс (
/api/models/{id}/predict) использует тот же сервис предсказаний и принимает те же форматы видео. Вкладка Predict в браузере позволяет выбирать только изображения, поэтому для видео используй API или выделенный эндпоинт.
Как получить аннотированное изображение?#
API возвращает предсказания в формате JSON. Для визуализации:
- Используй предсказания, чтобы отрисовать рамки локально
- Используй метод
plot()от Ultralytics:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")Смотри документацию по режиму Predict для получения полного API результатов и опций визуализации.
Каков максимальный размер изображения?#
- Лимит вкладки Predict: 10 МБ
- Лимит API выделенного эндпоинта: 100 МБ
- Автоизменение размера во вкладке Predict: Изображения изменяются до выбранного
Image Sizeперед загрузкой
Большие изображения автоматически изменяются в размере с сохранением соотношения сторон.
Могу ли я запустить пакетный инференс?#
Текущий API обрабатывает по одному изображению за запрос. Для пакетной обработки:
- Отправляй отдельные запросы для каждого изображения
- Распределяй запросы между выделенными эндпоинтами, когда это уместно
- Используй локальный инференс для больших батчей
import concurrent.futures
import requests
url = "https://predict-abc123.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))