Перейти к содержанию

Инференс

Ultralytics Platform предоставляет Inference API для тестирования обученных моделей. Используйте браузерный Predict вкладка для быстрой проверки или REST API для программного доступа.

Платформа Ultralytics: Вкладка «Прогноз» модели с наложением detect

Вкладка «Предсказать»

Каждая модель включает Predict вкладка для инференса на основе браузера:

  1. Перейдите к вашей модели
  2. Нажмите вкладку Предсказание
  3. Загрузите изображение, используйте пример или откройте веб-камеру
  4. Мгновенный просмотр предсказаний с наложением ограничивающих рамок

Платформа Ultralytics: Вкладка «Прогнозирование» — Зона перетаскивания для загрузки изображений

Методы ввода

Панель предсказания поддерживает несколько методов ввода:

МетодОписание
Загрузка изображенияПеретащите или нажмите, чтобы загрузить изображение
Примеры изображенийНажмите на встроенные примеры (изображения набора данных или значения по умолчанию)
Захват с веб-камерыПрямая трансляция с камеры с захватом одного кадра
graph LR
    A[Upload Image] --> D[Auto-Inference]
    B[Example Image] --> D
    C[Webcam Capture] --> D
    D --> E[Results + Overlays]

    style D fill:#2196F3,color:#fff
    style E fill:#4CAF50,color:#fff

Загрузить изображение

Перетащите или нажмите для загрузки:

  • Поддерживаемые форматы: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
  • Максимальный размер: 10МБ
  • Автоматический вывод: Результаты появляются автоматически после загрузки

Автоматический вывод

Панель предсказания автоматически выполняет инференс, когда вы загружаете изображение, выбираете пример или захватываете кадр с веб-камеры. Нажимать кнопку не требуется.

Примеры изображений

Панель предсказания отображает примеры изображений из связанного с вашей моделью набора данных. Если набор данных не связан, используются примеры по умолчанию:

ИзображениеКонтент
bus.jpgУличная сцена с транспортными средствами
zidane.jpgСпортивная сцена с людьми

Для моделей obb вместо этого показаны аэрофотоснимки лодок и аэропортов.

Предзагруженные изображения

Примеры изображений предварительно загружаются при открытии страницы, поэтому нажатие на пример запускает почти мгновенный инференс без ожидания загрузки.

Webcam

Нажмите на карточку веб-камеры, чтобы начать прямую трансляцию с камеры:

  1. Предоставьте разрешение на доступ к камере при появлении запроса
  2. Нажмите на предварительный просмотр видео, чтобы захватить кадр.
  3. Инференс автоматически запускается на захваченном кадре
  4. Нажмите еще раз, чтобы перезапустить веб-камеру

Посмотреть результаты

Отображение результатов вывода:

  • Ограничивающие рамки с метками классов в виде SVG-наложений
  • Показатели достоверности для каждого детектирования
  • Цвета классов из цветовой палитры вашего набора данных (или палитры Ultralytics по умолчанию)
  • Разделение по скорости: Время предварительной обработки, вывода, постобработки и работы сети

Платформа Ultralytics: Вкладка «Прогнозирование» — Результаты с detect и статистикой скорости

Панель результатов показывает:

ПолеОписание
Список обнаруженийКаждое обнаружение с именем класса и достоверностью
Статистика скоростиПредварительная обработка, инференс, постобработка, сеть (мс)
JSON-ответНеобработанный ответ API в блоке кода

Параметры инференса

Настройте поведение detect с помощью параметров в сворачиваемом разделе Параметры:

Платформа Ultralytics: Вкладка «Прогнозирование» — Слайдеры параметров

ПараметрДиапазонПо умолчаниюОписание
Достоверность0.01-1.00.25Минимальный порог достоверности
IoU0.0-0.950.70Порог IoU для NMS
Размер изображения320, 640, 1280640Размерность изменения размера ввода (переключатель кнопки)

Автоматический перезапуск

Изменение любого параметра автоматически перезапускает вывод модели на текущем изображении с задержкой в 500 мс. Повторная загрузка не требуется.

Порог достоверности

Фильтрация предсказаний по достоверности:

  • Выше (0.5+): Меньше, более достоверных предсказаний
  • Ниже (0.1-0.25): Больше предсказаний, некоторый шум
  • По умолчанию (0.25): Сбалансировано для большинства сценариев использования

Порог IoU

Управление Non-Maximum Suppression:

  • Выше (0.7+): Разрешить больше перекрывающихся рамок
  • Ниже (0.3-0.5): Более агрессивно объединять близлежащие обнаружения
  • По умолчанию (0.70): Сбалансированное поведение NMS для большинства сценариев использования

Предсказание развертывания

Каждый запущенный выделенная конечная точка включает в себя Predict вкладка непосредственно на карточке развертывания. Это использует собственный сервис вывода развертывания, а не общий сервис прогнозирования, что позволяет тестировать развернутую конечную точку из браузера.

REST API

Доступ к выводу программным способом:

Аутентификация

Включите ваш ключ API в запросы:

Authorization: Bearer YOUR_API_KEY

