Model Soups
Découvre comment les Model Soups améliorent la précision et la robustesse en moyennant les poids des modèles Ultralytics YOLO. Apprends à booster les performances sans augmenter la latence.
Les Model Soups désignent une technique d'apprentissage automatique où les poids de plusieurs réseaux de neurones, affinés à partir du même modèle de base pré-entraîné en utilisant différents hyperparamètres, sont moyennés ensemble pour créer un modèle unique plus robuste. Cette approche permet aux développeurs d'améliorer la précision globale et la généralisation sans augmenter le coût computationnel pendant l'inférence.
Lors de l'affinage d'un modèle, les praticiens exécutent généralement un large balayage de hyperparameter tuning pour trouver la configuration la plus performante. Traditionnellement, le meilleur modèle unique est sélectionné et les autres sont rejetés. Cependant, la création d'un model soup tire parti des caractéristiques diverses apprises par tous les modèles du balayage. En moyennant directement leurs model weights, le réseau résultant surpasse souvent le meilleur modèle unique, combinant efficacement leurs forces tout en minimisant le overfitting. Ce processus est très efficace et peut être facilement géré au sein d'environnements collaboratifs comme la Ultralytics Platform.
Link to this sectionApplications concrètes#
Les Model Soups sont très efficaces dans les scénarios où les ressources computationnelles sont limitées, mais où une grande précision et une robustesse élevée sont requises.
- Vision pour véhicule autonome : Lors du déploiement de systèmes de object detection dans des voitures autonomes, les modèles doivent se généraliser à travers diverses conditions d'éclairage et météorologiques. En moyennant plusieurs modèles entraînés avec des augmentations de données et des taux d'apprentissage variés, les ingénieurs créent une soupe très robuste qui maintient une faible inference latency. Cela garantit que les vitesses de traitement en temps réel cruciales pour la autonomous navigation ne sont pas affectées.
- Diagnostics médicaux mobiles : Dans les applications d'IA en périphérie, comme l'exécution de image classification sur des smartphones pour un dépistage dermatologique initial, la puissance computationnelle est sévèrement limitée. Un model soup fournit la précision accrue nécessaire à la fiabilité clinique tout en garantissant que l'empreinte finale s'adapte facilement sur des mobile edge devices sans vider la batterie ou nécessiter de connectivité cloud.
Link to this sectionDifférencier les concepts associés#
Pour naviguer dans le paysage de la deep learning optimization, il est important de distinguer les Model Soups de techniques similaires :
- Model Ensemble : L'ensemble combine les prédictions (sorties) de plusieurs modèles indépendants. Bien que cela améliore la précision, cela nécessite d'exécuter chaque modèle pendant l'inférence, multipliant le coût computationnel. Les Model Soups moyennent les poids avant l'inférence, gardant le coût computationnel identique à celui d'un modèle unique.
- Model Merging : C'est un terme plus large pour combiner des modèles qui peuvent avoir été entraînés sur des tâches ou des jeux de données entièrement différents. Les Model Soups sont un sous-ensemble spécifique de fusion où tous les modèles proviennent exactement de la même pre-trained base architecture et sont affinés sur la même tâche cible.
Link to this sectionExemple d'implémentation#
Créer un model soup uniforme implique d'accéder au PyTorch state dictionary de plusieurs modèles entraînés et de moyenner mathématiquement leurs tenseurs. Tu trouveras ci-dessous un exemple concis de la façon dont cela peut être accompli en utilisant un workflow Ultralytics YOLO26 nativement supporté par le PyTorch framework.
import torch
# Load the PyTorch state dictionaries from two fine-tuned YOLO26 models
model1 = torch.load("yolo26_run1.pt")["model"].state_dict()
model2 = torch.load("yolo26_run2.pt")["model"].state_dict()
# Create a uniform model soup by averaging the model weights
soup_dict = {key: (model1[key] + model2[key]) / 2.0 for key in model1.keys()}
# The resulting soup_dict can now be loaded into a new YOLO26 instanceBy leveraging this technique, computer vision practitioners can easily boost performance metrics like zero-shot learning capabilities and general robustness without sacrificing the deployment speed required for modern, edge-first AI architectures.






