Автор: команда Кубит · Обновлено: май 2026

YOLO на GPU: как обучить модель распознавания объектов и что получится на выходе

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

YOLOComputer VisionGPU

Что решает YOLO

YOLO нужен не для «нейросети вообще», а для конкретной задачи: найти объекты на изображении и обвести их рамками. Например: люди на камере, машины на парковке, каски на сотрудниках, дефекты на товаре, оборудование в стойке, коробки на складе.

На выходе модель даёт список объектов: класс, вероятность и координаты прямоугольника.

Что понадобится

КомпонентМинимумНормальноКомментарий
GPURTX 3060 12GBRTX 4090 / A5000 / A100Для тестов хватит 12–24 GB, для больших датасетов лучше больше VRAM.
CPU8 ядер16–32 ядраCPU готовит картинки, GPU обучает модель.
RAM32 GB64–128 GBВажно при большом датасете и кэше.
ДискSSDNVMeМного мелких файлов, HDD будет тормозить.

Шаг 1. Установка окружения

sudo apt update
sudo apt install -y python3 python3-venv python3-pip git
mkdir -p /opt/yolo-demo
cd /opt/yolo-demo
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install ultralytics

Проверяем установку:

yolo checks
nvidia-smi
Если nvidia-smi не видит видеокарту, обучение пойдёт на CPU. Для реальной задачи это почти всегда слишком медленно.

Шаг 2. Быстрый тест без обучения

yolo detect predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'

После запуска появится папка:

runs/detect/predict/

Внутри будет изображение с нарисованными рамками. Это результат инференса.

Шаг 3. Структура датасета

datasets/cameras/
├── images/
│   ├── train/img001.jpg
│   └── val/img101.jpg
└── labels/
    ├── train/img001.txt
    └── val/img101.txt

Файл img001.txt:

0 0.512 0.433 0.210 0.380
1 0.240 0.620 0.130 0.200
ПолеЗначение
0ID класса.
0.512X-центр рамки, доля от ширины.
0.433Y-центр рамки, доля от высоты.
0.210Ширина рамки.
0.380Высота рамки.

Шаг 4. data.yaml

path: /opt/yolo-demo/datasets/cameras
train: images/train
val: images/val

names:
  0: person
  1: helmet
Самая частая ошибка: пути в data.yaml не совпадают с реальными папками. Тогда YOLO не видит картинки или labels.

Шаг 5. Запуск обучения

cd /opt/yolo-demo
source venv/bin/activate

yolo detect train \
  model=yolo11n.pt \
  data=datasets/cameras/data.yaml \
  imgsz=640 \
  epochs=50 \
  batch=16 \
  device=0 \
  project=runs/cameras \
  name=helmet-test
ПараметрЗачем
modelПредобученная стартовая модель.
dataОписание датасета.
imgszРазмер входной картинки. Больше — точнее, но медленнее.
epochsКоличество эпох.
batchСколько картинок за раз. Упрётся в VRAM.
deviceНомер GPU.

Шаг 6. Что будет на выходе

Появится папка:

runs/cameras/helmet-test/
ФайлЧто это
weights/best.ptЛучшая модель. Обычно её используют.
weights/last.ptМодель на последней эпохе.
results.pngГрафики loss, precision, recall, mAP.
confusion_matrix.pngГде модель путает классы.
val_batch*_pred.jpgПримеры предсказаний.

Шаг 7. Валидация

yolo detect val \
  model=runs/cameras/helmet-test/weights/best.pt \
  data=datasets/cameras/data.yaml \
  imgsz=640 \
  device=0
МетрикаКак читать
PrecisionСколько найденных объектов правильные.
RecallСколько реальных объектов модель нашла.
mAP50Качество при мягком пороге совпадения.
mAP50-95Более строгая метрика.

Шаг 8. Инференс на своих файлах

Фото:

yolo detect predict \
  model=runs/cameras/helmet-test/weights/best.pt \
  source=/opt/test/photo.jpg \
  conf=0.35 \
  save=True

Видео:

yolo detect predict \
  model=runs/cameras/helmet-test/weights/best.pt \
  source=/opt/test/video.mp4 \
  conf=0.35 \
  save=True

Результат снова будет в runs/detect/predict/.

Шаг 9. Экспорт

yolo export model=runs/cameras/helmet-test/weights/best.pt format=onnx imgsz=640
yolo export model=runs/cameras/helmet-test/weights/best.pt format=engine imgsz=640 device=0

Минимальный Python-пример

from ultralytics import YOLO
model = YOLO("runs/cameras/helmet-test/weights/best.pt")
results = model("/opt/test/photo.jpg", conf=0.35)
for r in results:
    print(r.boxes.xyxy)   # координаты
    print(r.boxes.conf)   # уверенность
    print(r.boxes.cls)    # класс
    r.save(filename="/opt/test/result.jpg")

Типовые ошибки

Итог

YOLO-проект — это не «поставить нейросеть». Нормальный процесс: собрать реальные фото, разметить, обучить, проверить на настоящем видео, исправить разметку, переобучить и только потом внедрять.

Нужна конфигурация под вашу задачу?

Опишите модель, датасет, требуемую скорость и бюджет. Подберём GPU-сервер без лишнего железа.

Оставить заявку