Требуется ключ API

Чтобы запустить инференс из собственных скриптов, ноутбуков или приложений, включите ключ API. Сгенерируйте его в Settings (раздел API Keys на вкладке «Профиль»).

Конечная точка

POST https://platform.ultralytics.com/api/models/{modelId}/predict

Запрос

import requests

url = "https://platform.ultralytics.com/api/models/MODEL_ID/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
curl -X POST \
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  -F "conf=0.25" \
  -F "iou=0.7" \
  -F "imgsz=640"
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("conf", "0.25");
formData.append("iou", "0.7");
formData.append("imgsz", "640");

const response = await fetch(
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict",
  {
    method: "POST",
    headers: { Authorization: "Bearer YOUR_API_KEY" },
    body: formData,
  }
);

const result = await response.json();
console.log(result);

Платформа Ultralytics: Вкладка «Прогнозирование» — Примеры кода, вкладка python

Ответ

{
    "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,
        "model": "model.pt",
        "version": {
            "ultralytics": "8.x.x",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Платформа Ultralytics: Вкладка «Прогнозирование» — Представление JSON-ответа

Поля ответа

ПолеТипОписание
imagesмассивСписок обработанных изображений
images[].shapeмассивРазмеры изображений [высота, ширина]
images[].resultsмассивСписок detect
images[].results[].nameстрокаИмя класса
images[].results[].confidencefloatУверенность detect (0-1)
images[].results[].boxобъектКоординаты ограничивающей рамки
images[].speedобъектВремя обработки в миллисекундах
metadataобъектЗапросить метаданные и информацию о версии

Ответы, специфичные для задачи

Формат ответа зависит от задачи:

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "segments": [[100, 50], [150, 60], ...]
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "keypoints": [
    {"x": 200, "y": 75, "conf": 0.95},
    ...
  ]
}
{
  "results": [
    {"class": 0, "name": "cat", "confidence": 0.95},
    {"class": 1, "name": "dog", "confidence": 0.03}
  ]
}
{
  "class": 0,
  "name": "ship",
  "confidence": 0.89,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "obb": {"x1": 105, "y1": 48, "x2": 295, "y2": 55, "x3": 290, "y3": 395, "x4": 110, "y4": 402}
}

Оплата

Совместный вывод (вкладка «Прогноз» и /api/models/{id}/predict конечная точка) включены без дополнительной платы на всех планах. Плата за каждый запрос для совместного вывода не взимается.

Для производственных нагрузок, требующих более высокой пропускной способности, разверните выделенную конечную точку.

Ограничения скорости запросов

Совместный вывод ограничен до 20 запросов/мин на ключ API. При регулировании API возвращает 429 с Retry-After заголовок. См. полный Справка по лимиту запросов для всех категорий конечных точек.

Требуется большая пропускная способность?

Разверните выделенную конечную точку для неограниченного вывода без ограничений по скорости, с предсказуемой пропускной способностью и стабильными ответами с низкой задержкой. Для локального вывода см. руководство по режиму Predict.

Обработка ошибок

Типичные ответы об ошибках:

КодСообщениеРешение
400Недопустимое изображениеПроверьте формат файла
401Не авторизованоПроверьте ключ API
404Модель не найденаПроверьте ID модели.
429Ограничение скоростиПодождите и повторите попытку, или используйте выделенную конечную точку для неограниченной пропускной способности
500Ошибка сервераПовторить запрос

Часто задаваемые вопросы

Могу ли я выполнять инференс на видео?

Это зависит от метода инференса:

  • Выделенные конечные точки принимают видеофайлы напрямую. Поддерживаемые форматы (до 100 МБ): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Каждый кадр обрабатывается индивидуально, и результаты возвращаются для каждого кадра. Подробности см. в разделе выделенные конечные точки.
  • Общий инференс (/api/models/{id}/predict) принимает только изображения. Для видео извлекайте кадры локально, отправляйте каждый кадр как отдельный запрос и агрегируйте результаты.

Как получить аннотированное изображение?

API возвращает предсказания в формате JSON. Для визуализации:

  1. Используйте предсказания для локальной отрисовки ограничивающих рамок
  2. Используйте Ultralytics plot() метод:
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")

См. документацию по режиму Predict для получения полного API результатов и опций визуализации.

Каков максимальный размер изображения?

  • Лимит загрузки: 10 МБ
  • Recommended: <5MB for fast inference
  • Автоматическое изменение размера: Изображения изменяются до выбранного Image Size параметр

Большие изображения автоматически изменяются в размере с сохранением соотношения сторон.

Могу ли я выполнять пакетный инференс?

Текущий API обрабатывает одно изображение за запрос. Для пакетной обработки:

  1. Отправлять параллельные запросы
  2. Используйте выделенную конечную точку для повышения пропускной способности
  3. Рассмотрите локальный вывод для больших пакетов

Пакетный вывод с использованием python

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))


📅 Создано 2 месяцев назад ✏️ Обновлено 6 дней назад
glenn-jochert-hakobyansergiuwaxmannLaughing-q

Комментарии