Ultralytics YOLO27: Встать в лист ожидания.
Get Started
Основы компьютерного зрения·Изучи метрики·Урок 10/10
Урокначинающий

От лаборатории к продакшену

Установи Ultralytics, запусти YOLO26 на собственных изображениях, проверь результаты на соответствие спецификации и выбери следующий шаг.

Десять минут с предобученной моделью помогут ответить на вопрос, от которого зависит весь план: подходит ли готовая модель для твоих классов и камеры или нужны собственные данные? Здесь ты установишь Ultralytics, запустишь YOLO26 на реальных изображениях и сверишь результат со спецификацией, которую составил в первом уроке.

Результат

Запусти YOLO26 на собственных изображениях и по результатам реши, прототипировать ли с предобученными весами или создать набор данных.

Ускоренное прохождение
Если ты уже освоился, вот краткая версия.
  1. Установи: pip install ultralytics, затем yolo checks.

  2. Выполни предсказание: yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg.

  3. Проверь: какие классы из твоей спецификации есть среди предобученных и правильно ли расположены рамки на твоих изображениях?

  4. Выбери следующий курс в зависимости от ответа.

Практические занятия

Установка#

pip install ultralytics
yolo checks

Первая команда устанавливает пакет Python ultralytics и команду yolo, а также PyTorch, если он ещё не установлен. Команда yolo checks выводит версии Python, PyTorch и CUDA, а также оборудование, которое будет использовать Ultralytics, чтобы ты мог проверить настройку до запуска. Используй новое виртуальное окружение; в кратком руководстве описана настройка conda, Docker и GPU.

Версия Python

Пакет ultralytics устанавливается на Python 3.8 и новее, но для актуальных выпусков PyTorch нужен Python 3.10 или новее. Если у тебя более старая версия среды, сначала создай новое виртуальное окружение с актуальной версией Python.

Окно выбора PyTorch Start Locally с параметрами Stable, Mac, Pip, Python и Default, в котором показана команда установки через pip3 для torch, torchvision и torchaudio

GPU, который не используется

Симптом: yolo checks показывает CPU на компьютере с GPU NVIDIA, и инференс работает медленно. Причина: сборка PyTorch только для CPU — например, стандартный wheel pip для Windows. Решение: выбери свою ОС, менеджер пакетов и версию CUDA в селекторе PyTorch выше, выполни предложенную команду, затем переустанови ultralytics. На Mac, как на скриншоте, подходит сборка по умолчанию; Ultralytics использует CPU, если не передать device=mps для работы с GPU Apple.

Первое предсказание#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # при первом использовании загружает нано-модель размером около 5 МБ
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

Обе команды выводят краткую сводку для каждого изображения и сохраняют изображение с аннотациями в runs/detect/predict:

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

Разберём вывод по строкам: изображение уменьшено до 640×480 для инференса; модель нашла четырёх людей и автобус; инференс занял около 20 мс на процессоре ноутбука. Строка Speed — твоя первая проверка задержки: сравни её с частотой кадров, указанной во входных данных спецификации. Открой сохранённое изображение: у каждой рамки есть класс, координаты и оценка уверенности, как в уроке по детекции.

Сверь результаты со спецификацией#

ВопросЕсли даЕсли нет
Есть ли нужные классы среди 80 классов COCO, известных модели?Создай прототип без обученияТебе нужны размеченные данные и дообучение (руководство по дообучению)
На твоих изображениях рамки с оценкой выше порога точно указывают на нужные объекты?Задача и ракурс совпадаютВозможен сдвиг домена: собери данные с собственных камер
Соответствует ли тип выходных данных тому, что требуется для принятия решения?Оставь эту задачуСмени веса: -seg, -sem, -depth, -pose, -obb или -cls
Достаточно ли быстро модель работает на целевом оборудовании для заданной частоты кадров?ПродолжайПопробуй модель меньшего размера или оптимизированный формат экспорта

На первый вопрос есть точный ответ: model.names перечисляет все классы, известные предобученной модели. В спецификации для погрузчика person — это класс COCO, а forklift — нет, поэтому никакой порог не заставит предобученную модель находить погрузчик. Именно такой результат чаще всего получают при первом запуске: модель покрывает лишь часть спецификации. Правильный шаг — создать прототип логики принятия решений для доступных классов, пока ты собираешь набор данных для остальных.

Что меняется в продакшене#

Развёрнутая модель сталкивается с условиями, которых не было в её обучающем наборе: новые камеры, сезоны, продукты, форма. Без переобучения точность снижается; регулярное переобучение на данных, полученных в продакшене, помогает её восстановить:

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

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

Что изучать дальше#

КурсПроходи, если
Создание высокопроизводительных наборов данных YOLOТвои классы отсутствуют в предобученной модели или твои сцены отличаются от COCO
Обучи свою первую модель YOLOУ тебя есть размеченный набор данных, и ты хочешь выполнить дообучение
Ultralytics YOLO в продакшенеУ тебя есть модель, и тебе нужны экспорт, трекинг и мониторинг
Разработка с помощью Ultralytics PlatformТы хочешь работать с данными, разметкой, обучением и развёртыванием на одной платформе

Предпочитаешь работать в браузере? Ultralytics Platform поддерживает тот же цикл — загрузка, аннотирование, обучение, развёртывание — без локальной установки:

Попробовать

Отредактируй скрипт решения: укажи классы из спецификации в spec_classes, а пути к собственным изображениям — в sources. Затем запусти скрипт и открой сохранённые результаты. Составь таблицу со столбцами «Изображение», «Обнаруженные классы», «Соответствует спецификации (да или нет)» и заверши её одним предложением, где выбери следующий шаг и курс, который поможет его выполнить.

Коммит
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
Критерии готовности
Урок считается завершённым, если выполнены все условия ниже.
  • Ты запустил YOLO26 как минимум на трёх собственных изображениях и открыл сохранённые результаты.

  • Ты знаешь, какие классы из спецификации есть среди предобученных, а для каких нужны собственные данные.

  • У тебя есть одно предложение, в котором названы следующий шаг и курс, который ты пройдёшь.

Показать решение
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

Для спецификации по погрузчикам: person распознаётся, а forklift — нет. Следующий шаг: прямо сейчас создай прототип правила для зоны на людях с предобученной моделью и начни курс «Создание высокопроизводительных наборов данных YOLO», чтобы собрать и разметить изображения погрузчиков с камер склада.

Что дальше

Курс завершён — пройди итоговый тест, чтобы получить сертификат, а затем продолжи курсом «Создание высокопроизводительных наборов данных YOLO», чтобы превратить спецификацию в набор данных, готовый для обучения.

Войди, чтобы сохранять прогресс