Эта инструкция проведёт от пустой папки до собственной модели YOLO26: установим Ultralytics в отдельное Python-окружение, проверим запуск на тестовом изображении, подготовим датасет, обучим детектор, оценим метрики и экспортируем модель в ONNX. Команды подходят для Windows, macOS и Linux; мощная видеокарта желательна, но для проверки процесса не обязательна.
Актуально на 22 июня 2026 года. Примеры сверены с документацией YOLO26 и режимами Train, Val, Predict и Export. Интерфейс пакета может измениться — перед рабочим проектом фиксируйте версию зависимостей.
Что получится в конце
- изолированное Python-окружение с пакетом
ultralytics; - рабочий запуск YOLO26 на изображении;
- датасет с разметкой в формате YOLO и файлом
dataset.yaml; - веса
best.pt, выбранные по результату валидации; - предсказания на новых фото и видео;
- экспортированная ONNX-модель для дальнейшего развёртывания.

Какую версию и размер YOLO выбрать
Название YOLO используют разные исследовательские команды, поэтому номера версий не образуют одну непрерывную официальную линию. В этой инструкции используется Ultralytics YOLO26: официальный пакет предоставляет единый CLI и Python API для обучения, проверки, предсказания и экспорта. По данным проекта, YOLO26 по умолчанию выполняет end-to-end-детекцию без отдельного NMS и поддерживает размеры n, s, m, l и x.
| Модель | Когда выбирать | Практический совет |
|---|---|---|
yolo26n.pt | Первый эксперимент, CPU, edge-устройство | Начните с неё: быстрее обнаружите ошибки данных |
yolo26s.pt | Нужен следующий уровень точности при умеренных ресурсах | Сравнивайте с nano на одном test-наборе |
yolo26m.pt | Есть GPU и важнее качество, чем скорость | Контролируйте VRAM и задержку |
yolo26l.pt, yolo26x.pt | Серверный GPU, сложная задача, проведён базовый эксперимент | Не начинайте с них: цикл обучения и отладки дороже |
YOLO11 и YOLOv8 остаются разумным выбором для проектов с уже проверенным кодом и экспортом. Для нового учебного проекта начните с yolo26n.pt, а решение о переходе на более крупную модель принимайте по метрикам на собственном независимом test-наборе и скорости на целевом устройстве.
Что нужно перед установкой
- Python: используйте поддерживаемую пакетами версию Python и отдельное виртуальное окружение. Команда
python --versionдолжна выполняться без ошибки. - Диск: оставьте запас под Python-зависимости, веса, датасет и каталог
runs. Реальный объём зависит от числа и разрешения изображений. - GPU: NVIDIA CUDA заметно ускоряет обучение; Apple Silicon может использовать MPS. CPU подходит для проверки установки и небольшого эксперимента, но обучение обычно будет медленным.
- Данные: изображения должны законно использоваться в проекте и отражать реальные условия эксплуатации.
Шаг 1. Создайте папку и виртуальное окружение
Изоляция не даёт зависимостям YOLO конфликтовать с другими Python-проектами. На macOS или Linux откройте Terminal:
mkdir yolo-project
cd yolo-project
python3 -m venv .venv
source .venv/bin/activate
На Windows откройте PowerShell:
mkdir yolo-project
cd yolo-project
py -m venv .venv
.venv\Scripts\Activate.ps1
Если PowerShell запрещает запуск скрипта активации, не отключайте защиту для всей системы. Разрешите скрипты только для текущего процесса и повторите активацию:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.venv\Scripts\Activate.ps1
Шаг 2. Установите Ultralytics
Обновите pip, установите пакет из PyPI и выведите фактически установленную версию:
python -m pip install --upgrade pip
python -m pip install ultralytics
python -c "import ultralytics; print(ultralytics.__version__)"
yolo checks

