Ultralytics YOLO27:
Get Started

Bewährte Verfahren und Tipps zum maschinellen Lernen für das Modelltraining#

Einfü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 festlegen und deine Daten erfassen und annotieren. Nachdem du die Daten vorverarbeitet und sichergestellt hast, dass sie sauber und konsistent sind, kannst du mit dem Training deines Modells beginnen.

Beim Modelltraining lernt dein Modell, visuelle Muster zu erkennen und anhand deiner Daten Vorhersagen zu treffen. Dieser Prozess beeinflusst unmittelbar die Genauigkeit deiner Anwendung. Dieser Leitfaden behandelt bewährte Verfahren, Optimierungstechniken und Tipps zur Fehlerbehebung, damit du deine Computer-Vision-Modelle effektiv trainieren kannst.



Ansehen: Tipps zum Modelltraining | Umgang mit großen Datensätzen | Batchgröße, GPU-Auslastung und Mixed Precision

So trainierst du ein Machine-Learning-Modell#

Ein Computer-Vision-Modell wird trainiert, indem seine internen Parameter angepasst werden, um Fehler zu minimieren. Zunächst erhält das Modell eine große Menge annotierter Bilder. Es erstellt Vorhersagen darüber, was auf diesen Bildern zu sehen ist. Diese Vorhersagen werden mit den tatsächlichen Labels oder Inhalten verglichen, um Fehler zu berechnen. Die Fehler zeigen, wie stark die Vorhersagen des Modells von den tatsächlichen Werten abweichen.

Während des Trainings erstellt das Modell iterativ Vorhersagen, berechnet Fehler und aktualisiert seine Parameter in einem als Backpropagation bezeichneten Prozess. Dabei passt das Modell seine internen Parameter (Gewichte und Biases) an, um die Fehler zu verringern. Durch viele Wiederholungen dieses Zyklus verbessert sich die Genauigkeit des Modells schrittweise. Mit der Zeit lernt es, komplexe Muster wie Formen, Farben und Texturen zu erkennen.

What is Backpropagation?

Durch diesen Lernprozess kann das Computer-Vision-Modell verschiedene Aufgaben ausführen, darunter Objekterkennung, Instanzsegmentierung, semantische Segmentierung und Bildklassifizierung. Das übergeordnete Ziel ist ein Modell, das sein Wissen auf neue, bisher unbekannte Bilder übertragen kann, um visuelle Daten in realen Anwendungen zuverlässig zu verstehen.

Nachdem wir nun wissen, was beim Training eines Modells im Hintergrund geschieht, sehen wir uns an, was beim Modelltraining zu beachten ist.

Training mit großen Datensätzen#

Wenn du ein Modell mit einem großen Dataset trainieren möchtest, solltest du mehrere Aspekte berücksichtigen. Du kannst zum Beispiel die Batchgröße anpassen, die GPU-Auslastung steuern oder Multiskalen-Training verwenden. Sehen wir uns diese Möglichkeiten im Detail an.

Batchgröße und GPU-Auslastung#

Beim Training von Modellen mit großen Datensätzen ist eine effiziente Nutzung deiner GPU entscheidend. Die Batchgröße ist dabei ein wichtiger Faktor. Sie gibt an, wie viele Datenbeispiele ein Machine-Learning-Modell in einem einzelnen Trainingsschritt verarbeitet. Wenn du die von deiner GPU unterstützte maximale Batchgröße verwendest, kannst du ihre Fähigkeiten voll ausschöpfen und die Trainingszeit verkürzen. Achte jedoch darauf, dass der GPU-Speicher nicht ausgeht. Falls Speicherfehler auftreten, verringere die Batchgröße schrittweise, bis das Modell reibungslos trainiert.



Ansehen: So verwendest du Batch-Inferenz mit Ultralytics YOLO26 | Beschleunige die Objekterkennung in Python 🎉

