Bewährte Praktiken des maschinellen Lernens und Tipps für die Modellschulung
Einführung
Einer der wichtigsten Schritte bei der Arbeit an einem Computer-Vision-Projekt ist das Modelltraining. Bevor Sie zu diesem Schritt kommen, müssen Sie Ihre Ziele definieren und Ihre Daten sammeln und beschriften. Nachdem Sie die Daten vorverarbeitet haben, um sicherzustellen, dass sie sauber und konsistent sind, können Sie mit dem Training Ihres Modells beginnen.
Beobachten: Tipps zur Modellschulung | Umgang mit großen Datensätzen | Stapelgröße, GPU Auslastung und Gemischte Präzision
Was also ist Modelltraining? Bei der Modellschulung wird Ihrem Modell beigebracht, visuelle Muster zu erkennen und auf der Grundlage Ihrer Daten Vorhersagen zu treffen. Dies wirkt sich direkt auf die Leistung und Genauigkeit Ihrer Anwendung aus. In diesem Leitfaden behandeln wir bewährte Verfahren, Optimierungstechniken und Tipps zur Fehlerbehebung, damit Sie Ihre Computer-Vision-Modelle effektiv trainieren können.
Wie man ein Modell für maschinelles Lernen trainiert
Ein Computer-Vision-Modell wird trainiert, indem seine internen Parameter angepasst werden, um Fehler zu minimieren. Zu Beginn wird das Modell mit einem großen Satz beschrifteter Bilder gefüttert. Es macht Vorhersagen darüber, was auf diesen Bildern zu sehen ist, 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 tatsächlichen Werten abweichen.
Während des Trainings macht das Modell iterativ Vorhersagen, berechnet Fehler und aktualisiert seine Parameter durch einen Prozess namens Backpropagation. Bei diesem Prozess passt das Modell seine internen Parameter an (weights and biases), um die Fehler zu reduzieren. Indem es diesen Zyklus viele Male wiederholt, 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 Bildverarbeitungsmodell, verschiedene Aufgaben zu erfüllen, darunter Objekterkennung, Instanzsegmentierung und Bildklassifizierung. Das ultimative Ziel ist es, ein Modell zu schaffen, das sein Lernen auf neue, ungesehene Bilder verallgemeinern kann, so dass es visuelle Daten in realen Anwendungen genau verstehen kann.
Da wir nun wissen, was hinter den Kulissen passiert, wenn wir ein Modell trainieren, wollen wir uns nun die Punkte ansehen, die beim Trainieren eines Modells zu beachten sind.
Training auf großen Datensätzen
Wenn Sie einen großen Datensatz zum Trainieren eines Modells verwenden möchten, sind einige Aspekte zu beachten. Sie können zum Beispiel die Stapelgröße anpassen, die Nutzung von GPU steuern, sich für ein Multiskalentraining entscheiden usw. Gehen wir jede dieser Optionen im Detail durch.
Chargengröße und GPU Auslastung
Beim Training von Modellen auf großen Datensätzen ist die effiziente Nutzung von GPU entscheidend. Die Batchgröße ist ein wichtiger Faktor. Sie ist die Anzahl der Datenproben, die ein Modell für maschinelles Lernen in einer einzigen Trainingsiteration verarbeitet. Wenn Sie die maximale Stapelgröße verwenden, die von Ihrem GPU unterstützt wird, können Sie dessen Fähigkeiten voll ausschöpfen und die Zeit für die Modellschulung reduzieren. Sie sollten jedoch vermeiden, dass Ihnen der GPU Speicher ausgeht. Wenn Sie auf Speicherfehler stoßen, reduzieren Sie die Stapelgröße schrittweise, bis das Modell reibungslos trainiert.
In Bezug auf YOLO11 können Sie die batch_size
Parameter in der Trainingsaufbau um die Kapazität von GPU zu erreichen. Auch die Einstellung batch=-1
in Ihrem Trainingsskript wird automatisch die Chargengröße die je nach den Möglichkeiten Ihres Geräts effizient verarbeitet werden können. Durch die Feinabstimmung der Stapelgröße können Sie die Ressourcen von GPU optimal nutzen und den gesamten Schulungsprozess verbessern.
Teilmenge Ausbildung
Subset-Training ist eine intelligente Strategie, bei der Sie Ihr Modell auf einem kleineren Datensatz trainieren, der den größeren Datensatz repräsentiert. Dadurch lassen sich Zeit und Ressourcen sparen, insbesondere bei der anfänglichen Modellentwicklung und beim Testen. Wenn Sie wenig Zeit haben oder mit verschiedenen Modellkonfigurationen experimentieren, ist Subset Training eine gute Option.
Bei YOLO11 können Sie das Training von Teilmengen leicht mit der Methode fraction
Parameter. Mit diesem Parameter können Sie angeben, welcher Teil Ihres Datensatzes für das Training verwendet werden soll. Wenn Sie zum Beispiel fraction=0.1
trainiert Ihr Modell auf 10 % der Daten. Sie können diese Technik für schnelle Iterationen und die Abstimmung Ihres Modells verwenden, bevor Sie ein Modell mit einem vollständigen Datensatz trainieren. Das Training von Teilmengen hilft Ihnen, schnell Fortschritte zu erzielen und potenzielle Probleme frühzeitig zu erkennen.
Mehrstufige Ausbildung
Multiskalentraining ist eine Technik, die die Verallgemeinerungsfähigkeit Ihres Modells 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 wird dadurch robuster.
Wenn Sie zum Beispiel YOLO11 trainieren, können Sie das Multiskalentraining aktivieren, indem Sie die scale
Parameter. Dieser Parameter passt die Größe der Trainingsbilder um einen bestimmten Faktor an und simuliert so Objekte in unterschiedlichen Entfernungen. Zum Beispiel kann die Einstellung scale=0.5
wird die Bildgröße um die Hälfte reduziert, während scale=2.0
verdoppelt sie. Die Konfiguration dieses Parameters ermöglicht es Ihrem Modell, eine Vielzahl von Bildmaßstäben zu erleben und seine Erkennungsfähigkeiten in verschiedenen Objektgrößen und Szenarien zu verbessern.
Caching
Die Zwischenspeicherung ist eine wichtige Technik zur Verbesserung der Effizienz beim Training von Modellen für maschinelles Lernen. Durch die Speicherung vorverarbeiteter Bilder im Arbeitsspeicher wird die Zeit, die GPU auf das Laden der Daten von der Festplatte wartet, verkürzt. Das Modell kann kontinuierlich Daten empfangen, ohne dass es zu Verzögerungen durch E/A-Vorgänge auf der Festplatte kommt.
Die Zwischenspeicherung kann beim Training von YOLO11 mit dem cache
Parameter:
cache=True
: Speichert die Bilder des Datensatzes im RAM, was die schnellste Zugriffsgeschwindigkeit bietet, aber auf Kosten eines erhöhten Speicherverbrauchs geht.cache='disk'
: Speichert die Bilder auf der Festplatte, langsamer als RAM, aber schneller als jedes Mal neue Daten zu laden.cache=False
: Deaktiviert die Zwischenspeicherung und verlässt sich ganz auf Festplatten-E/A, was die langsamste Option ist.
Gemischtes Präzisionstraining
Beim Training mit gemischter Genauigkeit werden sowohl 16-Bit- (FP16) als auch 32-Bit- (FP32) Gleitkommatypen verwendet. Die Stärken von FP16 und FP32 werden genutzt, indem FP16 für schnellere Berechnungen und FP32 für die Beibehaltung der Präzision bei Bedarf verwendet wird. Die meisten Operationen des neuronalen Netzes werden in FP16 durchgeführt, um von der schnelleren Berechnung und der geringeren Speichernutzung zu profitieren. Eine Masterkopie der Modellgewichte wird jedoch in FP32 gehalten, um die Genauigkeit während der Gewichtungsaktualisierungsschritte zu gewährleisten. Sie können größere Modelle oder größere Stapelgrößen mit denselben Hardware-Einschränkungen verarbeiten.
Um Mixed-Precision-Training zu implementieren, müssen Sie Ihre Trainingsskripte ändern und sicherstellen, dass Ihre Hardware (z. B. GPUs) dies unterstützt. Viele moderne Deep Learning-Frameworks, wie z. B. Tensorflowbieten integrierte Unterstützung für gemischte Präzision.
Das Training mit gemischter Präzision ist bei der Arbeit mit YOLO11 ganz einfach. Sie können die amp
Flagge in Ihrer Trainingskonfiguration. Einstellung amp=True
ermöglicht das automatische Training mit gemischter Präzision (AMP). Das Training mit gemischter Präzision ist eine einfache, aber effektive Methode zur Optimierung Ihres Modelltrainings.
Vorgefertigte Gewichte
Die Verwendung von vorab trainierten Gewichten ist ein intelligenter Weg, um den Trainingsprozess für Ihr Modell zu beschleunigen. Vorgefertigte Gewichte stammen von Modellen, die bereits auf großen Datensätzen trainiert wurden, wodurch Ihr Modell einen Vorsprung erhält. Beim Transfer-Lernen werden vorab trainierte Modelle an neue, verwandte Aufgaben angepasst. Bei der Feinabstimmung eines vorab trainierten Modells wird mit diesen Gewichten begonnen und dann das Training mit Ihrem spezifischen Datensatz fortgesetzt. Diese Trainingsmethode führt zu kürzeren Trainingszeiten und oft zu einer besseren Leistung, da das Modell mit einem soliden Verständnis der grundlegenden Merkmale beginnt.
Die pretrained
Parameter macht das Transferlernen mit YOLO11 einfach. Einstellung pretrained=True
verwendet voreingestellte Gewichte, oder Sie können einen Pfad zu einem benutzerdefinierten, voreingestellten Modell angeben. Durch die Verwendung von vortrainierten Gewichten und Transfer Learning werden die Fähigkeiten Ihres Modells effektiv gesteigert und die Trainingskosten gesenkt.
Andere Techniken, die beim Umgang mit großen Datensätzen zu berücksichtigen sind
Es gibt noch eine Reihe anderer Techniken, die bei der Bearbeitung eines großen Datensatzes zu berücksichtigen sind:
- Lerntarif Scheduler: Durch die Implementierung von Lernraten-Schedulern wird die Lernrate während des Trainings dynamisch angepasst. Eine gut abgestimmte Lernrate kann verhindern, dass das Modell über Minima hinausschießt, und die Stabilität verbessern. Beim Training von YOLO11 wird die
lrf
hilft bei der Planung der Lernrate, indem er die endgültige Lernrate als einen Bruchteil der anfänglichen Rate festlegt. - Verteiltes Training: Bei der Verarbeitung großer Datensätze kann verteiltes Training eine entscheidende Rolle spielen. Sie können die Trainingszeit reduzieren, indem Sie die Trainingslast auf mehrere GPUs oder Maschinen verteilen.
Die Anzahl der Epochen, für die zu trainieren ist
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 Trainingssatz einmal und aktualisiert seine Parameter auf der Grundlage des Lernalgorithmus. In der Regel sind mehrere Epochen erforderlich, damit das Modell mit der Zeit lernen und seine Parameter verfeinern kann.
Eine häufig gestellte Frage ist, wie man die Anzahl der Epochen bestimmt, für die das Modell trainiert werden soll. Eine gute Ausgangsbasis sind 300 Epochen. Wenn das Modell schon früh überfordert ist, können Sie die Anzahl der Epochen verringern. Wenn nach 300 Epochen kein Overfitting 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 lernt, während kleinere Datensätze weniger Epochen benötigen, um ein Overfitting zu vermeiden. In Bezug auf YOLO11 können Sie die epochs
Parameter in Ihrem Trainingsskript.
Frühzeitiges Anhalten
Das frühzeitige Abbrechen ist eine wertvolle Technik zur Optimierung der Modellschulung. Durch die Überwachung der Validierungsleistung können Sie das Training abbrechen, sobald sich das Modell nicht mehr verbessert. So können Sie Rechenressourcen sparen und eine Überanpassung verhindern.
Dabei wird ein Geduldsparameter festgelegt, der bestimmt, wie viele Epochen auf eine Verbesserung der Validierungsmetriken gewartet werden soll, bevor das Training abgebrochen wird. Wenn sich die Leistung des Modells innerhalb dieser Epochen nicht verbessert, wird das Training abgebrochen, um Zeit- und Ressourcenverschwendung zu vermeiden.
Für YOLO11 können Sie das vorzeitige Stoppen aktivieren, indem Sie den Parameter patience in Ihrer Trainingskonfiguration festlegen. Zum Beispiel, patience=5
bedeutet, dass das Training abgebrochen wird, wenn sich die Validierungsmetriken in 5 aufeinanderfolgenden Epochen nicht verbessert haben. Mit dieser Methode wird sichergestellt, dass der Trainingsprozess effizient bleibt und eine optimale Leistung ohne übermäßige Berechnungen erreicht wird.
Die Wahl zwischen Cloud und lokalem Training
Es gibt zwei Optionen für das Training Ihres Modells: 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-Zugang zu Hochleistungs-GPUs und TPUs, was die Trainingszeiten beschleunigt und Experimente mit größeren Modellen ermöglicht. Allerdings kann das Training in der Cloud teuer sein, vor allem über längere Zeiträume, und die Datenübertragung kann zu zusätzlichen Kosten und Latenzzeiten führen.
Lokale Schulungen bieten mehr Kontrolle und Anpassungsmöglichkeiten, so dass Sie Ihre Umgebung an spezifische Anforderungen anpassen und laufende Cloud-Kosten vermeiden können. Dies kann bei langfristigen Projekten wirtschaftlicher sein, und da Ihre Daten vor Ort bleiben, ist es sicherer. Lokale Hardware kann jedoch Ressourcenbeschränkungen aufweisen und Wartung erfordern, was bei großen Modellen zu längeren Schulungszeiten führen kann.
Auswahl eines Optimierers
Ein Optimierer ist ein Algorithmus, der die Gewichte Ihres neuronalen Netzes anpasst, um die Verlustfunktion zu minimieren, mit der die Leistung des Modells gemessen wird. Einfacher ausgedrückt: Der Optimierer unterstützt das 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.
Sie können auch eine Feinabstimmung der Optimierungsparameter vornehmen, um die Modellleistung zu verbessern. Durch die Anpassung der Lernrate wird die Größe der Schritte bei der Aktualisierung der Parameter festgelegt. Um die Stabilität zu gewährleisten, 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 die Einstellung der Dynamik, wie viel Einfluss vergangene Aktualisierungen auf aktuelle Aktualisierungen haben. Ein üblicher Wert für das Momentum liegt bei 0,9. Er bietet im Allgemeinen ein gutes Gleichgewicht.
Gemeinsame Optimierer
Verschiedene Optimierer haben unterschiedliche Stärken und Schwächen. Werfen wir einen Blick auf ein paar gängige Optimierer.
-
SGD (Stochastischer Gradientenabstieg):
- Aktualisiert die Modellparameter unter Verwendung des Gradienten der Verlustfunktion in Bezug auf die Parameter.
- Einfach und effizient, aber die Konvergenz kann langsam sein 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 auf der Grundlage von Schätzungen der ersten und zweiten Momente der Gradienten an.
- Gut geeignet für verrauschte Daten und spärliche Gradienten.
- Er ist effizient und erfordert im Allgemeinen weniger Tuning, was ihn zu einem empfohlenen Optimierer für YOLO11 macht.
-
RMSProp (Root Mean Square Propagation):
- Passt die Lernrate für jeden Parameter an, indem der Gradient durch einen laufenden Durchschnitt der Größen der letzten Gradienten geteilt wird.
- Hilft beim Umgang mit dem Problem des verschwindenden Gradienten und ist für rekurrente neuronale Netze wirksam.
Für YOLO11 ist die optimizer
Parameter können Sie aus verschiedenen Optimierern wählen, einschließlich SGD, Adam, AdamW, NAdam, RAdam und RMSProp, oder Sie können ihn auf auto
für die automatische Auswahl auf der Grundlage der Modellkonfiguration.
Verbindung mit der Gemeinschaft
Die Zugehörigkeit zu einer Gemeinschaft von Computer-Vision-Enthusiasten 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.
Ressourcen der Gemeinschaft
- GitHub-Fragen: Besuchen Sie das YOLO11 GitHub-Repository und verwenden Sie die Registerkarte "Issues", um Fragen zu stellen, Fehler zu melden und neue Funktionen vorzuschlagen. Die Community und die Betreuer sind sehr aktiv und bereit zu helfen.
- Ultralytics Discord-Server: Treten Sie dem Ultralytics Discord-Server bei, um mit anderen Benutzern und Entwicklern zu chatten, Unterstützung zu erhalten und Ihre Erfahrungen auszutauschen.
Offizielle Dokumentation
- Ultralytics YOLO11 Dokumentation: In der offiziellen Dokumentation YOLO11 finden Sie detaillierte Anleitungen und hilfreiche Tipps zu verschiedenen Computer Vision Projekten.
Die Nutzung dieser Ressourcen wird Ihnen helfen, Herausforderungen zu lösen und über die neuesten Trends und Praktiken in der Computer Vision Community auf dem Laufenden zu bleiben.
Wichtigste Erkenntnisse
Bei der Schulung von Computer-Vision-Modellen müssen Sie bewährte Verfahren anwenden, Ihre Strategien optimieren und auftretende Probleme lösen. Techniken wie das Anpassen von Stapelgrößen, Training mit gemischter Präzision und das Starten mit vortrainierten Gewichten können dazu beitragen, dass Ihre Modelle besser funktionieren und schneller trainiert werden. Methoden wie Subset-Training und frühzeitiges Abbrechen helfen Ihnen, Zeit und Ressourcen zu sparen. Bleiben Sie mit der Community in Kontakt und halten Sie sich über neue Trends auf dem Laufenden, um Ihre Fähigkeiten bei der Modellschulung weiter zu verbessern.
FAQ
Wie kann ich die Nutzung von GPU verbessern, wenn ich einen großen Datensatz mit Ultralytics YOLO trainiere?
Um die Nutzung von GPU zu verbessern, setzen Sie die batch_size
Parameter in Ihrer Trainingskonfiguration auf die maximale Größe, die Ihr GPU unterstützt. Dadurch wird sichergestellt, dass Sie die Möglichkeiten von GPU voll ausschöpfen und die Trainingszeit verkürzen. Wenn Sie auf Speicherfehler stoßen, reduzieren Sie die Stapelgröße schrittweise, bis das Training reibungslos verläuft. Für YOLO11 ist die Einstellung batch=-1
in Ihrem Trainingsskript wird automatisch die optimale Stapelgröße für eine effiziente Verarbeitung ermittelt. Weitere Informationen finden Sie in der Trainingsaufbau.
Was ist gemischtes Präzisionstraining und wie kann ich es in YOLO11 aktivieren?
Beim Training mit gemischter Genauigkeit werden sowohl 16-Bit- (FP16) als auch 32-Bit- (FP32) Gleitkommatypen verwendet, um ein Gleichgewicht zwischen Rechengeschwindigkeit und Genauigkeit zu erreichen. Dieser Ansatz beschleunigt das Training und reduziert die Speichernutzung, ohne das Modell zu beeinträchtigen. Genauigkeit. Um das Training mit gemischter Genauigkeit in YOLO11 zu aktivieren, setzen Sie die amp
Parameter zu True
in Ihrer Trainingskonfiguration. Dadurch wird das AMP-Training (Automatic Mixed Precision) aktiviert. Weitere Einzelheiten zu dieser Optimierungstechnik finden Sie in der Trainingsaufbau.
Wie verbessert das Multiskalentraining die Leistung des Modells YOLO11 ?
Das Multiskalentraining verbessert die Leistung des Modells, indem es auf Bildern unterschiedlicher Größe trainiert wird, so dass das Modell besser über verschiedene Maßstäbe und Abstände hinweg verallgemeinert werden kann. In YOLO11 können Sie das Multiskalentraining aktivieren, indem Sie die Option 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. Mit dieser Technik werden Objekte in unterschiedlichen Entfernungen simuliert, wodurch das Modell in verschiedenen Szenarien robuster wird. Die Einstellungen und weitere Details finden Sie in der Trainingsaufbau.
Wie kann ich vortrainierte Gewichte verwenden, um das Training in YOLO11 zu beschleunigen?
Die Verwendung von vorab trainierten Gewichten kann die Trainingszeiten erheblich verkürzen und die Leistung des Modells verbessern, da man von einem Modell ausgeht, das bereits die grundlegenden Merkmale kennt. Unter YOLO11 können Sie die pretrained
Parameter zu True
oder geben Sie in Ihrer Trainingskonfiguration einen Pfad zu benutzerdefinierten vortrainierten Gewichten an. Bei diesem Ansatz, der als Transfer-Lernen bezeichnet wird, wird das Wissen aus großen Datensätzen genutzt, um es an Ihre spezielle Aufgabe anzupassen. Erfahren Sie mehr über vortrainierte Gewichte und ihre Vorteile hier.
Welche Anzahl von Epochen wird für das Training eines Modells empfohlen, und wie kann ich diese in YOLO11 einstellen?
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 Ihr Modell zu früh übersteuert, können Sie die Anzahl verringern. Alternativ können Sie das Training auf 600, 1200 oder mehr Epochen ausdehnen, wenn keine Überanpassung beobachtet wird. Um dies in YOLO11 einzustellen, verwenden Sie die epochs
Parameter in Ihrem Trainingsskript. Weitere Hinweise zur Bestimmung der idealen Anzahl von Epochen finden Sie in diesem Abschnitt über Anzahl der Epochen.