Ultralytics YOLO27:

Вывод#

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

Вкладка Predict Ultralytics Platform с наложением результатов детектирования

Вкладка Predict#

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

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

Для моделей без весов вместо этого отображается пустое состояние — сначала обучи модель или загрузи веса.

Зона загрузки изображения на вкладке Predict Ultralytics Platform

Способы ввода#

Панель 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
  • Максимальный размер: 10 МБ
  • Автоматический инференс: результаты появляются автоматически после загрузки
Автоматический инференс

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

Изменение размера на стороне клиента

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

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

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

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

Для моделей OBB вместо этого отображаются аэрофотоснимки лодок и аэропорта.

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

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

Веб-камера#

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

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

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

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

Результаты вкладки прогнозирования платформы Ultralytics с обнаружениями и статистикой скорости

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

ПолеОписание
Сводка результатовСписок обнаружений или 5 наиболее вероятных классов для моделей классификации и семантических моделей
Показатели скоростиПредобработка, инференс, постобработка и сеть (мс)
ВерсииВерсии Ultralytics и PyTorch, а также диапазон глубины или размер маски, если применимо
Ответ JSONИсходный ответ API в блоке кода, без данных карты в формате base64

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

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

Настрой поведение инференса с помощью трёх ползунков под изображением:

Ползунки параметров на вкладке Predict Ultralytics Platform

ПараметрДиапазонПо умолчаниюОписание
Confidence0.01 – 1.0, шаг 0.010.25Минимальный порог уверенности
IoU0.0 – 0.95, шаг 0.010.7Порог IoU для NMS
Image Size32 – 1280, шаг 32640Размер изменения входного изображения
Автоматический повторный запуск

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

Порог уверенности#

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

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

Порог IoU#

Управляй подавлением немаксимумов:

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

Predict для развёртывания#

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

На платном эндпоинте с включенным мониторингом обработанные изображения также попадают на вкладку «Мониторинг». Выборочные примеры и сводные графики на вкладке «Мониторинг» — это легкие временные данные, хранящиеся в памяти; остановка, перезапуск, повторный деплой, изменение размера или замена модели могут их стереть. Сохрани примеры в датасет, чтобы их не потерять.

API выделенной конечной точки#

Карточка API Docs на вкладке модели Predict содержит примеры запросов на Python, JavaScript и cURL, предварительно заполненные текущими значениями уверенности, IoU и размера изображения, заданными ползунками. URL и ключ являются заполнителями до развёртывания модели — кнопка Deploy рядом с вкладками кода переходит на вкладку модели Deploy. После развёртывания вкладка Code карточки развёртывания заполняется URL этой конечной точки и, для владельцев рабочего пространства, привязанным API-ключом, готовым к копированию и запуску.

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

Добавляй свой API-ключ в запросы:

Authorization: Bearer YOUR_API_KEY
Требуется API-ключ

Чтобы запускать инференс из собственных скриптов, ноутбуков или приложений, добавь API-ключ. Создай его в Settings > API Keys. Выделенная конечная точка принимает только единственный ключ, с которым она была создана; общий API модели принимает любой активный ключ в рабочем пространстве, а публичные модели также принимают анонимные запросы.

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

Выделенные конечные точки принимают запросы по собственному URL:

POST https://YOUR_DEPLOYMENT_URL.run.app/predict

Общий инференс использует API Platform с полным путём к модели:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

Обе конечные точки принимают одинаковое тело multipart/form-data и возвращают ответы одинаковой структуры. При использовании Python SDK укажи client.models.predict(owner, project, model, body=...) для общего инференса или client.deployments.predict(owner, deployment, body=...) для выделенного развёртывания:

from ultralytics_platform import Platform

client = Platform()  # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
    results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})

Запрос#

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

Примеры кода на вкладке Python вкладки Predict Ultralytics Platform

Параметры запроса#

ПараметрТипПо умолчаниюДиапазонОписание
filefile--Файл изображения или видео (обязателен, если не задан source)
conffloat0.250.01 – 1.0Минимальный порог уверенности
ioufloat0.70.0 – 0.95Порог IoU для NMS
imgszint64032 – 1280Размер входного изображения в пикселях
normalizeboolfalse-Возвращать координаты ограничивающих рамок в диапазоне 0 – 1
decimalsint50 – 10Точность координатных значений после запятой
bitsint88, 12, 16Квантизация карты глубины, только для моделей глубины
sourcestring--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,
        "functionTimeAlive": 1284.51,
        "functionTimeCall": 0.018,
        "task": "detect",
        "version": {
            "ultralytics": "8.x.x",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Просмотр ответа JSON на вкладке Predict Ultralytics Platform

Поля ответа#

ПолеТипОписание
imagesмассивСписок обработанных изображений: для видео — по одной записи на каждый кадр
images[].shapeмассивРазмеры изображения [высота, ширина]
images[].resultsмассивСписок обнаруженных объектов
images[].results[].classintИндекс класса (целочисленный идентификатор)
images[].results[].namestringНазвание класса
images[].results[].confidencefloatУверенность обнаружения (0–1)
images[].results[].boxобъектКоординаты ограничивающей рамки
images[].semantic_maskобъектПиксельная карта классов (только для семантических моделей)
images[].depthобъектПиксельная карта глубины (только для моделей глубины)
images[].speedобъектВремя обработки в миллисекундах
metadataобъектКоличество изображений, время работы сервисов, задачи и версии Ultralytics/PyTorch

Ответы для конкретных задач#

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

{
  "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. При временном достижении предельной нагрузки конечная точка по-прежнему снижает нагрузку, возвращая 429 и заголовок Retry-After. Для локального инференса больших объёмов см. руководство по режиму Predict.

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

Распространённые ответы с ошибками:

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

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

  • Оба метода инференса принимают видеофайлы:

    • Выделенные конечные точки принимают видеофайлы напрямую. Поддерживаемые форматы (до 100 МБ): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Каждый кадр обрабатывается отдельно, а результаты возвращаются для каждого кадра. Подробнее см. в разделе выделенные конечные точки.
    • Общий инференс (POST /api/models/{owner}/{project}/{model}/predict) использует тот же сервис Predict и принимает те же форматы видео. В браузере на вкладке Predict можно выбирать только изображения, поэтому для видео используй API или выделенную конечную точку.
  • На вкладке Predict кнопка скачивания над областью предпросмотра сохраняет текущий результат как JPEG с аннотациями. Сам API возвращает предсказания в формате JSON. Чтобы визуализировать их:

    1. Используй предсказания для локальной отрисовки рамок
    2. Используй метод plot() Ultralytics:
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("image.jpg")
    results[0].save("annotated.jpg")

    Полное описание API результатов и возможностей визуализации см. в документации по режиму Predict.

    • Ограничение вкладки Predict: 10 МБ
    • Ограничение API: 100 МБ для общего инференса и выделенных конечных точек
    • Автоматическое изменение размера на вкладке Predict: перед загрузкой изображения изменяются до выбранного Image Size

    Большие изображения автоматически изменяются в размере в браузере с сохранением соотношения сторон. Отправленные тобой запросы не изменяются в размере, поэтому изображения, превышающие ограничение, отклоняются с ошибкой 413.

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

    1. Отправляй отдельные запросы для каждого изображения
    2. При необходимости распределяй запросы между выделенными конечными точками
    3. Используй локальный инференс для больших пакетов
    Пакетный инференс с Python
    import concurrent.futures
    
    import requests
    
    url = "https://YOUR_DEPLOYMENT_URL.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))

Комментарии