yolo checks проверяет среду.Для Linux-сервера без графического интерфейса официальная инструкция предлагает headless-вариант, который не тянет GUI-зависимости OpenCV:
python -m pip install ultralytics-opencv-headless
Шаг 3. Проверьте CPU, CUDA или MPS
python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA:', torch.cuda.is_available()); print('MPS:', hasattr(torch.backends, 'mps') and torch.backends.mps.is_available())"
CUDA: True— PyTorch видит совместимый NVIDIA GPU;MPS: True— на совместимом Mac можно указатьdevice=mps;- оба значения
False— YOLO запустится на CPU, если явно не задано другое устройство.
Если CUDA не определяется, сначала выполните nvidia-smi. Ошибка на этом этапе обычно связана не с датасетом, а с драйвером, сборкой PyTorch или окружением.
Шаг 4. Запустите YOLO26 на тестовом изображении
Первый запуск автоматически загрузит предобученные веса. Эта проверка отделяет проблемы установки от будущих проблем разметки:
yolo detect predict model=yolo26n.pt \
source="https://ultralytics.com/images/bus.jpg" \
imgsz=640 conf=0.25 save=True
На Windows можно выполнить ту же команду одной строкой. Ultralytics сохраняет результаты в каталоге runs/detect/predict или в следующей папке с номером, если такой запуск уже был.
Шаг 5. Определите классы и соберите изображения
Запишите правило для каждого класса до разметки. Например, для контроля средств защиты: person, helmet, vest. Решите, размечать ли частично видимые каски, отражения, изображения на плакатах и объекты минимального размера. Если разметчики трактуют класс по-разному, увеличение числа изображений не исправит противоречивые метки.
- собирайте разные камеры, расстояния, времена суток, фоны и погоду;
- добавляйте сложные отрицательные примеры, где похожий объект есть, а целевого класса нет;
- не копируйте почти одинаковые кадры из одного видео во все выборки;
- сразу отделите независимый
test, который не используется при настройке модели.
Шаг 6. Разметьте данные в формате YOLO
Для детекции каждому изображению соответствует TXT-файл с тем же базовым именем. Одна строка описывает один объект:
class_id x_center y_center width height
Координаты центра, ширина и высота рамки нормализованы относительно размера изображения и лежат в диапазоне от 0 до 1. Нумерация классов начинается с нуля. Полный формат описан в документации Ultralytics по detection datasets.

001.jpg и разметка 001.txt должны находиться в соответствующих разделах и иметь одинаковое базовое имя.Шаг 7. Разделите датасет без утечки данных
Практический стартовый вариант — 70–80% изображений для train, 10–20% для val и оставшаяся часть для test. Это не универсальный закон: важнее независимость выборок. Кадры одной сцены, камеры или короткого видео распределяйте группами, иначе почти одинаковые изображения попадут и в обучение, и в проверку, а метрики окажутся завышенными.
Шаг 8. Создайте dataset.yaml
Создайте файл dataset.yaml в корне проекта:
path: ./dataset
train: images/train
val: images/val
test: images/test
names:
0: person
1: helmet
2: vest
Проверьте, что список names совпадает с идентификаторами в TXT-файлах. Если класса 2 в YAML нет, строка, начинающаяся с 2, некорректна.
Шаг 9. Запустите базовое обучение
Начните с предобученной nano-модели и стандартных параметров. Такой baseline быстрее покажет ошибки путей, классов и разметки:
yolo detect train model=yolo26n.pt data=dataset.yaml \
epochs=100 imgsz=640 patience=20 \
project=runs name=helmet-baseline
epochs=100— верхняя граница числа эпох, а не обещание, что нужны все 100;patience=20— ранняя остановка, если качество долго не улучшается;imgsz=640— размер входа; повышение увеличивает расход памяти и не гарантирует улучшение;projectиname— предсказуемое место для результатов.
Ultralytics автоматически использует доступный GPU или CPU. Явный выбор устройства:
# NVIDIA GPU 0
yolo detect train model=yolo26n.pt data=dataset.yaml epochs=100 device=0
# Apple Silicon
yolo detect train model=yolo26n.pt data=dataset.yaml epochs=100 device=mps
# Только CPU
yolo detect train model=yolo26n.pt data=dataset.yaml epochs=30 device=cpu

