Best Practices und Tipps für maschinelles Lernen beim Modelltraining
Einführung
Einer der wichtigsten Schritte bei der Arbeit an einem Computer-Vision-Projekt ist das Modelltraining. Bevor Sie diesen Schritt erreichen, müssen Sie Ihre Ziele definieren und Ihre Daten sammeln und annotieren. Nachdem Sie die Daten vorverarbeitet haben, um sicherzustellen, dass sie sauber und konsistent sind, können Sie mit dem Training Ihres Modells fortfahren.
Ansehen: Tipps zum Modelltraining | Umgang mit großen Datensätzen | Batch-Größe, GPU-Auslastung und Gemischte Präzision
Was ist Modelltraining? Modelltraining ist der Prozess, Ihrem Modell beizubringen, visuelle Muster zu erkennen und Vorhersagen basierend auf Ihren Daten zu treffen. Es wirkt sich direkt auf die Leistung und Genauigkeit Ihrer Anwendung aus. In diesem Leitfaden behandeln wir Best Practices, Optimierungstechniken und Tipps zur Fehlerbehebung, die Ihnen helfen, Ihre Computer-Vision-Modelle effektiv zu trainieren.
So trainieren Sie ein Modell für maschinelles Lernen
Ein Computer Vision Modell wird trainiert, indem seine internen Parameter angepasst werden, um Fehler zu minimieren. Zunächst wird dem Modell eine große Menge an beschrifteten Bildern zugeführt. Es trifft Vorhersagen darüber, was sich in diesen Bildern befindet, und die Vorhersagen werden mit den tatsächlichen Beschriftungen oder Inhalten verglichen, um Fehler zu berechnen. Diese Fehler zeigen, wie weit die Vorhersagen des Modells von den wahren Werten abweichen.
Während des Trainings trifft das Modell iterativ Vorhersagen, berechnet Fehler und aktualisiert seine Parameter durch einen Prozess, der als Backpropagation bezeichnet wird. In diesem Prozess passt das Modell seine internen Parameter (Gewichte und Biases) an, um die Fehler zu reduzieren. Durch die wiederholte Ausführung dieses Zyklus verbessert das Modell schrittweise seine Genauigkeit. Im Laufe der Zeit lernt es, komplexe Muster wie Formen, Farben und Texturen zu erkennen.
Dieser Lernprozess ermöglicht es dem Computer-Vision-Modell, verschiedene Aufgaben auszuführen, darunter Objekterkennung, Instanzsegmentierung und Bildklassifizierung. Das ultimative Ziel ist es, ein Modell zu erstellen, das sein Lernen auf neue, ungesehene Bilder verallgemeinern kann, so dass es visuelle Daten in realen Anwendungen genau verstehen kann.
Nachdem wir nun wissen, was beim Trainieren eines Modells im Hintergrund geschieht, wollen wir uns die Punkte ansehen, die beim Trainieren eines Modells zu berücksichtigen sind.
Training auf großen Datensätzen
Es gibt einige verschiedene Aspekte, die Sie berücksichtigen sollten, wenn Sie planen, ein großes Dataset zum Trainieren eines Modells zu verwenden. Sie können beispielsweise die Batch-Größe anpassen, die GPU-Auslastung steuern, das Multiscale-Training verwenden usw. Lassen Sie uns jede dieser Optionen im Detail durchgehen.
Batch-Größe und GPU-Auslastung
Beim Trainieren von Modellen mit großen Datensätzen ist die effiziente Nutzung Ihrer GPU entscheidend. Die Batch-Größe ist ein wichtiger Faktor. Sie gibt die Anzahl der Datenstichproben an, die ein Modell für maschinelles Lernen in einer einzigen Trainingsiteration verarbeitet. Durch die Verwendung der maximalen, von Ihrer GPU unterstützten Batch-Größe können Sie die Möglichkeiten Ihrer GPU voll ausschöpfen und die für das Modelltraining benötigte Zeit reduzieren. Sie sollten jedoch vermeiden, dass der GPU-Speicher erschöpft ist. Wenn Speicherfehler auftreten, reduzieren Sie die Batch-Größe schrittweise, bis das Modell reibungslos trainiert wird.
Ansehen: Wie man Batch-Inference mit Ultralytics YOLO11 verwendet | Beschleunigen Sie die Objekterkennung in python 🎉
In Bezug auf YOLO11 können Sie die batch_size
Parameter in der Trainingskonfiguration passend zu deiner GPU-Kapazität. Setze außerdem batch=-1
in Ihrem Trainingsskript automatisch die optimalen Batch-Größe die effizient basierend auf den Fähigkeiten Ihres Geräts verarbeitet werden können. Durch die Feinabstimmung der Batch-Größe können Sie Ihre GPU-Ressourcen optimal nutzen und den gesamten Trainingsprozess verbessern.
Teilmengentraining
Teilmengentraining ist eine clevere Strategie, bei der Ihr Modell mit einer kleineren Datenmenge trainiert wird, die den größeren Datensatz repräsentiert. Dies kann Zeit und Ressourcen sparen, insbesondere während der ersten Modellentwicklung und -prüfung. Wenn Sie wenig Zeit haben oder mit verschiedenen Modellkonfigurationen experimentieren, ist das Teilmengentraining eine gute Option.
Wenn es um YOLO11 geht, können Sie das Teilmengen-Training einfach mit dem fraction
Parameter. Mit diesem Parameter können Sie festlegen, welcher Anteil Ihres Datensatzes für das Training verwendet werden soll. Zum Beispiel die Einstellung fraction=0.1
wird Ihr Modell mit 10 % der Daten trainieren. Sie können diese Technik für schnelle Iterationen und zur Feinabstimmung Ihres Modells verwenden, bevor Sie sich zum Trainieren eines Modells mit einem vollständigen Datensatz verpflichten. Das Training mit Teilmengen hilft Ihnen, schnell Fortschritte zu erzielen und potenzielle Probleme frühzeitig zu erkennen.
Multi-Skalen-Training
Multi-Skalen-Training ist eine Technik, die die Fähigkeit Ihres Modells zur Generalisierung verbessert, indem es auf Bildern unterschiedlicher Größe trainiert wird. Ihr Modell kann lernen, Objekte in verschiedenen Maßstäben und Entfernungen zu erkennen, und robuster werden.
Wenn Sie beispielsweise YOLO11 trainieren, können Sie das Multiscale-Training aktivieren, indem Sie Folgendes einstellen: scale
Parameter. Dieser Parameter passt die Größe der Trainingsbilder um einen bestimmten Faktor an und simuliert so Objekte in unterschiedlichen Entfernungen. Zum Beispiel, Einstellung scale=0.5
Zoomt Trainingsbilder während des Trainings zufällig um einen Faktor zwischen 0,5 und 1,5. Durch die Konfiguration dieses Parameters kann Ihr Modell eine Vielzahl von Bildskalierungen erfahren und seine Erkennungsfähigkeiten über verschiedene Objektgrößen und Szenarien hinweg verbessern.
Zwischenspeichern
Caching ist eine wichtige Technik, um die Effizienz des Trainings von Modellen für maschinelles Lernen zu verbessern. Durch das Speichern vorverarbeiteter Bilder im Speicher reduziert das Caching die Zeit, die die GPU mit dem Warten auf das Laden von Daten von der Festplatte verbringt. Das Modell kann kontinuierlich Daten empfangen, ohne dass es zu Verzögerungen durch Festplatten-I/O-Operationen kommt.
Das Zwischenspeichern kann beim Trainieren von YOLO11 mithilfe des folgenden Befehls gesteuert werden: cache
Parameter:
cache=True
: Speichert Datensatzbilder im RAM, was die schnellste Zugriffsgeschwindigkeit bietet, aber auf Kosten einer erhöhten Speichernutzung geht.cache='disk'
: Speichert die Bilder auf der Festplatte, langsamer als RAM, aber schneller als jedes Mal neue Daten zu laden.cache=False
: Deaktiviert das Caching und verlässt sich vollständig auf Disk I/O, was die langsamste Option ist.
Training mit gemischter Präzision
Beim Training mit gemischter Präzision werden sowohl 16-Bit- (FP16) als auch 32-Bit-Gleitkommatypen (FP32) verwendet. Die Stärken von FP16 und FP32 werden genutzt, indem FP16 für schnellere Berechnungen und FP32 verwendet wird, um die Präzision bei Bedarf aufrechtzuerhalten. Die meisten Operationen des neuronalen Netzes werden in FP16 durchgeführt, um von schnelleren Berechnungen und geringerem Speicherverbrauch zu profitieren. Eine Masterkopie der Gewichte des Modells wird jedoch in FP32 aufbewahrt, um die Genauigkeit während der Gewichtungsaktualisierungsschritte zu gewährleisten. Sie können größere Modelle oder größere Batch-Größen innerhalb der gleichen Hardware-Beschränkungen verarbeiten.
Um Mixed-Precision-Training zu implementieren, müssen Sie Ihre Trainingsskripte ändern und sicherstellen, dass Ihre Hardware (wie z. B. GPUs) dies unterstützt. Viele moderne Deep-Learning-Frameworks wie PyTorch und TensorFlow bieten integrierte Unterstützung für Mixed Precision.
Das Training mit gemischter Präzision ist bei der Arbeit mit YOLO11 unkompliziert. Sie können die Option amp
Flag in Ihrer Trainingskonfiguration. Einstellung amp=True
Aktiviert das automatische Training mit gemischter Präzision (AMP). Das Training mit gemischter Präzision ist eine einfache, aber effektive Methode zur Optimierung Ihres Modelltrainingsprozesses.
Vortrainierte Gewichte
Die Verwendung vortrainierter Gewichte ist eine clevere Möglichkeit, den Trainingsprozess Ihres Modells zu beschleunigen. Vortrainierte Gewichte stammen von Modellen, die bereits auf großen Datensätzen trainiert wurden, was Ihrem Modell einen Vorsprung verschafft. Transfer Learning passt vortrainierte Modelle an neue, verwandte Aufgaben an. Das Feinabstimmen eines vortrainierten Modells beinhaltet das Starten mit diesen Gewichten und das anschließende Fortsetzen des Trainings auf Ihrem spezifischen Datensatz. Diese Trainingsmethode führt zu schnelleren Trainingszeiten und oft zu einer besseren Leistung, da das Modell mit einem soliden Verständnis der grundlegenden Funktionen beginnt.
Die pretrained
Parameter erleichtert das Transferlernen mit YOLO11. Einstellung pretrained=True
verwendet standardmäßige vortrainierte Gewichte, oder Sie können einen Pfad zu einem benutzerdefinierten vortrainierten Modell angeben. Die Verwendung vortrainierter Gewichte und des Transferlernens verbessert die Fähigkeiten Ihres Modells effektiv und reduziert die Trainingskosten.
Andere Techniken, die bei der Handhabung eines großen Datensatzes zu berücksichtigen sind
Es gibt noch einige andere Techniken, die bei der Handhabung eines großen Datensatzes zu berücksichtigen sind:
- Learning Rate Schedulers: Die Implementierung von Lernraten-Schedulern passt die Lernrate während des Trainings dynamisch an. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell über Minima hinausschießt, und die Stabilität verbessern. Beim Training von YOLO11 ist die
lrf
Parameter hilft bei der Steuerung des Lernraten-Schedulers, indem er die endgültige Lernrate als einen Bruchteil der anfänglichen Rate festlegt. - Verteiltes Training: Für die Verarbeitung großer Datensätze kann verteiltes Training entscheidend sein. Sie können die Trainingszeit verkürzen, indem Sie die Trainingslast auf mehrere GPUs oder Rechner verteilen. Dieser Ansatz ist besonders wertvoll für Projekte im Unternehmensmaßstab mit erheblichen Rechenressourcen.
Die Anzahl der zu trainierenden Epochen
Beim Trainieren eines Modells bezieht sich eine Epoche auf einen vollständigen Durchlauf durch den gesamten Trainingsdatensatz. Während einer Epoche verarbeitet das Modell jedes Beispiel im Trainingssatz einmal und aktualisiert seine Parameter basierend auf dem Lernalgorithmus. In der Regel sind mehrere Epochen erforderlich, damit das Modell seine Parameter im Laufe der Zeit erlernen und verfeinern kann.
Eine häufig gestellte Frage ist, wie man die Anzahl der Epochen für das Training des Modells bestimmt. Ein guter Ausgangspunkt sind 300 Epochen. Wenn das Modell frühzeitig überangepasst wird, können Sie die Anzahl der Epochen reduzieren. Wenn nach 300 Epochen keine Überanpassung auftritt, können Sie das Training auf 600, 1200 oder mehr Epochen ausdehnen.
Die ideale Anzahl von Epochen kann jedoch je nach Größe Ihres Datensatzes und Ihren Projektzielen variieren. Größere Datensätze erfordern möglicherweise mehr Epochen, damit das Modell effektiv lernen kann, während kleinere Datensätze möglicherweise weniger Epochen benötigen, um eine Überanpassung zu vermeiden. In Bezug auf YOLO11 können Sie die epochs
Parameter in Ihrem Trainingsskript.
Vorzeitiges Stoppen
Vorzeitiges Stoppen ist eine wertvolle Technik zur Optimierung des Modelltrainings. Durch die Überwachung der Validierungsleistung können Sie das Training stoppen, sobald sich das Modell nicht mehr verbessert. Sie können Rechenressourcen sparen und eine Überanpassung verhindern.
Der Prozess beinhaltet das Festlegen eines Geduldsparameters, der bestimmt, wie viele Epochen auf eine Verbesserung der Validierungsmetriken gewartet werden soll, bevor das Training gestoppt wird. Wenn sich die Leistung des Modells innerhalb dieser Epochen nicht verbessert, wird das Training gestoppt, um Zeit und Ressourcen zu sparen.
Für YOLO11 können Sie Early Stopping aktivieren, indem Sie den Parameter 'patience' in Ihrer Trainingskonfiguration festlegen. Zum Beispiel: patience=5
bedeutet, dass das Training gestoppt wird, wenn es über 5 aufeinanderfolgende Epochen keine Verbesserung der Validierungsmetriken gibt. Die Verwendung dieser Methode stellt sicher, dass der Trainingsprozess effizient bleibt und eine optimale Leistung ohne übermäßige Berechnungen erzielt.
Die Wahl zwischen Cloud- und lokalem Training
Es gibt zwei Möglichkeiten, Ihr Modell zu trainieren: Cloud-Training und lokales Training.
Cloud-Training bietet Skalierbarkeit und leistungsstarke Hardware und ist ideal für die Verarbeitung großer Datensätze und komplexer Modelle. Plattformen wie Google Cloud, AWS und Azure bieten On-Demand-Zugriff auf hochleistungsfähige GPUs und TPUs, wodurch die Trainingszeiten beschleunigt und Experimente mit größeren Modellen ermöglicht werden. Cloud-Training kann jedoch teuer sein, insbesondere über längere Zeiträume, und die Datenübertragung kann die Kosten und die Latenz erhöhen.
Lokales Training bietet mehr Kontrolle und Anpassungsmöglichkeiten, sodass Sie Ihre Umgebung an spezifische Bedürfnisse anpassen und laufende Cloud-Kosten vermeiden können. Es kann für langfristige Projekte wirtschaftlicher sein, und da Ihre Daten vor Ort bleiben, ist es sicherer. Lokale Hardware kann jedoch Ressourcenbeschränkungen aufweisen und Wartung erfordern, was zu längeren Trainingszeiten für große Modelle führen kann.
Auswahl eines Optimierers
Ein Optimierer ist ein Algorithmus, der die Gewichte Ihres neuronalen Netzes anpasst, um die Loss-Funktion zu minimieren, die misst, wie gut das Modell funktioniert. Einfacher ausgedrückt, der Optimierer hilft dem Modell zu lernen, indem er seine Parameter anpasst, um Fehler zu reduzieren. Die Wahl des richtigen Optimierers wirkt sich direkt darauf aus, wie schnell und genau das Modell lernt.
Sie können auch Optimiererparameter feinabstimmen, um die Modellleistung zu verbessern. Das Anpassen der Lernrate bestimmt die Größe der Schritte beim Aktualisieren von Parametern. Für die Stabilität können Sie mit einer moderaten Lernrate beginnen und diese im Laufe der Zeit schrittweise verringern, um das langfristige Lernen zu verbessern. Darüber hinaus bestimmt das Festlegen des Momentums, wie viel Einfluss vergangene Aktualisierungen auf aktuelle Aktualisierungen haben. Ein üblicher Wert für das Momentum liegt bei etwa 0,9. Im Allgemeinen bietet dies ein gutes Gleichgewicht.
Gängige Optimierer
Verschiedene Optimierer haben unterschiedliche Stärken und Schwächen. Werfen wir einen Blick auf einige gängige Optimierer.
-
SGD (Stochastic Gradient Descent):
- Aktualisiert die Modellparameter anhand des Gradienten der Verlustfunktion in Bezug auf die Parameter.
- Einfach und effizient, kann aber langsam konvergieren und in lokalen Minima stecken bleiben.
-
Adam (Adaptive Moment Estimation):
- Kombiniert die Vorteile von SGD mit Momentum und RMSProp.
- Passt die Lernrate für jeden Parameter basierend auf Schätzungen der ersten und zweiten Momente der Gradienten an.
- Gut geeignet für verrauschte Daten und spärliche Gradienten.
- Effizient und erfordert im Allgemeinen weniger Feinabstimmung, was es zu einem empfehlenswerten Optimierer für YOLO11 macht.
-
RMSProp (Root Mean Square Propagation):
- Passt die Lernrate für jeden Parameter an, indem der Gradient durch einen gleitenden Durchschnitt der Größenordnung der letzten Gradienten dividiert wird.
- Hilft bei der Behandlung des Problems des verschwindenden Gradienten und ist wirksam für rekurrente neuronale Netze.
Für YOLO11 ist die optimizer
Parameter können Sie aus verschiedenen Optimierern wählen, darunter SGD, Adam, AdamW, NAdam, RAdam und RMSProp, oder Sie können ihn auf auto
zur automatischen Auswahl basierend auf der Modellkonfiguration.
Kontakt zur Community
Teil einer Community von Computer-Vision-Enthusiasten zu sein, kann Ihnen helfen, Probleme zu lösen und schneller zu lernen. Hier sind einige Möglichkeiten, sich zu vernetzen, Hilfe zu erhalten und Ideen auszutauschen.
Community-Ressourcen
- GitHub-Probleme: Besuchen Sie das YOLO11 GitHub-Repository und nutzen Sie den Issues-Tab, um Fragen zu stellen, Fehler zu melden und neue Funktionen vorzuschlagen. Die Community und die Betreuer sind sehr aktiv und hilfsbereit.
- Ultralytics Discord Server: Treten Sie dem Ultralytics Discord Server bei, um sich mit anderen Benutzern und Entwicklern auszutauschen, Unterstützung zu erhalten und Ihre Erfahrungen zu teilen.
Offizielle Dokumentation
- Ultralytics YOLO11 Dokumentation: Sehen Sie sich die offizielle YOLO11 Dokumentation für detaillierte Anleitungen und hilfreiche Tipps zu verschiedenen Computer-Vision-Projekten an.
Die Nutzung dieser Ressourcen wird Ihnen helfen, Herausforderungen zu meistern und mit den neuesten Trends und Praktiken in der Computer-Vision-Community auf dem Laufenden zu bleiben.
Wichtige Erkenntnisse
Das Trainieren von Computer-Vision-Modellen umfasst das Befolgen bewährter Verfahren, das Optimieren Ihrer Strategien und das Lösen von Problemen, sobald diese auftreten. Techniken wie das Anpassen von Batch-Größen, das gemischte Precision-Training und das Starten mit vortrainierten Gewichten können die Leistung Ihrer Modelle verbessern und das Training beschleunigen. Methoden wie das Teilmengentraining und das vorzeitige Stoppen helfen Ihnen, Zeit und Ressourcen zu sparen. Wenn Sie mit der Community in Verbindung bleiben und sich über neue Trends auf dem Laufenden halten, können Sie Ihre Fähigkeiten im Modelltraining kontinuierlich verbessern.
FAQ
Wie kann ich die GPU-Auslastung verbessern, wenn ich einen großen Datensatz mit Ultralytics YOLO trainiere?
Um die GPU-Auslastung zu verbessern, setze den batch_size
Parameter in Ihrer Trainingskonfiguration auf die maximale Größe, die von Ihrer GPU unterstützt wird. Dies stellt sicher, dass Sie die Fähigkeiten der GPU voll ausschöpfen und die Trainingszeit verkürzen. Wenn Sie auf Speicherfehler stoßen, reduzieren Sie die Batch-Größe schrittweise, bis das Training reibungslos läuft. Für YOLO11, setzen Sie batch=-1
in Ihrem Trainingsskript automatisch die optimale Batch-Größe für eine effiziente Verarbeitung bestimmt. Weitere Informationen finden Sie im Abschnitt Trainingskonfiguration.
Was ist Mixed-Precision-Training und wie aktiviere ich es in YOLO11?
Das Training mit gemischter Präzision verwendet sowohl 16-Bit- (FP16) als auch 32-Bit-Gleitkommatypen (FP32), um die Berechnungsgeschwindigkeit und Präzision auszugleichen. Dieser Ansatz beschleunigt das Training und reduziert den Speicherverbrauch, ohne die Modell- Genauigkeit. Um das Training mit gemischter Präzision in YOLO11 zu aktivieren, setzen Sie den Wert für amp
Parameter auf True
in Ihrer Trainingskonfiguration. Dies aktiviert das Automatic Mixed Precision (AMP) Training. Weitere Informationen zu dieser Optimierungstechnik finden Sie im Abschnitt Trainingskonfiguration.
Wie verbessert Multiscale-Training die YOLO11-Modellleistung?
Das Multi-Skalen-Training verbessert die Modellleistung, indem es mit Bildern unterschiedlicher Größe trainiert wird, wodurch das Modell besser über verschiedene Skalen und Entfernungen hinweg generalisieren kann. In YOLO11 können Sie das Multi-Skalen-Training aktivieren, indem Sie die scale
Parameter in der Trainingskonfiguration. Zum Beispiel, scale=0.5
reduziert die Bildgröße um die Hälfte, während scale=2.0
verdoppelt sie. Diese Technik simuliert Objekte in verschiedenen Entfernungen, wodurch das Modell in verschiedenen Szenarien robuster wird. Für Einstellungen und weitere Details, schauen Sie sich die Trainingskonfiguration.
Wie kann ich vortrainierte Gewichte verwenden, um das Training in YOLO11 zu beschleunigen?
Die Verwendung vortrainierter Gewichte kann das Training erheblich beschleunigen und die Modellgenauigkeit verbessern, indem ein Modell genutzt wird, das bereits mit grundlegenden visuellen Merkmalen vertraut ist. In YOLO11 setzen Sie einfach den pretrained
Parameter auf True
oder geben Sie einen Pfad zu Ihren benutzerdefinierten, vortrainierten Gewichten in der Trainingskonfiguration an. Diese Methode, die als Transferlernen bezeichnet wird, ermöglicht es, Modelle, die auf großen Datensätzen trainiert wurden, effektiv an Ihre spezifische Anwendung anzupassen. Erfahren Sie mehr über die Verwendung vortrainierter Gewichte und ihre Vorteile in der Anleitung zur Trainingskonfiguration.
Was ist die empfohlene Anzahl von Epochen für das Training eines Modells und wie stelle ich diese in YOLO11 ein?
Die Anzahl der Epochen bezieht sich auf die vollständigen Durchläufe durch den Trainingsdatensatz während des Modelltrainings. Ein typischer Ausgangspunkt sind 300 Epochen. Wenn Ihr Modell frühzeitig überangepasst ist, können Sie die Anzahl reduzieren. Wenn umgekehrt keine Überanpassung beobachtet wird, können Sie das Training auf 600, 1200 oder mehr Epochen ausdehnen. Um dies in YOLO11 einzustellen, verwenden Sie die epochs
Parameter in Ihrem Trainingsskript. Für weitere Ratschläge zur Bestimmung der idealen Anzahl von Epochen lesen Sie diesen Abschnitt über Anzahl der Epochen.