Bei YOLO26 kannst du den Parameter batch in den Argumenten des Train-Modus entsprechend der Kapazität deiner GPU einstellen. Bei einem einzelnen Beschleuniger profiliert batch=-1 das Modell und wählt eine Batchgröße, die auf ungefähr 60 % Speicherauslastung abzielt. Ein Anteil wie batch=0.70 zielt auf einen anderen Wert ab. Bei Läufen mit mehreren GPUs muss die globale Batchgröße explizit angegeben werden und ein Vielfaches der Geräteanzahl sein. Auf CPU und Apple-Chips weist AutoBatch eine Warnung aus und greift auf batch=16 zurück.

Training mit einer Teilmenge#

Beim Training mit einer Teilmenge trainierst du dein Modell mit einem kleineren Datenbestand, der den größeren Datensatz repräsentiert. Das kann Zeit und Ressourcen sparen, insbesondere bei der anfänglichen Modellentwicklung und beim Testen. Wenn du wenig Zeit hast oder verschiedene Modellkonfigurationen ausprobierst, ist das Training mit einer Teilmenge eine gute Wahl.

Bei YOLO26 lässt sich das Training mit einer Teilmenge einfach über den Parameter fraction umsetzen. Verwende ein Verhältnis wie fraction=0.1 für 10 % der Trainingsdaten, eine ganze Zahl wie fraction=300 für genau 300 Trainingsbilder oder eine Liste [train, val, test] wie fraction=[300, 100, 0], um jede Aufteilung zu begrenzen und Testbilder zu überspringen. Bei Listen mit zwei Elementen wie [300, 100] bleibt die Testaufteilung vollständig erhalten. NDJSON-Datasets wählen vor dem Herunterladen gleichmäßig verteilte Datensätze aus, sodass bei wiederholten Läufen genau dieselbe Teilmenge verwendet wird. So kannst du schnell Anpassungen vornehmen und Einstellungen abstimmen, bevor du das vollständige Dataset verwendest.

Multiskalen-Training#

Multiskalen-Training verbessert die Generalisierungsfähigkeit deines Modells, indem es mit Bildern unterschiedlicher Größe trainiert wird. So lernt dein Modell, Objekte in verschiedenen Größen und Entfernungen zu erkennen, und wird robuster.

Wenn du beispielsweise YOLO26 trainierst, kannst du die Skalierungsaugmentation aktivieren, indem du den Parameter scale setzt. Dieser Parameter passt die Größe der Trainingsbilder um einen angegebenen Faktor an und simuliert so Objekte in verschiedenen Entfernungen. Mit scale=0.5 werden die Trainingsbilder während des Trainings beispielsweise zufällig um einen Faktor zwischen 0,5 und 1,5 vergrößert oder verkleinert. Mit diesem Parameter sieht dein Modell Bilder in verschiedenen Maßstäben und verbessert seine Erkennungsleistung bei unterschiedlich großen Objekten und in verschiedenen Situationen.

Ultralytics unterstützt außerdem Multiskalen-Training mit unterschiedlichen Bildgrößen über den Parameter multi_scale. Anders als scale, das Bilder vergrößert oder verkleinert und anschließend wieder auf imgsz auffüllt oder zuschneidet, ändert multi_scale in jedem Batch imgsz selbst (gerundet auf den Modell-Stride). Bei imgsz=640 und multi_scale=0.25 wird die Trainingsgröße beispielsweise in Stride-Schritten von 480 bis 800 gezogen (z. B. 480, 512, 544, ..., 800), während multi_scale=0.0 eine feste Größe beibehält.

Caching#

Caching ist eine wichtige Technik, um das Training von Machine-Learning-Modellen effizienter zu machen. Durch das Speichern vorverarbeiteter Bilder im Arbeitsspeicher muss die GPU weniger darauf warten, dass Daten von der Festplatte geladen werden. Das Modell kann so kontinuierlich Daten erhalten, ohne dass Verzögerungen durch Festplatten-E/A entstehen.

