Erfahren Sie, wie Model Soups durch die Mittelwertbildung der Gewichte vonYOLO die Genauigkeit und Robustheit verbessern. Erfahren Sie, wie Sie die Leistung steigern können, ohne die Latenz zu erhöhen.
Unter „Model Soups“ versteht man eine Technik des maschinellen Lernens, bei der die Gewichte mehrerer neuronaler Netze, die ausgehend vom selben vortrainierten Basismodell mit unterschiedlichen Hyperparametern feinabgestimmt wurden, gemittelt werden, um ein einziges, robusteres Modell zu erstellen. Dieser Ansatz ermöglicht es Entwicklern, die Gesamtgenauigkeit und die Generalisierungsfähigkeit zu verbessern, ohne den Rechenaufwand während der Inferenz zu erhöhen.
Bei der Feinabstimmung eines Modells führen Praktiker in der Regel einen umfassenden Hyperparameter-Tuning -Durchlauf durch, um die Konfiguration mit der besten Leistung zu finden. Traditionell wird das beste Einzelmodell ausgewählt und die übrigen verworfen. Durch die Erstellung einer „Model Soup“ werden jedoch die vielfältigen Merkmale genutzt, die von allen Modellen im Durchlauf gelernt wurden. Durch die direkte Mittelwertbildung ihrer Modellgewichte übertrifft das resultierende Netzwerk oft das beste Einzelmodell, da es deren Stärken effektiv kombiniert und gleichzeitig das Überanpassen minimiert. Dieser Prozess ist äußerst effizient und lässt sich in kollaborativen Umgebungen wie der Ultralytics leicht verwalten.
Modell-Soups sind besonders effektiv in Situationen, in denen die Rechenressourcen begrenzt sind, aber hohe Genauigkeit und Robustheit erforderlich sind.
Um sich im Bereich der Deep-Learning-Optimierung zurechtzufinden, ist es wichtig, „Model Soups“ von ähnlichen Techniken zu unterscheiden:
Um eine einheitliche Modell-Sammlung zu erstellen, muss auf das PyTorch mehrerer trainierter Modelle zugegriffen und deren Tensoren mathematisch gemittelt werden. Nachfolgend finden Sie ein kurzes Beispiel dafür, wie dies mithilfe eines Ultralytics erreicht werden kann, der nativ vom PyTorch 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 instance
Durch den Einsatz dieser Technik können Fachleute im Bereich Computer Vision Leistungsmetriken wie Zero-Shot-Lernfähigkeiten und allgemeine Robustheit auf einfache Weise verbessern, ohne dabei die für moderne, Edge-First-KI-Architekturen erforderliche Bereitstellungsgeschwindigkeit zu beeinträchtigen.
Beginnen Sie Ihre Reise mit der Zukunft des maschinellen Lernens