Model Soups
Entdecke, wie Model Soups die Genauigkeit und Robustheit durch die Mittelwertbildung der Gewichte von Ultralytics YOLO Modellen verbessern. Lerne, wie du die Leistung steigerst, ohne die Latenz zu erhöhen.
Model Soups bezeichnen ein Verfahren des maschinellen Lernens, bei dem die Gewichte mehrerer neuronaler Netze, die mit unterschiedlichen Hyperparametern auf demselben vortrainierten Basismodell feinabgestimmt wurden, gemittelt werden, um ein einzelnes, robusteres Modell zu erstellen. Dieser Ansatz ermöglicht es Entwicklern, die Gesamtgenauigkeit und Verallgemeinerung zu verbessern, ohne die Rechenkosten während der Inferenz zu erhöhen.
Bei der Feinabstimmung eines Modells führen Praktiker normalerweise einen umfassenden Hyperparameter-Tuning-Durchlauf durch, um die leistungsfähigste Konfiguration zu finden. Traditionell wird das eine beste Modell ausgewählt und der Rest verworfen. Die Erstellung einer Model Soup nutzt jedoch die vielfältigen Merkmale, die alle Modelle im Durchlauf gelernt haben. Durch die direkte Mittelung ihrer Modellgewichte übertrifft das resultierende Netzwerk oft das einzelne beste Modell und kombiniert effektiv deren Stärken, während Overfitting minimiert wird. Dieser Prozess ist hocheffizient und kann einfach in kollaborativen Umgebungen wie der Ultralytics Platform verwaltet werden.
Link to this sectionAnwendungen in der Praxis#
Model Soups sind äußerst effektiv in Szenarien, in denen die Rechenressourcen begrenzt sind, aber eine hohe Genauigkeit und Robustheit erforderlich sind.
- Autonomes Fahren: Beim Einsatz von Objekterkennung-Systemen in selbstfahrenden Autos müssen Modelle über verschiedene Licht- und Wetterbedingungen hinweg verallgemeinern. Durch die Mittelung mehrerer Modelle, die mit unterschiedlichen Datenaugmentationen und Lernraten trainiert wurden, erstellen Ingenieure eine äußerst robuste Soup, die eine niedrige Inferenzlatenz beibehält. Dies stellt sicher, dass die für die autonome Navigation entscheidenden Echtzeit-Verarbeitungsgeschwindigkeiten nicht beeinträchtigt werden.
- Mobile medizinische Diagnostik: Bei Edge-KI-Anwendungen, wie der Bildklassifizierung auf Smartphones für ein erstes dermatologisches Screening, ist die Rechenleistung stark begrenzt. Eine Model Soup bietet die für klinische Zuverlässigkeit erforderliche gesteigerte Genauigkeit und stellt gleichzeitig sicher, dass der endgültige Platzbedarf problemlos auf mobile Edge-Geräte passt, ohne den Akku zu belasten oder eine Cloud-Verbindung zu erfordern.
Link to this sectionDifferenzierung verwandter Konzepte#
Um dich in der Landschaft der Deep-Learning-Optimierung zurechtzufinden, ist es wichtig, Model Soups von ähnlichen Techniken zu unterscheiden:
- Model Ensemble: Ein Ensemble kombiniert die Vorhersagen (Ausgaben) mehrerer unabhängiger Modelle. Obwohl dies die Genauigkeit verbessert, erfordert es die Ausführung jedes Modells während der Inferenz, was die Rechenkosten multipliziert. Model Soups mitteln die Gewichte vor der Inferenz, wodurch die Rechenkosten identisch mit denen eines einzelnen Modells bleiben.
- Model Merging: Dies ist ein breiterer Begriff für die Kombination von Modellen, die möglicherweise für völlig unterschiedliche Aufgaben oder Datensätze trainiert wurden. Model Soups sind eine spezifische Untergruppe des Mergings, bei der alle Modelle von exakt derselben vortrainierten Basisarchitektur stammen und für dieselbe Zielaufgabe feinabgestimmt wurden.
Link to this sectionImplementierungsbeispiel#
Die Erstellung einer einheitlichen Model Soup beinhaltet den Zugriff auf das PyTorch State Dictionary mehrerer trainierter Modelle und die mathematische Mittelung ihrer Tensoren. Unten findest du ein prägnantes Beispiel dafür, wie dies mit einem Ultralytics YOLO26-Workflow erreicht werden kann, der nativ vom PyTorch-Framework unterstützt wird.
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.






