Ultralytics YOLO27:

Инференс#

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

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

Вкладка Predict#

Для каждой модели с весами доступна вкладка Predict для инференса в браузере:

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

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

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

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

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

МетодОписание
Загрузка изображенияПеретащи изображение или нажми, чтобы загрузить его
Примеры изображенийНажми на встроенные примеры (изображения из датасета или примеры по умолчанию)
Съёмка с веб-камерыПрямая трансляция с камеры с захватом отдельных кадров
IP-камераПоток RTSP или RTSPS в собственном развертывании

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

Перетащи изображение или нажми, чтобы загрузить:

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

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

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

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

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

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

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

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

Предварительно загруженные изображения

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

Веб-камера#

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

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

На вкладке Predict собственного развертывания веб-камера вместо этого непрерывно выполняет инференс. См. раздел Инференс с камеры в реальном времени.

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

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

Результаты на вкладке Predict в Ultralytics Platform: обнаруженные объекты и статистика скорости

На панели результатов отображаются:

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

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

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

Настрой поведение инференса с помощью трёх ползунков под изображением (для моделей оценки глубины отображается только Размер изображения):

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

ПараметрДиапазонПо умолчаниюОписание
УверенностьОт 0.01 до 1.0, шаг 0.010.25Минимальный порог уверенности
IoUОт 0.0 до 0.95, шаг 0.010.7Порог IoU для NMS
Размер изображенияОт 32 до 1280, шаг 32640Размер входного изображения после изменения размера
Автоматический повторный запуск

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

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

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

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

Порог IoU#

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

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

Инференс в развернутой модели#

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

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

Инференс с камеры в реальном времени#

На вкладке Predict принадлежащего тебе развертывания выбери Веб-камера или IP-камера, чтобы запустить конечную точку для обработки видео в реальном времени:

ИсточникКак это работает
Веб-камераБраузер по очереди отправляет кадры на конечную точку и отображает результаты поверх трансляции в реальном времени
IP-камераВведи URL rtsp:// или rtsps://, включая учетные данные, и нажми Подключиться; конечная точка считывает изображение с камеры и передает каждый результат обратно

Инференс в реальном времени использует API-ключ, привязанный к конечной точке; загрузить его может только владелец рабочего пространства. Для остальных участников команды веб-камера делает снимки отдельных кадров, а IP-камера недоступна, как и на вкладке Predict модели. IP-камера должна быть доступна из интернета: конечная точка отклоняет адреса локальной сети, например 192.168.x.x. Каждый результат относится к самому новому кадру, поэтому кадры пропускаются, если инференс отстает. Изменения ползунков применяются к следующему кадру веб-камеры и перезапускают поток IP-камеры. Инференс в реальном времени приостанавливается, когда вкладка браузера скрыта. Нажми на окно предпросмотра, чтобы захватить кадр, или нажми Отключиться, чтобы прекратить просмотр IP-камеры.

Камера в фоновом режиме#

Конечная точка с пользовательскими настройками CPU и памяти может продолжать следить за одной IP-камерой, даже если ты отключишься или закроешь страницу. Когда подключенная камера начнет показывать результаты, включи Продолжать работу в фоновом режиме. В заголовке развертывания появится Камера включена, а результаты будут поступать на вкладку «Мониторинг» в виде временных примеров и статистики предсказаний.

  • Настройки: Фоновая камера всегда использует значения уверенности по умолчанию (0.25), IoU (0.7) и размер изображения модели при обучении; ползунки на нее не влияют.
  • Стоимость: Камера работает на активном экземпляре конечной точки без дополнительной платы; почасовая плата за время работы взимается независимо от того, включена камера или нет.
  • Изменения: При включении или выключении камеры, а также при переключении на другую камеру экземпляр конечной точки перезапускается. Конечная точка остается готовой к работе, но временные данные мониторинга очищаются.
  • Остановка: Выключи переключатель. Отключение или закрытие страницы не останавливает камеру, а изменение размера конечной точки на размер по умолчанию удаляет ее. Если камера отключится, конечная точка продолжит попытки подключения.
  • Жизненный цикл конечной точки: Остановка конечной точки останавливает камеру и начисление платы; после повторного запуска сохраненная камера включается снова.

Конечные точки стандартного размера поддерживают инференс с веб-камеры и IP-камеры в реальном времени, но не фоновый режим. Чтобы сохранить фоновую камеру через API, используй действие развертывания camera.

Потоковая передача результатов через API#

Отправь URL RTSP или RTSPS в качестве source с заголовком Accept: text/event-stream на URL выделенной конечной точки, чтобы получать результаты в виде событий, отправляемых сервером:

