Scopri come Model Soups migliora la precisione e la robustezza calcolando la media dei pesi deiYOLO Ultralytics . Impara a potenziare le prestazioni senza aumentare la latenza.
Il termine "Model Soups" indica una tecnica di apprendimento automatico in cui i pesi di più reti neurali, ottimizzati a partire dallo stesso modello di base pre-addestrato utilizzando iperparametri diversi, vengono mediati per creare un unico modello più robusto. Questo approccio consente agli sviluppatori di migliorare l'accuratezza complessiva e la generalizzazione senza aumentare il costo computazionale durante l'inferenza.
Quando si ottimizza un modello, gli esperti in genere eseguono un'ampia scansione di ottimizzazione degli iperparametri per individuare la configurazione più performante. Tradizionalmente, viene selezionato il singolo modello migliore e gli altri vengono scartati. Tuttavia, la creazione di un "model soup" sfrutta le diverse caratteristiche apprese da tutti i modelli nella scansione. Calcolando direttamente la media dei pesi dei modelli, la rete risultante spesso supera il singolo modello migliore, combinando efficacemente i loro punti di forza e riducendo al minimo l'overfitting. Questo processo è altamente efficiente e può essere facilmente gestito all'interno di ambienti collaborativi come la Ultralytics .
I modelli «soup» sono particolarmente efficaci in contesti in cui le risorse computazionali sono limitate, ma sono richieste un'elevata precisione e robustezza.
Per orientarsi nel panorama dell'ottimizzazione del deep learning, è importante distinguere i "Model Soups" da tecniche simili:
Per creare un insieme di modelli uniformi è necessario accedere al dizionarioPyTorch contenente più modelli addestrati e calcolare la media matematica dei loro tensori. Di seguito è riportato un esempio sintetico di come ciò possa essere ottenuto utilizzando un flusso di lavoro Ultralytics supportato nativamente dal 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
Grazie a questa tecnica, gli esperti di visione artificiale possono migliorare facilmente indicatori di prestazione quali le capacità di apprendimento zero-shot e la robustezza generale, senza compromettere la velocità di implementazione richiesta dalle moderne architetture di IA incentrate sull'edge.
Inizia il tuo viaggio con il futuro del machine learning