Beim Training von YOLO26 lässt sich das Caching über den Parameter cache steuern:

  • cache=True: Speichert Dataset-Bilder im RAM. Das ermöglicht den schnellsten Zugriff, erhöht jedoch den Speicherbedarf.
  • cache='disk': Speichert die Bilder auf der Festplatte. Das ist langsamer als RAM, aber schneller, als die Daten jedes Mal neu zu laden.
  • cache=False: Deaktiviert das Caching. Die Daten werden vollständig über Festplatten-E/A geladen, was die langsamste Option ist.

Training mit gemischter Genauigkeit#

Beim Training mit gemischter Genauigkeit werden Gleitkommatypen mit 16 Bit (FP16) und 32 Bit (FP32) kombiniert. Die Vorteile beider Formate werden genutzt, indem FP16 für schnellere Berechnungen und FP32 für die erforderliche Genauigkeit eingesetzt wird. Die meisten Operationen des neuronalen Netzes werden in FP16 ausgeführt, um Berechnungen zu beschleunigen und den Speicherbedarf zu senken. Eine Kopie der Modellgewichte wird jedoch in FP32 gehalten, um die Genauigkeit bei der Aktualisierung der Gewichte sicherzustellen. So kannst du innerhalb derselben Hardwaregrenzen größere Modelle oder Batchgrößen verwenden.

Mixed precision FP16 training benefits

Für das Training mit gemischter Genauigkeit musst du deine Trainingsskripte anpassen und sicherstellen, dass deine Hardware (z. B. GPUs) diese Funktion unterstützt. Viele moderne Frameworks für Deep Learning, darunter PyTorch und TensorFlow, bieten integrierte Unterstützung für gemischte Genauigkeit.

Das Training mit gemischter Genauigkeit ist bei YOLO26 unkompliziert: AMP ist standardmäßig aktiviert (amp=True). Auf einer CUDA-GPU führt YOLO zu Beginn des Trainings einmalig eine Kompatibilitätsprüfung durch und wechselt bei einem Fehlschlag zu reinem FP32. Auf CPU und Apple-Chips wird AMP vollständig übersprungen. Setze amp=False, um FP32 zu erzwingen.

Vortrainierte Gewichte#

Die Verwendung vortrainierter Gewichte ist eine gute Möglichkeit, das Training deines Modells zu beschleunigen. Vortrainierte Gewichte stammen von Modellen, die bereits mit großen Datensätzen trainiert wurden, und verschaffen deinem Modell einen Vorsprung. Transferlernen passt vortrainierte Modelle an neue, verwandte Aufgaben an. Beim Fine-Tuning eines vortrainierten Modells verwendest du zunächst diese Gewichte und setzt das Training dann mit deinem spezifischen Dataset fort. Dadurch verkürzt sich die Trainingszeit und häufig verbessert sich auch die Leistung, da das Modell bereits ein solides Verständnis grundlegender Merkmale mitbringt.

Vortrainierte Gewichte werden über das Argument model geladen, sodass model=yolo26n.pt bereits mit COCO-Gewichten startet. Der Parameter pretrained legt fest, ob diese Gewichte beibehalten (True, Standard), verworfen (False) oder durch einen anderen Prüfpunkt ersetzt werden (pretrained=path/to/best.pt). Wenn du pretrained=True für ein *.yaml-Modell setzt, werden dadurch nicht automatisch Gewichte abgerufen. Den vollständigen Transfer-Learning-Workflow findest du unter YOLO mit einem benutzerdefinierten Dataset feinabstimmen.

Weitere Techniken für große Datensätze#

