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 seultest: pytest + coveragetest-async: pytest + pytest-asyncioazure: Azure Storage + Identity + dotenvquality: ruff + black + isort + mypyquality-hooks: quality + pre-commitdocs: sphinx + autoapi + furo + myst-parserexport: 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