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

Инференс

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.4.14",
            "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}
}

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

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

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

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

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

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

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

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

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

API принимает отдельные кадры. Для видео:

  1. Извлекать кадры локально
  2. Отправлять каждый кадр в API
  3. Агрегировать результаты

Для видео в реальном времени рассмотрите возможность развертывания выделенной конечной точки.

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

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 месяцев назад ✏️ Обновлено 25 дней назад
glenn-jochersergiuwaxmannLaughing-q

Комментарии