Für den Umgang mit großen Datensätzen solltest du noch einige weitere Techniken in Betracht ziehen:

  • Lernraten-Scheduler: Lernraten-Scheduler passen die Lernrate während des Trainings dynamisch an. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell Minima überschreitet, und die Stabilität verbessern. Beim Training von YOLO26 hilft der Parameter lrf bei der Steuerung des Lernraten-Schedulers, indem er die endgültige Lernrate als Anteil der anfänglichen Lernrate festlegt. Für Verhaltensweisen, die sich nicht über ein Argument einstellen lassen, etwa Lernraten pro Ebene oder Gradienten-Clipping, leite den Trainer ab.
  • Verteiltes Training: Bei großen Datensätzen kann verteiltes Training entscheidende Vorteile bringen. Du kannst die Trainingszeit verkürzen, indem du die Arbeitslast auf mehrere GPUs oder Rechner verteilst. Dieser Ansatz ist besonders wertvoll bei Projekten im Unternehmensmaßstab, für die umfangreiche Rechenressourcen zur Verfügung stehen.
  • Speicherformat Channels-last: Beim CUDA-Training wird unter PyTorch 1.11 und neuer automatisch das schnellere NHWC-Speicherlayout verwendet; unter Windows nicht, da es dort langsamer gemessen wurde. Setze channels_last=True, um es zu erzwingen, oder channels_last=False, um NCHW beizubehalten. Unter PyTorch 1.10 und älter sowie auf CPU und MPS bleibt NCHW standardmäßig eingestellt.

Die Anzahl der Trainingsepochen#

Beim Modelltraining bezeichnet eine Epoche einen vollständigen Durchlauf durch den gesamten Trainingsdatensatz. Während einer Epoche verarbeitet das Modell jedes Beispiel im Trainingsbestand einmal und aktualisiert seine Parameter entsprechend dem Lernalgorithmus. In der Regel sind mehrere Epochen nötig, damit das Modell seine Parameter im Laufe der Zeit erlernen und verfeinern kann.

Eine häufige Frage lautet, wie viele Epochen für das Modelltraining angesetzt werden sollten. Ein guter Ausgangspunkt sind 300 Epochen. Wenn das Modell früh überlernt, kannst du die Epochenzahl reduzieren. Tritt nach 300 Epochen kein Overfitting auf, kannst du das Training auf 600, 1200 oder mehr Epochen verlängern.

Die ideale Epochenzahl hängt jedoch von der Größe deines Datasets und den Zielen deines Projekts ab. Bei größeren Datensätzen sind möglicherweise mehr Epochen nötig, damit das Modell effektiv lernt. Kleinere Datensätze erfordern unter Umständen weniger Epochen, um Overfitting zu vermeiden. Bei YOLO26 kannst du den Parameter epochs in deinem Trainingsskript setzen.

Vorzeitiger Trainingsabbruch#

Ein vorzeitiger Trainingsabbruch ist eine nützliche Technik zur Optimierung des Modelltrainings. Wenn du die Validierungsleistung überwachst, kannst du das Training beenden, sobald sich das Modell nicht mehr verbessert. So sparst du Rechenressourcen und verhinderst Overfitting.

Dazu legst du einen Geduldsparameter fest, der bestimmt, wie viele Epochen auf eine Verbesserung der Validierungsmetriken gewartet wird, bevor das Training abgebrochen wird. Verbessert sich die Leistung des Modells innerhalb dieser Epochen nicht, wird das Training beendet, um Zeit und Ressourcen zu sparen.

Early stopping to prevent model overfitting

Bei YOLO26 kannst du den vorzeitigen Trainingsabbruch aktivieren, indem du den Geduldsparameter in deiner Trainingskonfiguration festlegst. patience=5 bedeutet beispielsweise, dass das Training beendet wird, wenn sich die Validierungsmetriken fünf Epochen in Folge nicht verbessern. So bleibt das Training effizient und erzielt ohne übermäßigen Rechenaufwand eine optimale Leistung.

Cloud-Training oder lokales Training auswählen#

Für das Training deines Modells gibt es zwei Möglichkeiten: Cloud-Training und lokales Training.

Cloud-Training bietet Skalierbarkeit und leistungsstarke Hardware und eignet sich ideal für große Datensätze und komplexe Modelle. Plattformen wie Google Cloud, AWS und Azure bieten bedarfsgerechten Zugriff auf leistungsstarke GPUs und TPUs, verkürzen die Trainingszeiten und ermöglichen Experimente mit größeren Modellen. Cloud-Training kann jedoch teuer sein, insbesondere über längere Zeiträume, und die Datenübertragung kann zusätzliche Kosten und Latenz verursachen.

