Découvrez comment les « Model Soups » améliorent la précision et la robustesse en calculant la moyenne des poidsYOLO Ultralytics . Apprenez à optimiser les performances sans augmenter la latence.
Les « model soups » désignent une technique d'apprentissage automatique dans laquelle les poids de plusieurs réseaux neuronaux, affinés à partir du même modèle de base pré-entraîné à l'aide de différents hyperparamètres, sont moyennés afin de 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.
Lorsqu'ils affinent un modèle, les professionnels effectuent généralement un large balayage des hyperparamètres afin de trouver la configuration la plus performante. Traditionnellement, on sélectionne le meilleur modèle parmi tous et on écarte les autres. Cependant, la création d’un « modèle composite » tire parti de la diversité des caractéristiques apprises par tous les modèles lors de la recherche. En calculant directement la moyenne de leurs poids, le réseau ainsi obtenu surpasse souvent le meilleur modèle isolé, combinant efficacement leurs atouts tout en minimisant le surapprentissage. Ce processus est très efficace et peut être facilement géré dans des environnements collaboratifs tels que la Ultralytics .
Les modèles de type « soupes » sont très efficaces dans les situations où les ressources informatiques sont limitées, mais où une grande précision et une grande robustesse sont requises.
Pour s'y retrouver dans le domaine de l'optimisation de l'apprentissage profond, il est important de distinguer les « Model Soups » des techniques similaires :
Pour créer un ensemble homogène de modèles, il faut accéder au dictionnairePyTorch de plusieurs modèles entraînés et calculer la moyenne mathématique de leurs tenseurs. Vous trouverez ci-dessous un exemple concis illustrant comment y parvenir à l'aide d'un workflow Ultralytics nativement pris en charge par le PyTorch .
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 instance
En tirant parti de cette technique, les spécialistes de la vision par ordinateur peuvent facilement améliorer des indicateurs de performance tels que les capacités d'apprentissage « zero-shot » et la robustesse générale, sans pour autant compromettre la rapidité de déploiement requise par les architectures d'IA modernes axées sur la périphérie.
Commencez votre parcours avec l'avenir de l'apprentissage automatique