118 lines
5.8 KiB
Markdown
118 lines
5.8 KiB
Markdown
# YOLO Train WebUI
|
||
|
||
Локальный веб-интерфейс для обучения моделей Ultralytics YOLO с журналом,
|
||
графиками метрик, мягкой остановкой и интеграцией MLflow.
|
||
|
||
## Возможности
|
||
|
||
- задачи `detect`, `segment`, `classify`, `pose` и `obb`;
|
||
- локальные датасеты и официальные имена моделей Ultralytics;
|
||
- настройка эпох, размера изображения, batch, устройства, workers и patience;
|
||
- цветовые и геометрические аугментации, Mosaic, MixUp, CutMix, copy-paste,
|
||
erasing и AutoAugment;
|
||
- live-прогресс, журнал, графики метрик и восстановление состояния после
|
||
переподключения браузера;
|
||
- сохранение профилей запуска и кооперативная остановка обучения;
|
||
- локальное MLflow-хранилище или внешний tracking server.
|
||
|
||
## Локальная установка и запуск
|
||
|
||
Нужны Python 3.11+ и [uv](https://docs.astral.sh/uv/).
|
||
|
||
```bash
|
||
uv sync --locked
|
||
uv run yolo-train-webui
|
||
```
|
||
|
||
Альтернативный запуск как Python-модуля:
|
||
|
||
```bash
|
||
uv run -m yolo_webui
|
||
```
|
||
|
||
Откройте `http://127.0.0.1:8000`. Сервер по умолчанию слушает только loopback.
|
||
|
||
При первом использовании официального имени модели, например `yolo11n.pt`,
|
||
Ultralytics скачает веса. Пользовательские модели размещайте в `./models` или в
|
||
`./runs`, а датасеты — в `./datasets`. Результаты записываются в `./runs`.
|
||
|
||
## Docker Compose
|
||
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
|
||
WebUI будет доступен по `http://127.0.0.1:8000`. Compose намеренно публикует порт
|
||
только на loopback. Не заменяйте адрес на `0.0.0.0` без аутентифицирующего reverse
|
||
proxy: API позволяет запускать и останавливать ресурсоёмкие задачи.
|
||
|
||
Для NVIDIA GPU раскомментируйте секцию `deploy.resources.reservations.devices` в
|
||
`docker-compose.yml`. Образ устанавливает зафиксированные в `uv.lock` зависимости;
|
||
для другого варианта PyTorch используйте отдельно сгенерированный и проверенный
|
||
lock-файл.
|
||
|
||
## Разрешённые пути
|
||
|
||
API отклоняет URL и не разрешает обучению читать или записывать произвольные пути:
|
||
|
||
- датасеты и файлы классов — `./datasets`;
|
||
- модели — `./models` и `./runs`;
|
||
- результаты — `./runs`.
|
||
|
||
Дополнительные доверенные корни можно перечислить через системный разделитель путей
|
||
в `YOLO_WEBUI_DATA_ROOTS`, `YOLO_WEBUI_MODEL_ROOTS` и
|
||
`YOLO_WEBUI_RUN_ROOTS`. Например, в Linux/macOS:
|
||
|
||
```bash
|
||
YOLO_WEBUI_DATA_ROOTS=/mnt/datasets:/data/shared uv run yolo-train-webui
|
||
```
|
||
|
||
PyTorch checkpoints загружаются с включённым restricted-режимом Ultralytics
|
||
(`ULTRALYTICS_SAFE_LOAD=1`). Используйте только модели из доверенных источников.
|
||
|
||
## Датасеты
|
||
|
||
Для `detect`, `segment`, `pose` и `obb` укажите YAML-файл либо каталог со структурой
|
||
`images/` + `labels/`. WebUI может детерминированно разделить такой каталог на
|
||
train/val. Для `classify` нужен готовый каталог с `train` и `val`/`test`, внутри
|
||
которых изображения разложены по классам; автоматическое detection-style разбиение
|
||
для этой задачи отключено.
|
||
|
||
## MLflow
|
||
|
||
По умолчанию метаданные записываются в `./mlflow.db`. Открыть интерфейс просмотра:
|
||
|
||
```bash
|
||
uv run mlflow ui --backend-store-uri sqlite:///mlflow.db
|
||
```
|
||
|
||
Затем откройте `http://127.0.0.1:5000`. Для внешнего tracking server укажите его URI
|
||
в настройках WebUI.
|
||
|
||
Для каждого завершённого запуска Ultralytics записывает в MLflow параметры,
|
||
поэпоховые метрики, графики, `results.csv` и checkpoints
|
||
`weights/best.pt`/`weights/last.pt`. SQLite-файл хранит tracking metadata, а сами
|
||
файлы находятся в MLflow Artifact Repository (локально — в `./mlruns`). Это
|
||
артефакты запуска, а не версии MLflow Model Registry: raw YOLO checkpoint не имеет
|
||
стандартной MLflow `MLmodel`-упаковки.
|
||
|
||
Проверка интеграции на минимальных датасетах для всех пяти задач:
|
||
|
||
```bash
|
||
uv run scripts/run_yolo26_smoke_training.py --mlflow
|
||
uv run scripts/verify_mlflow_smoke.py
|
||
```
|
||
|
||
Второй скрипт завершается с ошибкой, если отсутствует experiment/run, параметры,
|
||
метрики, `results.csv`, `best.pt` или `last.pt` хотя бы для одной задачи.
|
||
|
||
## Проверка
|
||
|
||
```bash
|
||
uv run pytest -q
|
||
node --check src/yolo_webui/static/app.js
|
||
docker compose config
|
||
```
|
||
|
||
Ultralytics распространяется по лицензии AGPL-3.0; для закрытых коммерческих
|
||
продуктов проверьте условия Enterprise-лицензии Ultralytics.
|