Lokales Training bietet mehr Kontrolle und Anpassungsmöglichkeiten. So kannst du deine Umgebung auf bestimmte Anforderungen zuschneiden und laufende Cloud-Kosten vermeiden. Bei langfristigen Projekten kann es kostengünstiger sein. Da deine Daten vor Ort bleiben, ist es zudem sicherer. Die lokale Hardware kann jedoch Ressourcenbeschränkungen unterliegen und Wartung erfordern, was bei großen Modellen zu längeren Trainingszeiten führen kann.

Einen Optimierer auswählen#

Ein Optimierer ist ein Algorithmus, der die Gewichte deines neuronalen Netzwerks anpasst, um die Verlustfunktion zu minimieren, die misst, wie gut das Modell arbeitet. Einfach gesagt hilft der Optimierer dem Modell beim 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.

Du kannst auch die Optimiererparameter feinabstimmen, um die Modellleistung zu verbessern. Mit der Lernrate legst du die Schrittgröße beim Aktualisieren der Parameter fest. Für mehr Stabilität kannst du zunächst eine moderate Lernrate verwenden und sie mit der Zeit schrittweise senken, um das langfristige Lernen zu verbessern. Außerdem bestimmt der Momentum-Wert, wie stark sich frühere Aktualisierungen auf die aktuellen auswirken. Ein üblicher Momentum-Wert liegt bei etwa 0,9. Damit wird in der Regel eine gute Balance erreicht.

Gängige Optimierer#

Verschiedene Optimierer haben unterschiedliche Stärken und Schwächen. Werfen wir einen kurzen Blick auf einige gängige Optimierer.

  • SGD (stochastischer Gradientenabstieg):

    • Aktualisiert Modellparameter anhand des Gradienten der Verlustfunktion bezüglich dieser Parameter.
    • Einfach und effizient, aber die Konvergenz kann langsam sein, und der Optimierer kann in lokalen Minima stecken bleiben.
  • Adam (adaptive Momentenschätzung):

    • Vereint die Vorteile von SGD mit Momentum und RMSProp.
    • Passt die Lernrate für jeden Parameter anhand von Schätzungen des ersten und zweiten Moments der Gradienten an.
    • Gut geeignet für verrauschte Daten und dünn besetzte Gradienten.
    • Effizient und erfordert in der Regel weniger Abstimmung. Für kürzere Trainingsläufe wählt optimizer=auto von YOLO26 das eng verwandte AdamW statt Adam selbst aus.
  • RMSProp (Fortpflanzung des quadratischen Mittelwerts):

    • Passt die Lernrate für jeden Parameter an, indem der Gradient durch einen gleitenden Durchschnitt der Beträge der letzten Gradienten geteilt wird.
    • Hilft bei der Bewältigung des Problems verschwindender Gradienten und eignet sich gut für rekurrente neuronale Netzwerke.
  • MuSGD (Muon-SGD-Hybrid):

    • Kombiniert Aktualisierungen im Stil von SGD mit von Muon inspiriertem Verhalten, um die Stabilität beim Training in großem Maßstab zu verbessern.
    • Eine gute Wahl, wenn du eine Verallgemeinerungsfähigkeit wie bei SGD möchtest, aber eine gleichmäßigere Konvergenz als bei einfachem SGD benötigst.
    • Besonders relevant für YOLO26-Trainingsrezepte; wenn du unsicher bist, beginne mit optimizer=auto und vergleiche MuSGD anhand deines Datensatzes.

Bei YOLO26 kannst du mit dem Parameter optimizer aus verschiedenen Optimierern wählen, darunter SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam und RMSProp. Alternativ kannst du den Parameter auf auto setzen, damit die Auswahl automatisch anhand der Anzahl der Trainingsiterationen erfolgt.

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Mit der Community in Kontakt treten#

Als Teil einer Community von Computer-Vision-Begeisterten kannst du Probleme lösen und schneller lernen. Hier sind einige Möglichkeiten, Kontakte zu knüpfen, Hilfe zu erhalten und Ideen auszutauschen.