Шаг 10. Продолжите прерванное обучение
Не запускайте новый эксперимент поверх старого. Для продолжения используйте сохранённый last.pt и параметр resume:
yolo detect train resume \
model=runs/helmet-baseline/weights/last.pt
Шаг 11. Проверьте best.pt на валидации
yolo detect val \
model=runs/helmet-baseline/weights/best.pt \
data=dataset.yaml plots=True
| Метрика | Что показывает | Что проверить при низком значении |
|---|---|---|
| Precision | Как часто обнаружение модели верно | Ложные срабатывания, похожий фон, неверные рамки |
| Recall | Какую долю реальных объектов модель находит | Пропущенная разметка, малые и закрытые объекты |
| mAP50 | Средняя точность при менее строгом пороге IoU | Общее распознавание классов |
| mAP50–95 | Более строгая оценка качества рамок на наборе порогов | Точность границ и согласованность разметки |
Откройте confusion_matrix.png, results.png и примеры предсказаний в каталоге запуска. Общая mAP может скрывать провал редкого, но важного класса, поэтому смотрите показатели по каждому классу и вручную разбирайте ложные срабатывания и пропуски.
Шаг 12. Запустите модель на своих фото и видео
# Одно изображение
yolo detect predict model=runs/helmet-baseline/weights/best.pt \
source="test-images/frame.jpg" conf=0.25 save=True
# Видео
yolo detect predict model=runs/helmet-baseline/weights/best.pt \
source="test-video.mp4" conf=0.25 save=True
# Веб-камера 0
yolo detect predict model=runs/helmet-baseline/weights/best.pt \
source=0 show=True
Порог conf выбирайте по цене ошибки. Повышение порога уменьшает часть ложных срабатываний, но может увеличить число пропусков. Подбирайте его на отдельной выборке, а не на одном удачном кадре.
Шаг 13. Используйте модель через Python
from ultralytics import YOLO
model = YOLO("runs/helmet-baseline/weights/best.pt")
results = model.predict(
source="test-images/frame.jpg",
conf=0.25,
save=True,
)
for result in results:
print(result.boxes.xyxy)
print(result.boxes.conf)
print(result.boxes.cls)
Шаг 14. Экспортируйте YOLO в ONNX
yolo export \
model=runs/helmet-baseline/weights/best.pt \
format=onnx imgsz=640 simplify=True
ONNX удобен как переносимый базовый формат. Для NVIDIA часто используют TensorRT, для Intel — OpenVINO, для Apple — Core ML. Экспорт не завершает проверку: сравните предсказания экспортированной модели с best.pt и измерьте задержку на том устройстве, где система действительно будет работать.
yolo benchmark \
model=runs/helmet-baseline/weights/best.pt \
data=dataset.yaml imgsz=640 device=0
Частые ошибки и рабочие решения
FileNotFoundError или dataset images not found
Проверьте, откуда запускается команда, значение path в dataset.yaml и регистр букв в именах папок. На Linux Images и images — разные пути.
CUDA out of memory
Сначала уменьшите batch, затем imgsz или размер модели. Закройте процессы, занявшие VRAM, и проверьте их через nvidia-smi. Не меняйте сразу все параметры — иначе не узнаете причину.
yolo detect train model=yolo26n.pt data=dataset.yaml \
epochs=100 imgsz=640 batch=4 device=0
Модель ничего не находит
Временно снизьте conf и посмотрите сырые предсказания. Затем проверьте порядок классов, координаты разметки, пропущенные объекты и отличие новых кадров от обучающих. Низкий порог — инструмент диагностики, а не автоматическое решение.
Высокая mAP, но плохая работа в реальности
Чаще всего это утечка между train и val, однообразные данные или domain shift. Сформируйте test-набор из другой камеры, дня, помещения или партии продукции и не используйте его для подбора параметров.
Команда yolo не найдена
Активируйте окружение и проверьте python -m pip show ultralytics. Если CLI всё ещё недоступен, убедитесь, что python и pip относятся к одному окружению.
Лицензия: что учесть до коммерческого запуска
Репозиторий и модели Ultralytics доступны по AGPL-3.0 и отдельной Enterprise-лицензии. «Открытый исходный код» не означает отсутствие обязательств. До включения модели в закрытый продукт проверьте условия конкретного репозитория, весов и способа распространения; юридически значимое решение лучше согласовать со специалистом по лицензиям.
FAQ
Можно ли обучить YOLO без видеокарты?
Да. CPU подходит для проверки конвейера и небольшого эксперимента, но обучение обычно идёт значительно дольше. Для серьёзного датасета практичнее совместимый GPU или облачная среда.
Сколько изображений нужно?
Универсального числа нет. Сложность классов, разнообразие условий и качество разметки важнее голого объёма. Начните с небольшого, но разнообразного набора, обучите baseline и собирайте данные именно для найденных ошибок.
Почему используется best.pt, а не last.pt?
best.pt соответствует лучшему результату по критерию валидации в ходе запуска, а last.pt хранит состояние последней эпохи и нужен прежде всего для продолжения обучения.
YOLOv8, YOLO11 или YOLO26?
Для существующего продукта сохраняйте проверенную версию, пока новый вариант не прошёл тесты экспорта, скорости и качества. Для нового проекта YOLO26 — актуальная линия Ultralytics на дату статьи; YOLO11 и YOLOv8 полезны, если нужная интеграция уже отлажена именно с ними.
Как понять, что модель готова к эксплуатации?
Она должна пройти независимый test-набор, проверку по каждому классу, тесты на сложных и отрицательных примерах, измерение полной задержки и проверку на целевом устройстве. Одна высокая mAP на val этого не доказывает.
Вывод
Рабочий путь к собственной YOLO-модели начинается не с большой архитектуры, а с воспроизводимого baseline. Установите Ultralytics в отдельное окружение, проверьте yolo26n.pt, аккуратно разделите данные, обучите модель, изучите ошибки и только затем меняйте размер сети или гиперпараметры. Так каждый эксперимент отвечает на конкретный вопрос, а итоговую модель можно объективно сравнить и безопаснее перенести в производство.
Обложка создана с помощью генеративной модели. Пошаговые изображения — обезличенные демонстрационные экраны и схемы; они не содержат реальных аккаунтов, ключей, паролей или домашних каталогов.

Комментарии к статье