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 et 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 de calcul lors de l'inférence.
Quand tu fais du fine-tuning sur un modèle, tu lances généralement un large balayage de hyperparameter tuning pour trouver la configuration la plus performante. Traditionnellement, le seul meilleur modèle est sélectionné, et les autres sont rejetés. Cependant, créer un model soup capitalise sur les diverses caractéristiques apprises par tous les modèles du balayage. En faisant directement la moyenne de leurs model weights, le réseau obtenu surpasse souvent le seul meilleur modèle, combinant efficacement leurs forces tout en minimisant le overfitting. Ce processus est hautement efficace et peut être facilement géré dans des environnements collaboratifs comme la Ultralytics Platform.
Applications concrètes#
Les Model Soups sont très efficaces dans les scénarios où les ressources informatiques sont limitées, mais où une grande précision et une robustesse élevée sont requises.
- Vision pour véhicules autonomes : Lorsque tu déploies des systèmes de object detection dans des voitures autonomes, les modèles doivent se généraliser à travers diverses conditions d'éclairage et de météo. En faisant la moyenne de plusieurs modèles entraînés avec des augmentations de données et des taux d'apprentissage variés, tu crées un soup hautement robuste qui maintient une faible inference latency. Cela garantit que les vitesses de traitement en temps réel cruciales pour la autonomous navigation restent inchangé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 de calcul est strictement limitée. Un model soup fournit la précision accrue nécessaire à la fiabilité clinique tout en veillant à ce que l'empreinte finale s'intègre facilement sur des mobile edge devices sans vider la batterie ni nécessiter de connectivité cloud.
Différencier les concepts associés#
Pour naviguer dans le paysage de la deep learning optimization, il est important de distinguer Model Soups de techniques similaires :
- Model Ensemble : L'enssembling 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 de calcul. Les Model Soups font la moyenne des poids avant l'inférence, maintenant le coût de calcul identique à celui d'un seul modèle.
- Model Merging : C'est un terme plus large pour combiner des modèles qui ont pu être entraînés sur des tâches ou des ensembles 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 du même pre-trained base architecture et sont affinés sur la même tâche cible.
Exemple 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 faire la moyenne mathématique de leurs tenseurs. Ci-dessous se trouve un exemple concis de la façon dont cela peut être réalisé en utilisant un flux de travail Ultralytics YOLO26 pris en charge nativement 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 instanceEn tirant parti de cette technique, tu peux facilement booster les métriques de performance comme les capacités de zero-shot learning et la robustesse générale sans sacrifier la vitesse de déploiement requise pour les architectures d'IA modernes axées sur la périphérie.






