Training

Train YOLO models locally against a dataset version. Jobs run in a background thread inside the oneopen serve process.

Requirements

# Ultralytics (CV / YOLO)
pip install "oneopen-ml-studio[yolo]"

# Face + Torchvision detectors (MTCNN-style, RetinaNet, Faster R-CNN, SSD)
pip install "oneopen-ml-studio[detectors]"

# Tabular + classical text/audio label baselines
pip install "oneopen-ml-studio[tabular]"

# Hugging Face prepare extras
pip install "oneopen-ml-studio[nlp]"

# Optional alternate YOLO backend
pip install "oneopen-ml-studio[libreyolo]"

Training by modality

Modality

What you get

Image detection

YOLO, LibreYOLO, MTCNN-style, RetinaFace-style, Faster R-CNN, RetinaNet, SSD-Lite

Image classification

YOLO-Cls (v8/11/26) + ResNet, EfficientNet, MobileNetV3, ConvNeXt, ViT, DenseNet, Swin, MaxViT

Image segmentation

YOLO-Seg (v8/11/26) + Mask R-CNN, DeepLabV3, FCN, LR-ASPP

Tabular

sklearn LogisticRegression / Ridge

Text

TF-IDF classifier (fit) + Hugging Face JSONL prepare

Audio

Audio-label baseline (fit) + Whisper/ASR prepare JSONL

Video

Video-label baseline (fit) + action-recognition prepare

LLM

SFT / DPO / RAG packages for TRL, Axolotl, Unsloth

Open Train / Fine-tune on any project — options are filtered to that task via GET /api/projects/{id}/train/options.

For a screenshot walkthrough of data prep + training per project type, see Data prep & training by task (with screenshots).

Plugin manager (auto-install)

Missing backends are installed on demand when you train or run Label Assist / SAM:

Trigger

Extra installed

YOLO train / Label Assist

[yolo]

LibreYOLO

[libreyolo]

Torchvision detect / cls / seg

[detectors]

sklearn / TF-IDF / audio-video fit

[tabular]

HF / LLM prepare

[nlp]

SAM assist

[sam] + segment-anything

Disable with ONEOPEN_AUTO_INSTALL_PLUGINS=false. Status APIs: GET /api/plugins/manager/status, POST /api/plugins/ensure, POST /api/plugins/extras/{extra}/install.

Before you train

Annotation and the project pipeline (tabs, export formats, Generate vs Package) follow project type — detection uses boxes + Generate; classification assigns an image class; text/audio/video/LLM use sample labeling without CV Generate.

  1. Label enough samples for your task.

  2. For image detection/seg/classification: assign splits and generate a version when the Generate tab is shown.

  3. Open Train / Export and pick a backend for that modality.

  4. Create a dataset version.

  5. Prefer a GPU when available (GET /api/system/device reports CUDA).

Start a job (UI)

On the project page Train panel, pick a model family:

Family

Examples

Extra

YOLO (Ultralytics)

YOLOv8 → YOLO26

pip install "oneopen-ml-studio[yolo]"

LibreYOLO

LibreYOLO9

pip install "oneopen-ml-studio[libreyolo]"

Face

MTCNN (SSD-Lite face/OD), RetinaFace-style RetinaNet

pip install "oneopen-ml-studio[detectors]"

Torchvision

Faster R-CNN, RetinaNet, SSD-Lite

same [detectors] extra

Optional pretrained MTCNN proposals for assist: pip install "oneopen-ml-studio[face]".

Then set:

Setting

Notes

Version

Required dataset version

Model

Catalog entry or custom weights

Epochs / imgsz / batch

Standard YOLO knobs

Device

Auto (GPU if available), GPU, or CPU

Live stats update while training: mAP, precision/recall, losses, DFL, fitness, it/s, img/s, ETA, elapsed.

On success, best.pt is registered for later Label Assist / fine-tuning.

API

Check device:

GET /api/system/device

Start train:

POST /api/projects/{project_id}/train
{
  "version_id": 1,
  "model": "yolov8n.pt",
  "epochs": 50,
  "imgsz": 640,
  "batch": 16,
  "device": "auto"
}

Poll status:

GET /api/projects/{project_id}/train/status
GET /api/train/jobs/{job_id}

Device values

Value

Behavior

auto

CUDA GPU if available, else CPU

gpu / cuda

Force GPU

cpu

Force CPU

other

Passed through to Ultralytics device string

Windows note

On Windows, training forces DataLoader workers=0. This avoids the common “DataLoader worker exited unexpectedly” crash under spawn. Unix defaults to 4 workers.

Limitations

  • One active training job per project.

  • Jobs are in-process threads — stopping oneopen serve stops training.

  • Job JSON under ~/.oneopen/training_jobs/ may remain after an interrupted run.

  • Early epochs often show mAP 0.000 until the model starts detecting; that can be normal.

Troubleshooting

See Troubleshooting for OOM, missing extras, empty labels, and worker errors.