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

Инференс

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

Вкладка «Прогнозирование модели» Ultralytics с наложением обнаружений

Вкладка «Прогноз»

Каждая модель включает в себя 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 Predict Tab: результаты с обнаружениями и статистикой скорости

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

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

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

Настройте поведение обнаружения с помощью параметров в сворачиваемом разделе «Параметры »:

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» на вкладке «Профиль»).

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

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 заголовок. См. полный текст ссылка на ограничение скорости для всех категорий конечных точек.

Нужна большая пропускная способность?

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

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

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

КодСообщениеРешение
400Недопустимое изображениеПроверьте формат файла
401Не авторизованоПроверьте ключ API
404Модель не найденаПроверить идентификатор модели
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")

См. документацию по режиму прогнозирования для получения полных результатов 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))


📅 Создано 1 месяц назад ✏️ Обновлено 5 дней назад
glenn-jochersergiuwaxmannLaughing-q

Комментарии