README

Altametris - Bibliothèques ML Modulaires

Architecture modulaire production-ready pour la détection d’objets et la segmentation.

Architecture

Basée sur les principes SOLID et DRY avec séparation stricte des responsabilités :

  • altametris/sara/core/ : Classes abstraites partagées (BaseModel, BaseTrainer, BaseDetector, BaseExporter)

  • altametris/sara/yolo_sara/ : Implémentation YOLO (Ultralytics)

  • altametris/sara/unet/ : Implémentation UNet (à venir)

  • altametris/sara/tpnet/ : Implémentation TPNet (à venir)

Installation

Installation de base

# Installation minimale (seulement ultralytics + mlflow)
pip install -e .

Profils développeur (Local Development)

Ces profils sont optimisés pour le développement local avec toutes les dépendances nécessaires:

# Développement standard (qualité + tests + docs)
pip install -e ".[dev]"

# Développement SARA (dev + Azure + tests async)
pip install -e ".[dev-sara]"

# Développement complet (tout inclus + export)
pip install -e ".[dev-full]"

# Absolument tout (debugging)
pip install -e ".[all]"

Profils CI/CD (Pipeline Optimization)

Ces profils sont utilisés par le pipeline Azure DevOps (NE PAS installer localement):

# Job CodeQuality: ruff + mypy
pip install -e ".[ci-quality]"

# Job UnitTests: pytest + coverage + sphinx
pip install -e ".[ci-unit]"

# Job IntegrationTests: pytest + coverage
pip install -e ".[ci-integration]"

# Job AzureTests: pytest + coverage + async + azure
pip install -e ".[ci-azure]"

Groupes de dépendances disponibles

Groupes de base (Building Blocks):

  • test-base: pytest seul

  • test: pytest + coverage

  • test-async: pytest + pytest-asyncio

  • azure: Azure Storage + Identity + dotenv

  • quality: ruff + black + isort + mypy

  • quality-hooks: quality + pre-commit

  • docs: sphinx + autoapi + furo + myst-parser

  • export: ONNX + TFLite + CoreML + OpenVINO

Profils développeur:

  • dev: Développement standard (quality-hooks + test + docs)

  • dev-sara: Développement SARA (dev + test-async + azure)

  • dev-full: Tout inclus (dev-sara + export)

  • all: Absolument tout

Profils CI/CD:

  • ci-quality: Job CodeQuality (quality uniquement)

  • ci-unit: Job UnitTests (test + docs)

  • ci-integration: Job IntegrationTests (test uniquement)

  • ci-azure: Job AzureTests (test + test-async + azure)

Exemples d’utilisation

# Développeur travaillant sur la refacto SARA avec Azure
pip install -e ".[dev-sara]"

# Développeur voulant tester l'export de modèles
pip install -e ".[dev-full]"

# Installation minimale pour tester le package
pip install -e "."

# Debugging pipeline (installer exactement ce qu'un job CI installe)
pip install -e ".[ci-quality]"  # Simuler Job CodeQuality
pip install -e ".[ci-unit]"     # Simuler Job UnitTests

Usage rapide

Training YOLO

from altametris.sara.yolo import YoloModel, YoloTrainer

# Créer le modèle
model = YoloModel(version="11", task="segment", size="x", pretrained=True)

# Trainer
trainer = YoloTrainer(model=model, device="cuda")

# Entraînement
results = trainer.train(
    dataset_config="dataset.yaml",
    epochs=100,
    batch_size=16
)

Inference YOLO

from altametris.sara.yolo import YoloDetector

# Charger le détecteur
detector = YoloDetector(model_path="weights/best.pt", task="segment")

# Prédiction
results = detector.predict(source="image.jpg", conf=0.25, imgsz=640)

Export YOLO

from altametris.sara.yolo import YoloExporter

# Export ONNX
exporter = YoloExporter(model_path="weights/best.pt")
onnx_path = exporter.export(format="onnx", imgsz=640)

Tests

Exécution des tests

# Tous les tests
pytest

pytest --cov=altametris --cov-report=html

Tests par module

# Tests YOLO Model (2 types)
# Tests quotidiens (rapides, avec mocks)
pytest tests/yolo/test_model.py -vv -s -x

# Tests hebdomadaires (lents, vrai Ultralytics)
pytest tests/yolo/test_model_integration.py -vv

# Tests Detector
pytest tests/yolo/test_detector.py -vv
pytest tests/yolo/test_detector_integration.py -vv

# Tests Trainer
pytest tests/yolo/test_trainer.py -vv
pytest tests/yolo/test_trainer_integration.py -vv

Tests par type

# Tout sauf intégration (CI/CD - rapide)
pytest tests/yolo/ -m "not integration" -v

# Intégration uniquement (lent)
pytest tests/yolo/ -m integration -v

# Tests Azure Blob Storage
pytest tests/yolo/test_detector_integration_azure.py -v -m azure

# Tous les tests sauf Azure (si pas de credentials)
pytest -m "not azure"

# Tests d'export (nécessite dépendances export)
pytest tests/yolo/test_exporter_integration.py -m integration -v

# Tests GPU uniquement (skipped automatiquement si pas de GPU)
pytest -m gpu_required -v

Configuration Azure (optionnel)

Pour exécuter les tests Azure Blob Storage:

Voir tests/yolo/fixtures/README.md pour les détails.

Structure du projet


├── altametris/sara
│   ├── core/              # Classes abstraites partagées
│   └── yolo_sara/         # Implémentation YOLO
├── tests/                 # Tests unitaires et d'intégration
├── examples/              # Exemples d'utilisation
└── docs/                  # Documentation

Documentation

Développement

Voir DEVBOOK.md pour le suivi du développement.

License

MIT