altametris.sara.yolo.trainer¶
YOLO trainer implementation.
Provides training interface for YOLO models using Ultralytics backend with Altametris standardized callbacks and configuration.
Example
>>> model = YoloModel(version="11", task="detect", size="x")
>>> trainer = YoloTrainer(model=model, device="cuda")
>>> results = trainer.train(dataset_config="coco128.yaml", epochs=100)
Attributes¶
Classes¶
YOLO trainer implementing BaseTrainer interface. |
Module Contents¶
- altametris.sara.yolo.trainer.logger¶
- class altametris.sara.yolo.trainer.YoloTrainer(model: altametris.sara.yolo.model.YoloModel, device: str = 'auto', callbacks: list[altametris.sara.core.base_callback.BaseCallback] | None = None)¶
Bases:
altametris.sara.core.base_trainer.BaseTrainerYOLO trainer implementing BaseTrainer interface.
Wraps Ultralytics training with Altametris callback system and standardized configuration.
- Parameters:
model – YOLO model to train
device – Training device
callbacks – Training callbacks
Example
>>> model = YoloModel(version="11", task="detect", size="n") >>> trainer = YoloTrainer(model=model, device="cuda") >>> results = trainer.train( ... dataset_config="data.yaml", ... epochs=100, ... batch_size=16, ... imgsz=640 ... )
- _resolve_device_for_ultralytics() str¶
Convert Altametris device format to Ultralytics-compatible format.
Ultralytics does not support ‘auto’ device. It requires explicit device specification: ‘cpu’, ‘0’, ‘1’, etc.
- Conversion rules:
‘auto’ -> ‘cpu’ (if no GPU) or ‘0’ (if GPU available)
‘cuda’ -> ‘0’ (first GPU)
‘cuda:0’ -> ‘0’ (extract GPU index)
‘cpu’ -> ‘cpu’ (unchanged)
- Returns:
Device string compatible with Ultralytics (e.g., ‘cpu’, ‘0’)
Note
This method checks actual GPU availability using torch.cuda.device_count() to avoid errors when CUDA is installed but no GPU is present.
- _register_ultralytics_callbacks() None¶
Bridge between Altametris callbacks and Ultralytics callbacks.
Registers hooks into Ultralytics training lifecycle that forward events to the Altametris callback manager. This ensures callbacks are triggered automatically during Ultralytics training.
- Ultralytics hooks registered:
on_train_start: Called when training begins
on_train_epoch_end: Called after each training epoch
on_val_end: Called after validation
on_train_end: Called when training completes
Note
This method is called automatically during __init__. Manual callback invocations in train() are not needed.
- load_config(config_path: str | pathlib.Path) Dict[str, Any]¶
Load and parse YAML configuration file.
Supports both dataset configuration files (data.yaml) and training parameter files (train-params.yaml).
- Parameters:
config_path – Path to YAML configuration file
- Returns:
Dictionary containing parsed configuration
- Raises:
TrainingError – If config file not found or invalid YAML
Example
>>> # Load dataset config >>> dataset_config = trainer.load_config("data/detect/config.yml") >>> print(dataset_config['names']) {0: 'Chassis A', 1: 'Chassis C', ...}
>>> # Load training params >>> train_params = trainer.load_config("data/detect/train-parameter-detect.yaml") >>> epochs = train_params['train']['epochs']
- train(dataset_config: str | pathlib.Path | Dict[str, Any], epochs: int = 100, batch_size: int = 16, imgsz: int = 640, save_dir: str | pathlib.Path | None = None, **kwargs: Any) dict[str, Any]¶
Train YOLO model.
- Parameters:
dataset_config – Path to dataset YAML configuration or dict
epochs – Number of training epochs
batch_size – Batch size
imgsz – Input image size
save_dir – Directory to save results
**kwargs – Additional Ultralytics training arguments
- Returns:
Training results dictionary
- Raises:
TrainingError – If training fails
Example
>>> # Using YAML path >>> results = trainer.train( ... dataset_config="data.yaml", ... epochs=10, ... batch_size=8, ... imgsz=640 ... )
>>> # Using dict config >>> config = trainer.load_config("train-params.yaml") >>> results = trainer.train( ... dataset_config="data.yaml", ... epochs=config['train']['epochs'], ... batch_size=config['train']['batch_size'] ... )
- validate(dataset_config: str | pathlib.Path, **kwargs: Any) dict[str, Any]¶
Validate YOLO model.
- Parameters:
dataset_config – Path to validation dataset config
**kwargs – Additional validation arguments
- Returns:
Validation metrics
- Raises:
TrainingError – If validation fails
Example
>>> metrics = trainer.validate(dataset_config="val.yaml")
- _extract_metrics(results: Any) dict[str, Any]¶
Extract metrics from Ultralytics results.
- Parameters:
results – Ultralytics training/validation results
- Returns:
Dictionary of metrics
- resume_training(checkpoint_path: str | pathlib.Path, **kwargs: Any) dict[str, Any]¶
Resume training from checkpoint.
- Parameters:
checkpoint_path – Path to checkpoint file
**kwargs – Additional training arguments
- Returns:
Training results
Example
>>> results = trainer.resume_training("runs/train/exp/weights/last.pt")