Zum Inhalt springen

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.

Was ist Backpropagation?

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-Inferenz mit Ultralytics YOLO26 verwendet | Objekterkennung in python beschleunigen 🎉

Bezüglich YOLO26 können Sie den 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 YOLO26 geht, können Sie Subset-Training einfach implementieren, indem Sie den 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

Multiskalen-Training ist eine Technik, die die Generalisierungsfähigkeit Ihres Modells verbessert, indem es auf Bildern unterschiedlicher Größen trainiert wird. Ihr Modell kann lernen, Objekte in verschiedenen Skalen und Entfernungen zu detect und robuster zu werden.

Wenn Sie beispielsweise YOLO26 trainieren, können Sie Multiskalen-Training aktivieren, indem Sie den 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.

Ultralytics unterstützt Ultralytics das bildgrößenübergreifende Training über die multi_scale Parameter. Im Gegensatz zu scale, das Bilder vergrößert und anschließend wieder auf die ursprüngliche Größe zuschneidet. imgsz, multi_scale Änderungen imgsz selbst jede Charge (auf den Modellschritt gerundet). Zum Beispiel mit imgsz=640 und multi_scale=0.25Die Trainingsgröße wird in Schritten von 480 bis 800 (z. B. 480, 512, 544, ..., 800) ausgewählt, während multi_scale=0.0 behält eine feste Größe bei.

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 Caching kann beim Training von YOLO26 über den 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.

Vorteile des Trainings mit gemischter Genauigkeit FP16

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.

Gemischtes Präzisionstraining ist unkompliziert bei der Arbeit mit YOLO26. Sie können den 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 intelligente Methode, um 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. Transferlernen passt vortrainierte Modelle an neue, verwandte Aufgaben an. Das Fine-Tuning eines vortrainierten Modells beinhaltet den Start 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 bereits ein solides Verständnis grundlegender Merkmale besitzt.

Die pretrained Parameter macht Transfer Learning mit YOLO26 einfach. Das Setzen von pretrained=True werden standardmäßig vortrainierte Gewichte verwendet, oder Sie können einen Pfad zu einem benutzerdefinierten vortrainierten Modell angeben. Die Verwendung von vortrainierten Gewichten und Transferlernen steigert effektiv die Fähigkeiten Ihres Modells 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 Learning Rate Schedulers passt die Lernrate während des Trainings dynamisch an. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell Minima überschießt, und die Stabilität verbessern. Beim Training von YOLO26 ist der 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 den Projektzielen variieren. Größere Datensätze erfordern möglicherweise mehr Epochen, damit das Modell effektiv lernen kann, während kleinere Datensätze weniger Epochen benötigen, um Überanpassung zu vermeiden. Bezüglich YOLO26 können Sie den 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.

Frühzeitiges Beenden, um eine Überanpassung des Modells zu verhindern

Für YOLO26 können Sie Early Stopping aktivieren, indem Sie den Parameter patience in Ihrer Trainingskonfiguration setzen. 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 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öß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 YOLO26 ist der optimizer Parameter ermöglicht die Auswahl aus verschiedenen Optimierern, 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 Issues: Besuchen Sie das YOLO26 GitHub-Repository und nutzen Sie den Tab „Issues“, um Fragen zu stellen, Fehler zu melden und neue Funktionen vorzuschlagen. Die Community und die Maintainer 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 YOLO26-Dokumentation: Lesen Sie die offizielle YOLO26-Dokumentation für detaillierte Anleitungen und hilfreiche Tipps zu verschiedenen Computer-Vision-Projekten.

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 Training von Computer-Vision-Modellen erfordert die Einhaltung bewährter Praktiken, die Optimierung von Strategien und die Lösung auftretender Probleme. Techniken wie die Anpassung von Batch-Größen, Training mit gemischter Präzision und der Start mit vortrainierten Gewichten können dazu beitragen, dass Ihre Modelle besser funktionieren und schneller trainieren. Methoden wie Subset-Training und Early Stopping helfen Ihnen, Zeit und Ressourcen zu sparen. Der Austausch mit der Community und das Verfolgen neuer Trends werden Ihnen helfen, Ihre Fähigkeiten im Modelltraining kontinuierlich zu 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 reduzieren. Wenn Speicherfehler auftreten, reduzieren Sie die Batch-Größe schrittweise, bis das Training reibungslos läuft. Für YOLO26, das Setzen von 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 gemischtes Präzisionstraining, und wie aktiviere ich es in YOLO26?

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 gemischtes Präzisionstraining in YOLO26 zu aktivieren, setzen Sie den 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 Multiskalen-Training die YOLO26-Modellleistung?

Multiskalen-Training verbessert die Modellleistung, indem es mit Bildern unterschiedlicher Größen trainiert wird, wodurch das Modell besser über verschiedene Skalen und Entfernungen hinweg generalisieren kann. In YOLO26 können Sie das Multiskalen-Training aktivieren, indem Sie den Parameter einstellen scale Parameter in der Trainingskonfiguration. Zum Beispiel, scale=0.5 Proben einen Zoomfaktor zwischen 0,5 und 1,5, dann werden sie aufgefüllt/beschnitten zurück auf imgszDiese Technik simuliert Objekte in unterschiedlichen Entfernungen und macht das Modell so robuster für verschiedene Szenarien. Weitere Informationen zu den Einstellungen und Details finden Sie unter Trainingskonfiguration.

Wie 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 grundlegende visuelle Merkmale kennt. In YOLO26 setzen Sie einfach den Parameter pretrained Parameter auf True oder geben Sie einen Pfad zu Ihren benutzerdefinierten vortrainierten Gewichten in der Trainingskonfiguration an. Diese Methode, bekannt als Transferlernen, ermöglicht es, Modelle, die auf großen Datensätzen trainiert wurden, effektiv an Ihre spezifische Anwendung anzupassen. Erfahren Sie mehr über die Verwendung von vortrainierten Gewichten und deren Vorteile in der Anleitung zur Trainingskonfiguration.

Die Anzahl der Epochen bezeichnet die vollständigen Durchläufe durch den Trainingsdatensatz während des Modelltrainings. Ein typischer Ausgangspunkt sind 300 Epochen. Wenn Ihr Modell frühzeitig überanpasst, können Sie die Anzahl reduzieren. Alternativ, wenn keine Überanpassung beobachtet wird, können Sie das Training auf 600, 1200 oder mehr Epochen ausdehnen. Um dies in YOLO26 einzustellen, verwenden Sie den Parameter 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.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 4 Tagen
glenn-jocherRizwanMunawarUltralyticsAssistantY-T-Gartest08pderrengeronuralpszrwillie.maddox@gmail.comLaughing-qabirami-vina

Kommentare