curl -N -X POST \
  "https://YOUR_DEPLOYMENT_URL.run.app/predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: text/event-stream" \
  -F "source=rtsp://user:password@camera.example.com:554/stream" \
  -F "conf=0.25"

Событие каждого кадра содержит images в формате ответа с нормализованными координатами (0–1), URL данных JPEG preview кадра и metadata с задачей и названиями классов. Применяются только conf, iou и imgsz, а потоковая передача с URL фоновой камеры конечной точки использует настройки по умолчанию. События, содержащие только status, не содержат кадра, а событие с сообщением error (не удалось считать изображение с камеры или конечная точка не может запустить модель) завершает поток. Поток также закрывается при перезапуске конечной точки или по истечении времени ожидания запроса, поэтому при завершении без ошибки подключайся снова, используя экспоненциальную задержку. Маршрут предсказаний для развертывания в Platform API и SDK не поддерживают потоковую передачу; отправляй запросы с камеры на URL конечной точки с привязанным к ней API-ключом. Запрос с камеры source без заголовка возвращает 400.

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

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

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

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

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

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

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

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

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

Для общего инференса используется API платформы с полным путём к модели:

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=...). Оба метода SDK вызывают API платформы, поэтому на них распространяются ограничения частоты запросов и размера запроса. Чтобы обойти эти ограничения, отправляй запросы напрямую на URL выделенной конечной точки, как описано в разделе Запрос. Пример общего инференса:

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

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

ПараметрТипПо умолчаниюДиапазонОписание
fileфайл--Файл изображения или видео (обязателен, если не задан source)
conffloat0.250.01 – 1.0Минимальный порог уверенности
ioufloat0.70.0 – 0.95Порог IoU для NMS
imgszint-32 – 1280Размер входного изображения в пикселях; по умолчанию используется размер при обучении модели (640, если он недоступен)
normalizeboolfalse-Возвращать координаты рамок в диапазоне от 0 до 1
decimalsint50 – 10Точность десятичного представления координат
vid_strideint1≥ 1Обрабатывать каждый N-й кадр видео; для изображений параметр игнорируется
bitsint88, 12, 16Квантование карты глубины; только для моделей оценки глубины
sourceстрока--URL изображения или строка в формате base64 (альтернатива file); максимум 4 096 символов при использовании API платформы

Ответ#

{
    "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,
        "classNames": ["person", "bicycle", "car", "..."],
        "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

Поля ответа#

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

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

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

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}

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

Для общего API модели действует ограничение 20 запросов в минуту на каждый ключ API, авторизованного пользователя или анонимный IP-адрес. Для маршрута предсказаний развертывания платформы (POST /api/deployments/{owner}/{deployment}/predict) действует такое же ограничение. При превышении лимита API возвращает 429 с заголовком Retry-After. Полный список категорий конечных точек смотри в справке по ограничениям частоты запросов.

Нужно больше пропускной способности?

Запросы, отправленные напрямую на выделенную конечную точку, не проходят через ограничитель частоты запросов API платформы. Если конечная точка временно достигнет предельной нагрузки, она всё равно будет отклонять запросы и возвращать 429 с заголовком Retry-After. Для локального инференса с высокой нагрузкой смотри руководство по режиму Predict.

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

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

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

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

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

    • Выделенные конечные точки принимают видеофайлы напрямую. Поддерживаемые форматы (до 32 МБ на запрос): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Результаты возвращаются для каждого обработанного кадра; запрос может выполняться до 1 часа. Подробности смотри в разделе выделенные конечные точки.
    • Общий инференс (POST /api/models/{owner}/{project}/{model}/predict) использует ту же службу предсказаний и принимает те же видеоформаты, но размер запросов ограничен примерно 4,5 МБ, а время ожидания составляет около 30 секунд, поэтому этот вариант подходит только для коротких роликов. Вкладка Предсказание в браузере загружает только изображения, поэтому для видеофайлов используй выделенную конечную точку, а для веб-камеры или IP-камеры — инференс с камеры в реальном времени.

    Модели глубины не принимают видеофайлы.

  • На вкладке Predict нажми кнопку загрузки над окном предпросмотра, чтобы сохранить текущий результат в формате JPEG с аннотациями. Сам API возвращает предсказания в формате JSON. Чтобы визуализировать их:

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

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

    • Ограничение вкладки Predict: 10 МБ
    • Ограничение общего API инференса: около 4,5 МБ на запрос, в том числе при использовании Python SDK
    • Ограничение выделенной конечной точки: 32 МБ на запрос, отправляемый напрямую на URL конечной точки
    • Автоматическое изменение размера во вкладке 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))

Комментарии