Link to this sectionBest Practices und Tipps für das Training von Machine-Learning-Modellen#
Link to this sectionEinführung#
Einer der wichtigsten Schritte bei der Arbeit an einem Computer-Vision-Projekt ist das Modelltraining. Bevor du diesen Schritt erreichst, musst du deine Ziele definieren sowie deine Daten sammeln und annotieren. Nachdem du die Daten vorverarbeitet hast, um sicherzustellen, dass sie sauber und konsistent sind, kannst du mit dem Training deines Modells fortfahren.
Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision
Was ist also Modelltraining? Modelltraining ist der Prozess, bei dem deinem Modell beigebracht wird, visuelle Muster zu erkennen und Vorhersagen auf Basis deiner Daten zu treffen. Dies hat direkten Einfluss auf die Leistung und Genauigkeit deiner Anwendung. In diesem Leitfaden behandeln wir Best Practices, Optimierungstechniken und Tipps zur Fehlerbehebung, damit du deine Computer-Vision-Modelle effektiv trainieren kannst.
Link to this sectionSo trainierst du ein Machine-Learning-Modell#
Ein Computer-Vision-Modell wird trainiert, indem seine internen Parameter angepasst werden, um Fehler zu minimieren. Zu Beginn erhält das Modell einen großen Satz beschrifteter Bilder. Es trifft Vorhersagen darüber, was auf diesen Bildern zu sehen ist, und diese 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 entfernt sind.
Während des Trainings trifft das Modell iterativ Vorhersagen, berechnet Fehler und aktualisiert seine Parameter durch einen Prozess namens Backpropagation. In diesem Prozess passt das Modell seine internen Parameter (Weights und Biases) an, um die Fehler zu reduzieren. Durch die mehrmalige Wiederholung dieses Zyklus verbessert das Modell allmählich seine Genauigkeit. Mit 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, semantische Segmentierung und Bildklassifizierung. Das ultimative Ziel ist es, ein Modell zu erstellen, das sein Wissen auf neue, unbekannte Bilder verallgemeinern kann, damit es visuelle Daten in realen Anwendungen präzise verstehen kann.
Nachdem wir nun wissen, was hinter den Kulissen beim Modelltraining passiert, schauen wir uns Punkte an, die beim Trainieren eines Modells zu berücksichtigen sind.
Link to this sectionTraining auf großen Datensätzen#
Es gibt einige verschiedene Aspekte, die du berücksichtigen solltest, wenn du planst, einen großen Datensatz zum Trainieren eines Modells zu verwenden. Du kannst zum Beispiel die Batch-Größe anpassen, die GPU-Auslastung steuern, sich für Multiscale-Training entscheiden usw. Lass uns jede dieser Optionen im Detail durchgehen.
Link to this sectionBatch-Größe und GPU-Auslastung#
Beim Training von Modellen auf großen Datensätzen ist die effiziente Nutzung deiner GPU entscheidend. Die Batch-Größe ist ein wichtiger Faktor. Sie ist die Anzahl der Datenbeispiele, die ein Machine-Learning-Modell in einem einzigen Trainingsschritt verarbeitet. Wenn du die von deiner GPU unterstützte maximale Batch-Größe verwendest, kannst du deren Kapazitäten voll ausschöpfen und die benötigte Zeit für das Modelltraining verkürzen. Du solltest jedoch vermeiden, dass der GPU-Speicher überläuft. Wenn Speicherfehler auftreten, reduziere die Batch-Größe schrittweise, bis das Modell reibungslos trainiert.
Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉
In Bezug auf YOLO26 kannst du den Parameter batch in der Trainingskonfiguration an deine GPU-Kapazität anpassen. Wenn du batch=-1 in deinem Trainingsskript einstellst, wird zudem automatisch die Batch-Größe bestimmt, die basierend auf den Fähigkeiten deines Geräts effizient verarbeitet werden kann. Durch die Feinabstimmung der Batch-Größe kannst du deine GPU-Ressourcen optimal nutzen und den gesamten Trainingsprozess verbessern.
Link to this sectionSubset-Training#
Subset-Training ist eine intelligente Strategie, bei der dein Modell auf einer kleineren Datenmenge trainiert wird, die den größeren Datensatz repräsentiert. Dies kann Zeit und Ressourcen sparen, insbesondere bei der ersten Modellentwicklung und beim Testen. Wenn du unter Zeitdruck stehst oder mit verschiedenen Modellkonfigurationen experimentierst, ist Subset-Training eine gute Option.
Bei YOLO26 kannst du Subset-Training einfach über den Parameter fraction implementieren. Mit diesem Parameter legst du fest, welcher Bruchteil deines Datensatzes für das Training verwendet werden soll. Wenn du beispielsweise fraction=0.1 einstellst, wird dein Modell auf 10 % der Daten trainiert. Du kannst diese Technik für schnelle Iterationen und zum Abstimmen deines Modells nutzen, bevor du dich dazu entscheidest, das Modell mit dem vollständigen Datensatz zu trainieren. Subset-Training hilft dir, schnell Fortschritte zu machen und potenzielle Probleme frühzeitig zu erkennen.
Link to this sectionMultiscale-Training#
Multiscale-Training ist eine Technik, die die Verallgemeinerungsfähigkeit deines Modells verbessert, indem es auf Bildern unterschiedlicher Größe trainiert wird. Dein Modell kann lernen, Objekte in verschiedenen Größen und Entfernungen zu erkennen und robuster zu werden.
Wenn du beispielsweise YOLO26 trainierst, kannst du das Multiscale-Training durch Einstellen des Parameters scale aktivieren. Dieser Parameter passt die Größe der Trainingsbilder um einen bestimmten Faktor an und simuliert Objekte in unterschiedlichen Entfernungen. Die Einstellung scale=0.5 zoomt Trainingsbilder während des Trainings zufällig um einen Faktor zwischen 0,5 und 1,5. Die Konfiguration dieses Parameters ermöglicht es deinem Modell, eine Vielzahl von Bildgrößen zu erleben und seine Erkennungsfähigkeiten über verschiedene Objektgrößen und Szenarien hinweg zu verbessern.
Ultralytics unterstützt auch Multiscale-Training für die Bildgröße über den Parameter multi_scale. Anders als bei scale, das Bilder zoomt und dann wieder auf imgsz padded/croppt, ändert multi_scale bei jedem Batch das imgsz selbst (gerundet auf die Modell-Stride). Beispielsweise wird bei imgsz=640 und multi_scale=0.25 die Trainingsgröße in Stride-Schritten von 480 bis 800 gesampelt (z. B. 480, 512, 544, ..., 800), während multi_scale=0.0 eine feste Größe beibehält.
Link to this sectionCaching#
Caching ist eine wichtige Technik, um die Effizienz beim Training von Machine-Learning-Modellen zu verbessern. Durch das Speichern vorverarbeiteter Bilder im Arbeitsspeicher reduziert Caching die Zeit, die die GPU auf das Laden von Daten von der Festplatte warten muss. Das Modell kann kontinuierlich Daten empfangen, ohne Verzögerungen durch Festplatten-I/O-Operationen.
Das Caching kann beim Training von YOLO26 über den Parameter cache gesteuert werden:
cache=True: Speichert Dataset-Bilder im RAM, bietet die schnellste Zugriffsgeschwindigkeit, jedoch auf Kosten einer höheren Speicherauslastung.cache='disk': Speichert die Bilder auf der Festplatte; langsamer als RAM, aber schneller als das jedes Mal neu Laden der Daten.cache=False: Deaktiviert das Caching und verlässt sich vollständig auf Festplatten-I/O, was die langsamste Option ist.
Link to this sectionGemischtes Präzisionstraining (Mixed Precision Training)#
Gemischtes Präzisionstraining verwendet sowohl 16-Bit- (FP16) als auch 32-Bit-Gleitkommatypen (FP32). Die Stärken von FP16 und FP32 werden genutzt, indem FP16 für schnellere Berechnungen verwendet wird und FP32 dort, wo Präzision erforderlich ist. Die meisten Operationen des neuronalen Netzwerks werden in FP16 durchgeführt, um von schnelleren Berechnungen und geringerem Speicherbedarf zu profitieren. Eine Master-Kopie der Gewichte des Modells wird jedoch in FP32 aufbewahrt, um die Genauigkeit während der Gewichtungsaktualisierungsschritte zu gewährleisten. So kannst du größere Modelle oder größere Batch-Größen innerhalb derselben Hardware-Beschränkungen handhaben.
Um gemischtes Präzisionstraining zu implementieren, musst du deine Trainingsskripte anpassen und sicherstellen, dass deine Hardware (z. B. GPUs) dies unterstützt. Viele moderne Deep-Learning-Frameworks wie PyTorch und TensorFlow bieten integrierte Unterstützung für gemischte Präzision.
Gemischtes Präzisionstraining ist bei der Arbeit mit YOLO26 unkompliziert. Du kannst das amp-Flag in deiner Trainingskonfiguration verwenden. Die Einstellung amp=True aktiviert das Automatic Mixed Precision (AMP)-Training. Gemischtes Präzisionstraining ist eine einfache, aber effektive Methode, um deinen Modelltrainingsprozess zu optimieren.
Link to this sectionVortrainierte Gewichte#
Die Verwendung vortrainierter Gewichte ist eine kluge Methode, um den Trainingsprozess deines Modells zu beschleunigen. Vortrainierte Gewichte stammen von Modellen, die bereits auf großen Datensätzen trainiert wurden, und geben deinem Modell einen Vorsprung. Transfer Learning passt vortrainierte Modelle an neue, verwandte Aufgaben an. Beim Fine-Tuning eines vortrainierten Modells beginnt man mit diesen Gewichten und setzt das Training auf deinem spezifischen Datensatz fort. Diese Trainingsmethode führt zu kürzeren Trainingszeiten und oft zu einer besseren Leistung, da das Modell mit einem fundierten Verständnis grundlegender Merkmale startet.
Der Parameter pretrained macht Transfer Learning mit YOLO26 einfach. Die Einstellung pretrained=True verwendet die standardmäßigen vortrainierten Gewichte, oder du kannst einen Pfad zu einem benutzerdefinierten vortrainierten Modell angeben. Die effektive Nutzung vortrainierter Gewichte und Transfer Learning steigert die Fähigkeiten deines Modells und reduziert die Trainingskosten.
Link to this sectionWeitere Techniken, die bei der Handhabung großer Datensätze zu berücksichtigen sind#
Es gibt ein paar weitere Techniken, die bei der Handhabung eines großen Datensatzes zu berücksichtigen sind:
- Learning Rate-Scheduler: Die Implementierung von Learning Rate Schedulern passt die Lernrate während des Trainings dynamisch an. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell Minima überspringt, und die Stabilität verbessern. Beim Training von YOLO26 hilft der Parameter
lrfdabei, das Scheduling der Lernrate zu verwalten, indem die finale Lernrate als Bruchteil der anfänglichen Rate festgelegt wird. - Verteiltes Training (Distributed Training): Für die Handhabung großer Datensätze kann verteiltes Training bahnbrechend sein. Du kannst die Trainingszeit verkürzen, indem du die Trainingslast auf mehrere GPUs oder Maschinen verteilst. Dieser Ansatz ist besonders wertvoll für Projekte in Unternehmensgröße mit erheblichen Rechenressourcen.
Link to this sectionDie Anzahl der Epochen für das Training#
Beim Training 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 Trainingsset einmal und aktualisiert seine Parameter auf Basis des Lernalgorithmus. Mehrere Epochen sind in der Regel erforderlich, damit das Modell lernen und seine Parameter im Laufe der Zeit verfeinern kann.
Eine häufige Frage ist, wie man die Anzahl der Epochen bestimmt, für die das Modell trainiert werden soll. Ein guter Ausgangspunkt sind 300 Epochen. Wenn das Modell zu früh überpasst (overfitting), kannst du die Anzahl der Epochen reduzieren. Wenn nach 300 Epochen kein Overfitting auftritt, kannst du das Training auf 600, 1200 oder mehr Epochen ausdehnen.
Die ideale Anzahl der Epochen kann jedoch je nach Größe deines Datensatzes und deinen 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 Overfitting zu vermeiden. In Bezug auf YOLO26 kannst du den Parameter epochs in deinem Trainingsskript festlegen.
Link to this sectionEarly Stopping#
Early Stopping ist eine wertvolle Technik zur Optimierung des Modelltrainings. Durch die Überwachung der Validierungsleistung kannst du das Training abbrechen, sobald sich das Modell nicht mehr verbessert. So sparst du Rechenressourcen und verhinderst Overfitting.
Der Prozess beinhaltet das Einstellen eines Patience-Parameters, 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 keine Zeit und Ressourcen zu verschwenden.
Für YOLO26 kannst du Early Stopping aktivieren, indem du den Patience-Parameter in deiner Trainingskonfiguration festlegst. Beispielsweise bedeutet patience=5, dass das Training stoppt, wenn es 5 aufeinanderfolgende Epochen lang keine Verbesserung der Validierungsmetriken gibt. Die Verwendung dieser Methode stellt sicher, dass der Trainingsprozess effizient bleibt und ohne übermäßige Berechnung eine optimale Leistung erzielt wird.
Link to this sectionDie Wahl zwischen Cloud- und lokalem Training#
Es gibt zwei Optionen für das Training deines Modells: Cloud-Training und lokales Training.
Cloud-Training bietet Skalierbarkeit sowie leistungsstarke Hardware und ist ideal für die Handhabung großer Datensätze und komplexer Modelle. Plattformen wie Google Cloud, AWS und Azure bieten On-Demand-Zugriff auf Hochleistungs-GPUs und TPUs, was Trainingszeiten verkürzt und Experimente mit größeren Modellen ermöglicht. Cloud-Training kann jedoch teuer sein, insbesondere über lange Zeiträume, und Datentransfers können Kosten und Latenzzeiten erhöhen.
Lokales Training bietet mehr Kontrolle und Anpassungsmöglichkeiten, sodass du deine Umgebung auf spezifische Bedürfnisse zuschneiden und laufende Cloud-Kosten vermeiden kannst. Es kann für langfristige Projekte wirtschaftlicher sein, und da deine Daten lokal bleiben, ist es sicherer. Lokale Hardware kann jedoch Ressourcenbeschränkungen aufweisen und Wartung erfordern, was bei großen Modellen zu längeren Trainingszeiten führen kann.
Link to this sectionAuswahl eines Optimierers#
Ein Optimierer ist ein Algorithmus, der die Gewichte deines neuronalen Netzwerks anpasst, um die Verlustfunktion (Loss Function) zu minimieren, die misst, wie gut das Modell funktioniert. Einfach ausgedrückt hilft der Optimierer dem Modell beim Lernen, indem er dessen Parameter optimiert, um Fehler zu reduzieren. Die Wahl des richtigen Optimierers wirkt sich direkt darauf aus, wie schnell und präzise das Modell lernt.
Du kannst auch Optimierer-Parameter feinabstimmen, um die Modellleistung zu verbessern. Durch das Anpassen der Lernrate legst du die Schrittgröße bei der Aktualisierung von Parametern fest. Für Stabilität beginnst du möglicherweise mit einer moderaten Lernrate und senkst diese im Laufe der Zeit allmählich, um das langfristige Lernen zu verbessern. Außerdem bestimmt die Einstellung des Momentums, welchen Einfluss vergangene Aktualisierungen auf aktuelle haben. Ein üblicher Wert für das Momentum liegt bei etwa 0,9. Dies bietet im Allgemeinen ein gutes Gleichgewicht.
Link to this sectionGä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 Modellparameter unter Verwendung des Gradienten der Verlustfunktion in Bezug auf die Parameter.
- Einfach und effizient, kann aber langsam konvergieren und möglicherweise 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 dünn besetzte Gradienten.
- Effizient und erfordert im Allgemeinen weniger Tuning, was ihn zu einem empfohlenen Optimierer für YOLO26 macht.
-
RMSProp (Root Mean Square Propagation):
- Passt die Lernrate für jeden Parameter an, indem der Gradient durch einen gleitenden Durchschnitt der Größen der letzten Gradienten geteilt wird.
- Hilft bei der Handhabung des Problems verschwindender Gradienten und ist effektiv für rekurrente neuronale Netzwerke.
-
MuSGD (Muon + SGD hybrid):
- Kombiniert SGD-artige Aktualisierungen mit von Muon inspiriertem Verhalten für verbesserte Stabilität beim Training im großen Maßstab.
- Eine gute Wahl, wenn du eine SGD-ähnliche Verallgemeinerung wünschst, aber eine glattere Konvergenz als bei herkömmlichem SGD benötigst.
- Besonders relevant für YOLO26 training recipes; falls du unsicher bist, beginne mit
optimizer=autound vergleiche es mit MuSGD auf deinem Datensatz.
Für YOLO26 lässt dich der Parameter optimizer aus verschiedenen Optimierern wählen, darunter SGD, MuSGD, Adam, AdamW, NAdam, RAdam und RMSProp, oder du kannst ihn für eine automatische Auswahl basierend auf der Modellkonfiguration auf auto setzen.
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDLink to this sectionVerbindung mit der Community#
Teil einer Community von Computer-Vision-Enthusiasten zu sein, kann dir helfen, Probleme zu lösen und schneller zu lernen. Hier sind einige Möglichkeiten, sich zu vernetzen, Hilfe zu bekommen und Ideen auszutauschen.
Link to this sectionCommunity-Ressourcen#
- GitHub Issues: Besuche das YOLO26 GitHub-Repository und nutze den Issues-Tab, um Fragen zu stellen, Fehler zu melden und neue Funktionen vorzuschlagen. Die Community und die Maintainer sind sehr aktiv und bereit, zu helfen.
- Ultralytics Discord-Server: Tritt dem Ultralytics Discord-Server bei, um dich mit anderen Nutzern und Entwicklern auszutauschen, Support zu erhalten und deine Erfahrungen zu teilen.
Link to this sectionOffizielle Dokumentation#
- Ultralytics YOLO26 Dokumentation: Sieh dir die offizielle YOLO26-Dokumentation an, um detaillierte Leitfäden und hilfreiche Tipps zu verschiedenen Computer-Vision-Projekten zu erhalten.
Die Nutzung dieser Ressourcen wird dir helfen, Herausforderungen zu lösen und bei den neuesten Trends und Praktiken in der Computer-Vision-Community auf dem Laufenden zu bleiben.
Link to this sectionWichtige Erkenntnisse#
Das Training von Computer-Vision-Modellen umfasst die Einhaltung bewährter Methoden, die Optimierung deiner Strategien und das Lösen von Problemen bei ihrem Auftreten. Techniken wie das Anpassen der Batch-Größen, Training mit gemischter Präzision und der Start mit vortrainierten Gewichten können dazu führen, dass deine Modelle besser funktionieren und schneller trainieren. Methoden wie Subset-Training und Early Stopping helfen dir, Zeit und Ressourcen zu sparen. Wenn du mit der Community in Verbindung bleibst und dich über neue Trends auf dem Laufenden hältst, kannst du deine Modelltrainingsfähigkeiten stetig verbessern.
Link to this sectionFAQ#
Link to this sectionWie kann ich die GPU-Auslastung beim Training eines großen Datensatzes mit Ultralytics YOLO verbessern?#
Um die GPU-Auslastung zu verbessern, setze den batch-Parameter in deiner Trainingskonfiguration auf die maximale Größe, die von deiner GPU unterstützt wird. Dies stellt sicher, dass du die Kapazitäten deiner GPU voll ausschöpfst, was die Trainingszeit verkürzt. Falls Speicherfehler auftreten, reduziere die Batch-Größe schrittweise, bis das Training reibungslos läuft. Für YOLO26 bestimmt die Einstellung batch=-1 in deinem Trainingsskript automatisch die optimale Batch-Größe für eine effiziente Verarbeitung. Weitere Informationen findest du in der Trainingskonfiguration.
Link to this sectionWas ist gemischtes Präzisionstraining und wie aktiviere ich es in YOLO26?#
Gemischtes Präzisionstraining nutzt sowohl 16-Bit- (FP16) als auch 32-Bit-Gleitkommatypen (FP32), um Rechengeschwindigkeit und Präzision auszugleichen. Dieser Ansatz beschleunigt das Training und reduziert den Speicherbedarf, ohne die Modell-Genauigkeit zu beeinträchtigen. Um gemischtes Präzisionstraining in YOLO26 zu aktivieren, setze den Parameter amp in deiner Trainingskonfiguration auf True. Dies aktiviert das Automatic Mixed Precision (AMP)-Training. Weitere Details zu dieser Optimierungstechnik findest du in der Trainingskonfiguration.
Link to this sectionWie verbessert Multiscale-Training die Leistung des YOLO26-Modells?#
Multiscale-Training verbessert die Modellleistung durch das Training auf Bildern unterschiedlicher Größe, was es dem Modell ermöglicht, über verschiedene Skalen und Entfernungen hinweg besser zu verallgemeinern. In YOLO26 kannst du das Multiscale-Training aktivieren, indem du den Parameter scale in der Trainingskonfiguration einstellst. Beispielsweise sampelt scale=0.5 einen Zoom-Faktor zwischen 0,5 und 1,5 und padded/croppt dann wieder auf imgsz. Diese Technik simuliert Objekte in unterschiedlichen Entfernungen und macht das Modell in verschiedenen Szenarien robuster. Für Einstellungen und weitere Details schau in die Trainingskonfiguration.
Link to this sectionWie kann ich vortrainierte Gewichte verwenden, um das Training in YOLO26 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 YOLO26 setze einfach den Parameter pretrained auf True oder gib einen Pfad zu deinen benutzerdefinierten vortrainierten Gewichten in der Trainingskonfiguration an. Diese Methode, Transfer Learning genannt, ermöglicht es, auf großen Datensätzen trainierte Modelle effektiv an deine spezifische Anwendung anzupassen. Erfahre mehr über die Verwendung vortrainierter Gewichte und deren Vorteile im Leitfaden zur Trainingskonfiguration.
Link to this sectionWas ist die empfohlene Anzahl an Epochen für das Training eines Modells und wie stelle ich das in YOLO26 ein?#
Die Anzahl der Epochen bezieht sich auf die vollständigen Durchläufe durch den Trainingsdatensatz während des Modelltrainings. Ein typischer Startpunkt sind 300 Epochen. Wenn dein Modell frühzeitig überpasst, kannst du die Anzahl reduzieren. Alternativ, wenn kein Overfitting beobachtet wird, könntest du das Training auf 600, 1200 oder mehr Epochen ausdehnen. Um dies in YOLO26 einzustellen, verwende den Parameter epochs in deinem Trainingsskript. Für zusätzlichen Rat zur Bestimmung der idealen Anzahl an Epochen beziehe dich auf diesen Abschnitt über Anzahl der Epochen.