Ressourcen aus der Community#

  • GitHub-Issues: Besuche das YOLO26-GitHub-Repository und nutze den Tab „Issues“, um Fragen zu stellen, Fehler zu melden und neue Funktionen vorzuschlagen. Die Community und die Maintainer sind sehr aktiv und helfen dir gerne.
  • Ultralytics-Discord-Server: Tritt dem Ultralytics-Discord-Server bei, um dich mit anderen Nutzern und Entwicklern auszutauschen, Unterstützung zu erhalten und deine Erfahrungen zu teilen.

Offizielle Dokumentation#

  • Ultralytics-YOLO26-Dokumentation: In der offiziellen YOLO26-Dokumentation findest du ausführliche Anleitungen und hilfreiche Tipps zu verschiedenen Computer-Vision-Projekten.

Mit diesen Ressourcen kannst du Herausforderungen bewältigen und dich über die neuesten Trends und Praktiken in der Computer-Vision-Community auf dem Laufenden halten.

Wichtigste Erkenntnisse#

Das Training von Computer-Vision-Modellen umfasst bewährte Vorgehensweisen, die Optimierung deiner Strategien und das Lösen auftretender Probleme. Techniken wie die Anpassung der Batch-Größe, das Training mit gemischter Präzision und der Start mit vortrainierten Gewichten können die Leistung deiner Modelle verbessern und das Training beschleunigen. Methoden wie das Training mit Teilmengen und vorzeitiges Beenden helfen dir, Zeit und Ressourcen zu sparen. Wenn du mit der Community in Kontakt bleibst und dich über neue Trends informierst, kannst du deine Fähigkeiten im Modelltraining kontinuierlich verbessern.

Häufig gestellte Fragen#

  • Um die GPU-Auslastung zu verbessern, setze den Parameter batch auf die maximal von deiner GPU unterstützte Größe. Bei einem einzelnen Beschleuniger analysiert batch=-1 das Modell und zielt auf eine Speicherauslastung von ungefähr 60 % ab. Bei CPU und Apple Silicon wird auf batch=16 zurückgegriffen. Für Läufe mit mehreren GPUs ist dagegen eine explizite globale Batch-Größe erforderlich, die ein Vielfaches der Geräteanzahl beträgt. Weitere Informationen findest du unter Argumente des Train-Modus.

  • Beim Training mit gemischter Präzision kommen sowohl 16-Bit-Gleitkommatypen (FP16) als auch 32-Bit-Gleitkommatypen (FP32) zum Einsatz, um Rechengeschwindigkeit und Präzision auszubalancieren. In YOLO26 ist die Funktion standardmäßig über amp=True aktiviert. Setze amp=False, um FP32 zu erzwingen. AMP wird auf CPU und Apple Silicon übersprungen. Weitere Informationen findest du unter Argumente des Train-Modus.

  • Training mit mehreren Bildskalen verbessert die Modellleistung, indem mit Bildern unterschiedlicher Größe trainiert wird. Dadurch kann das Modell besser über verschiedene Maßstäbe und Entfernungen hinweg generalisieren. YOLO26 bietet dafür zwei separate Parameter. scale=0.5 wählt einen Zoomfaktor zwischen 0,5 und 1,5 aus und füllt das Bild anschließend auf eine feste imgsz auf oder schneidet es darauf zu. multi_scale=0.25 variiert dagegen in jedem Batch imgsz selbst in Schritten der Schrittweite. Einstellungen und weitere Informationen findest du in der Dokumentation zum Train-Modus.

  • Vortrainierte Gewichte können das Training erheblich beschleunigen und die Modellgenauigkeit verbessern, indem sie ein Modell nutzen, das grundlegende visuelle Merkmale bereits kennt. Lade sie über das Argument model, beispielsweise mit model=yolo26n.pt. Anschließend entscheidet pretrained, ob diese Gewichte beibehalten werden (True, die Standardeinstellung), verworfen werden (False) oder durch einen anderen Checkpoint ersetzt werden (pretrained=path/to/best.pt, die Möglichkeit, Gewichte in einen model=*.yaml-Build zu übertragen). Weitere Informationen findest du in der Dokumentation zum Train-Modus.

Kommentare