Zum Inhalt springen

Fehlersuche bei hÀufigen YOLO Problemen

YOLO Gemeinsame Probleme Bild

EinfĂŒhrung

Dieser Leitfaden ist ein umfassendes Hilfsmittel zur Behebung hÀufiger Probleme, die bei der Arbeit mit YOLOv8 in deinen Ultralytics Projekten auftreten. Mit der richtigen Anleitung ist es ein Kinderspiel, diese Probleme zu lösen und sicherzustellen, dass deine Projekte ohne unnötige Verzögerungen weiterlaufen.

Gemeinsame Probleme

Fehler bei der Installation

Installationsfehler können aus verschiedenen GrĂŒnden auftreten, z. B. wegen inkompatibler Versionen, fehlender AbhĂ€ngigkeiten oder falscher Umgebungseinstellungen. ÜberprĂŒfe zunĂ€chst, ob du die folgenden Punkte beachtest:

  • Du verwendest Python 3.8 oder höher, wie empfohlen.

  • Stelle sicher, dass du die richtige Version von PyTorch (1.8 oder höher) installiert hast.

  • ErwĂ€ge den Einsatz von virtuellen Umgebungen, um Konflikte zu vermeiden.

  • Folge der offiziellen Installationsanleitung Schritt fĂŒr Schritt.

Außerdem findest du hier einige hĂ€ufige Probleme bei der Installation und die entsprechenden Lösungen:

  • Importfehler oder AbhĂ€ngigkeitsprobleme - Wenn du beim Import von YOLOv8 Fehler erhĂ€ltst oder Probleme mit AbhĂ€ngigkeiten hast, beachte die folgenden Schritte zur Fehlerbehebung:

    • Neuinstallation: Manchmal kann eine Neuinstallation unerwartete Probleme beheben. Vor allem bei Bibliotheken wie Ultralytics, bei denen Aktualisierungen Änderungen an der Dateibaumstruktur oder den Funktionen mit sich bringen können.

    • RegelmĂ€ĂŸig aktualisieren: Stelle sicher, dass du die neueste Version der Bibliothek verwendest. Ältere Versionen sind möglicherweise nicht mit aktuellen Updates kompatibel, was zu Konflikten oder Problemen fĂŒhren kann.

    • AbhĂ€ngigkeiten prĂŒfen: ÜberprĂŒfe, ob alle erforderlichen AbhĂ€ngigkeiten korrekt installiert sind und die kompatiblen Versionen haben.

    • Änderungen ĂŒberprĂŒfen: Wenn du ursprĂŒnglich eine Ă€ltere Version geklont oder installiert hast, solltest du dir bewusst sein, dass wichtige Aktualisierungen die Struktur oder die Funktionen der Bibliothek beeinflussen können. Sieh dir immer die offizielle Dokumentation oder die Änderungsprotokolle an, um alle wichtigen Änderungen zu verstehen.

    • Denke daran, dass du deine Bibliotheken und AbhĂ€ngigkeiten auf dem neuesten Stand halten musst, um ein reibungsloses und fehlerfreies Arbeiten zu gewĂ€hrleisten.

  • YOLOv8 auf der GPU ausfĂŒhren - Wenn du Probleme hast, YOLOv8 auf der GPU auszufĂŒhren, beachte die folgenden Schritte zur Fehlerbehebung:

    • ÜberprĂŒfe die CUDA KompatibilitĂ€t und Installation: Vergewissere dich, dass dein Grafikprozessor CUDA-kompatibel ist und dass CUDA korrekt installiert ist. Verwende die nvidia-smi um den Status deines NVIDIA Grafikprozessors und deiner CUDA Version zu ĂŒberprĂŒfen.

    • PrĂŒfe PyTorch und CUDA Integration: Stellen Sie sicher, dass PyTorch CUDA nutzen kann, indem Sie import torch; print(torch.cuda.is_available()) in einem Python Terminal. Wenn sie "True" zurĂŒckgibt, ist PyTorch fĂŒr die Verwendung von CUDA eingerichtet.

    • Umgebungsaktivierung: Stelle sicher, dass du dich in der richtigen Umgebung befindest, in der alle notwendigen Pakete installiert sind.

    • Aktualisiere deine Pakete: Veraltete Pakete sind möglicherweise nicht mit deinem Grafikprozessor kompatibel. Halte sie auf dem neuesten Stand.

    • Programmkonfiguration: PrĂŒfe, ob das Programm oder der Code die GPU-Nutzung vorgibt. In YOLOv8 kann dies in den Einstellungen oder der Konfiguration stehen.

Fragen zur Modellausbildung

In diesem Abschnitt geht es um hÀufige Probleme, die wÀhrend der Ausbildung auftreten, sowie um die entsprechenden ErklÀrungen und Lösungen.

ÜberprĂŒfung der Konfigurationseinstellungen

Ausgabe: Du bist dir nicht sicher, ob die Konfigurationseinstellungen in der .yaml Datei wÀhrend der Modellschulung korrekt angewendet werden.

Lösung: Die Konfigurationseinstellungen in der .yaml Datei angewendet werden sollte, wenn die model.train() Funktion. Um sicherzustellen, dass diese Einstellungen richtig angewendet werden, befolge diese Schritte:

  • BestĂ€tigen Sie, dass der Pfad zu Ihrem .yaml Konfigurationsdatei korrekt ist.
  • Stellen Sie sicher, dass Sie den Pfad zu Ihrem .yaml Datei als die data Argument beim Aufruf von model.train()wie unten dargestellt:
model.train(data='/path/to/your/data.yaml', batch=4)

Beschleunigung der Ausbildung mit mehreren GPUs

Problem: Das Training ist auf einem einzelnen Grafikprozessor langsam und du möchtest den Prozess mit mehreren GPUs beschleunigen.

Lösung: Die Erhöhung der StapelgrĂ¶ĂŸe kann das Training beschleunigen, aber es ist wichtig, die SpeicherkapazitĂ€t der GPU zu berĂŒcksichtigen. Um das Training mit mehreren GPUs zu beschleunigen, befolge diese Schritte:

  • Stelle sicher, dass du mehrere GPUs zur VerfĂŒgung hast.

  • Ändere deine .yaml-Konfigurationsdatei, um die Anzahl der zu verwendenden GPUs anzugeben, z. B. gpus: 4.

  • Erhöhe die StapelgrĂ¶ĂŸe entsprechend, um die mehreren GPUs voll auszunutzen, ohne die Speichergrenzen zu ĂŒberschreiten.

  • Ändere deinen Trainingsbefehl, um mehrere GPUs zu nutzen:

# Adjust the batch size and other settings as needed to optimize training speed
model.train(data='/path/to/your/data.yaml', batch=32, multi_scale=True)

Parameter fĂŒr die kontinuierliche Überwachung

Problem: Du möchtest wissen, welche Parameter neben dem Verlust wĂ€hrend des Trainings kontinuierlich ĂŒberwacht werden sollten.

Lösung: Auch wenn der Verlust eine wichtige Kennzahl ist, die ĂŒberwacht werden muss, ist es wichtig, auch andere Kennzahlen zur Optimierung der Modellleistung zu verfolgen. Einige wichtige Kennzahlen, die wĂ€hrend der Ausbildung ĂŒberwacht werden sollten, sind:

  • PrĂ€zision
  • RĂŒckruf
  • Mittlere durchschnittliche PrĂ€zision (mAP)

Du kannst diese Metriken aus den Trainingsprotokollen abrufen oder Tools wie TensorBoard oder wandb zur Visualisierung verwenden. Ein frĂŒhzeitiges Stoppen auf der Grundlage dieser Metriken kann dir helfen, bessere Ergebnisse zu erzielen.

Tools zur Verfolgung des Trainingsfortschritts

Problem: Du suchst nach Empfehlungen fĂŒr Tools, mit denen du den Trainingsfortschritt verfolgen kannst.

Lösung: Um den Trainingsfortschritt zu verfolgen und zu visualisieren, kannst du die folgenden Tools nutzen:

  • TensorBoard: TensorBoard ist eine beliebte Wahl fĂŒr die Visualisierung von Trainingsmetriken, einschließlich Verlust, Genauigkeit und mehr. Du kannst es in deinen YOLOv8 Trainingsprozess integrieren.
  • Comet: Comet bietet ein umfangreiches Toolkit fĂŒr die Nachverfolgung und den Vergleich von Experimenten. Damit kannst du Metriken, Hyperparameter und sogar Modellgewichte verfolgen. Die Integration mit YOLO Modellen ist ebenfalls unkompliziert und bietet dir einen vollstĂ€ndigen Überblick ĂŒber deinen Experimentierzyklus.
  • Ultralytics HUBUltralytics HUB bietet eine spezielle Umgebung fĂŒr die Nachverfolgung von YOLO Modellen, die dir eine zentrale Plattform fĂŒr die Verwaltung von Metriken, DatensĂ€tzen und sogar fĂŒr die Zusammenarbeit mit deinem Team bietet. Mit dem Fokus auf YOLO bietet es noch mehr maßgeschneiderte Tracking-Optionen.

Jedes dieser Werkzeuge bietet seine eigenen Vorteile, daher solltest du bei deiner Entscheidung die besonderen Anforderungen deines Projekts berĂŒcksichtigen.

So ĂŒberprĂŒfst du, ob die Ausbildung auf dem Grafikprozessor stattfindet

Problem: Der Wert "GerÀt" in den Trainingsprotokollen ist "null" und du bist dir nicht sicher, ob das Training auf der GPU stattfindet.

Lösung: Wenn der "device"-Wert "null" ist, bedeutet das in der Regel, dass der Trainingsprozess automatisch eine verfĂŒgbare GPU verwendet, was die Standardeinstellung ist. Um sicherzustellen, dass das Training auf einem bestimmten Grafikprozessor stattfindet, kannst du den "device"-Wert in deiner .yaml-Konfigurationsdatei manuell auf den GPU-Index setzen (z.B. "0" fĂŒr den ersten Grafikprozessor):

device: 0

Dadurch wird der Trainingsprozess explizit der angegebenen GPU zugewiesen. Wenn du auf der CPU trainieren möchtest, setze "device" auf "cpu".

Behalte den Ordner "LĂ€ufe" fĂŒr Protokolle und Messwerte im Auge, um den Trainingsfortschritt effektiv zu ĂŒberwachen.

Wichtige Überlegungen fĂŒr eine wirksame Modellschulung

Hier sind einige Dinge, die du beachten solltest, wenn du Probleme mit der Modellausbildung hast.

Format und Beschriftung der DatensÀtze

  • Wichtigkeit: Die Grundlage eines jeden maschinellen Lernmodells liegt in der QualitĂ€t und dem Format der Daten, auf denen es trainiert wird.

  • Empfehlung: Stelle sicher, dass dein benutzerdefinierter Datensatz und die dazugehörigen Beschriftungen dem erwarteten Format entsprechen. Es ist wichtig zu ĂŒberprĂŒfen, dass die Beschriftungen korrekt und von hoher QualitĂ€t sind. Falsche oder minderwertige Beschriftungen können den Lernprozess des Modells stören und zu unvorhersehbaren Ergebnissen fĂŒhren.

Modell Konvergenz

  • Wichtigkeit: Das Erreichen der Modellkonvergenz stellt sicher, dass das Modell ausreichend aus den Trainingsdaten gelernt hat.

  • Empfehlung: Wenn du ein Modell "von Grund auf" trainierst, musst du unbedingt sicherstellen, dass das Modell einen zufriedenstellenden Grad an Konvergenz erreicht. Dies kann eine lĂ€ngere Trainingsdauer mit mehr Epochen erforderlich machen, als wenn du ein bestehendes Modell fein abstimmst.

Lernrate und StapelgrĂ¶ĂŸe

  • Wichtigkeit: Diese Hyperparameter spielen eine entscheidende Rolle dabei, wie das Modell seine Gewichte wĂ€hrend des Trainings aktualisiert.

  • Empfehlung: ÜberprĂŒfe regelmĂ€ĂŸig, ob die gewĂ€hlte Lernrate und BatchgrĂ¶ĂŸe fĂŒr deinen spezifischen Datensatz optimal sind. Parameter, die nicht mit den Eigenschaften des Datensatzes ĂŒbereinstimmen, können die Leistung des Modells beeintrĂ€chtigen.

Klassenverteilung

  • Wichtigkeit: Die Verteilung der Klassen in deinem Datensatz kann die Vorhersagetendenzen des Modells beeinflussen.

  • Empfehlung: ÜberprĂŒfe regelmĂ€ĂŸig die Verteilung der Klassen innerhalb deines Datensatzes. Wenn es ein Ungleichgewicht zwischen den Klassen gibt, besteht die Gefahr, dass das Modell eine Tendenz zur vorherrschenden Klasse entwickelt. Diese Verzerrung kann sich in der Konfusionsmatrix zeigen, wenn das Modell ĂŒberwiegend die Mehrheitsklasse vorhersagt.

Cross-Check mit vortrainierten Gewichten

  • Wichtigkeit: Die Nutzung von vortrainierten Gewichten kann einen soliden Ausgangspunkt fĂŒr das Modelltraining bieten, vor allem wenn die Daten begrenzt sind.

  • Empfehlung: Als Diagnoseschritt solltest du dein Modell mit denselben Daten trainieren, es aber mit vorher trainierten Gewichten initialisieren. Wenn dieser Ansatz zu einer wohlgeformten Konfusionsmatrix fĂŒhrt, könnte dies darauf hindeuten, dass das Modell "von Grund auf" weiter trainiert oder angepasst werden muss.

In diesem Abschnitt geht es um hÀufige Probleme, die bei der Modellvorhersage auftreten.

Bounding Box-Vorhersagen mit deinem benutzerdefinierten Modell YOLOv8

Problem: Wenn du Vorhersagen mit einem benutzerdefinierten Modell von YOLOv8 durchfĂŒhrst, gibt es Probleme mit dem Format und der Visualisierung der Bounding-Box-Koordinaten.

Lösung:

  • Koordinatenformat: YOLOv8 bietet Bounding-Box-Koordinaten in absoluten Pixelwerten. Um diese in relative Koordinaten (von 0 bis 1) umzuwandeln, musst du durch die BildgrĂ¶ĂŸe dividieren. Nehmen wir zum Beispiel an, dein Bild hat die GrĂ¶ĂŸe 640x640. Dann wĂŒrdest du Folgendes tun:
# Convert absolute coordinates to relative coordinates
x1 = x1 / 640  # Divide x-coordinates by image width
x2 = x2 / 640
y1 = y1 / 640  # Divide y-coordinates by image height
y2 = y2 / 640
  • Dateiname: Um den Dateinamen des Bildes zu erhalten, fĂŒr das du eine Vorhersage machst, greifst du in deiner Vorhersageschleife direkt auf den Pfad der Bilddatei im Ergebnisobjekt zu.

Filterung von Objekten in YOLOv8 Vorhersagen

Problem: Probleme beim Filtern und Anzeigen nur bestimmter Objekte in den Vorhersageergebnissen, wenn YOLOv8 mit der Bibliothek Ultralytics ausgefĂŒhrt wird.

Lösung: Um bestimmte Klassen zu erkennen, gibst du mit dem Argument classes die Klassen an, die du in der Ausgabe berĂŒcksichtigen willst. Um zum Beispiel nur Autos zu erkennen (unter der Annahme, dass "Autos" den Klassenindex 2 haben):

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

Das VerstÀndnis von PrÀzisionsmetriken in YOLOv8

Problem: Verwirrung bezĂŒglich des Unterschieds zwischen der Genauigkeit der Box, der Genauigkeit der Maske und der Genauigkeit der Konfusionsmatrix in YOLOv8.

Lösung: Die Box-PrĂ€zision misst die Genauigkeit der vorhergesagten Bounding-Boxen im Vergleich zu den tatsĂ€chlichen Bounding-Boxen unter Verwendung der Metrik IoU (Intersection over Union). Die MaskenprĂ€zision bewertet die Übereinstimmung zwischen den vorhergesagten Segmentierungsmasken und den tatsĂ€chlichen Masken bei der pixelbasierten Objektklassifizierung. Die Genauigkeit der Konfusionsmatrix hingegen konzentriert sich auf die Gesamtklassifizierungsgenauigkeit ĂŒber alle Klassen hinweg und berĂŒcksichtigt nicht die geometrische Genauigkeit der Vorhersagen. Es ist wichtig zu wissen, dass eine Bounding Box auch dann geometrisch genau sein kann (true positive), wenn die Klassenvorhersage falsch ist, was zu Unterschieden zwischen Box Precision und Confusion Matrix Precision fĂŒhrt. Diese Metriken bewerten unterschiedliche Aspekte der Leistung eines Modells und spiegeln damit die Notwendigkeit unterschiedlicher Bewertungsmetriken fĂŒr verschiedene Aufgaben wider.

Extrahieren von Objektdimensionen in YOLOv8

Problem: Es ist schwierig, die LÀnge und Höhe der erkannten Objekte in YOLOv8 abzurufen, vor allem, wenn mehrere Objekte in einem Bild erkannt werden.

Lösung: Um die Abmessungen der Begrenzungsrahmen zu ermitteln, verwende zunÀchst das Modell Ultralytics YOLOv8 , um Objekte in einem Bild vorherzusagen. Dann extrahierst du die Breiten- und Höheninformationen der Bounding Boxes aus den Vorhersageergebnissen.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO('yolov8n.pt')

# Specify the source image
source = 'https://ultralytics.com/images/bus.jpg'

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

Herausforderungen bei der Bereitstellung

Probleme bei der GPU-Bereitstellung

Problem: Der Einsatz von Modellen in einer Multi-GPU-Umgebung kann manchmal zu unerwartetem Verhalten fĂŒhren, z. B. zu unerwarteter Speichernutzung, inkonsistenten Ergebnissen auf verschiedenen GPUs usw.

Lösung: PrĂŒfe, ob die GPU standardmĂ€ĂŸig initialisiert wird. Einige Frameworks wie PyTorch initialisieren CUDA-Operationen möglicherweise auf einer Standard-GPU, bevor sie zu den vorgesehenen GPUs ĂŒbergehen. Um unerwartete Standardinitialisierungen zu umgehen, gib die GPU direkt bei der Bereitstellung und Vorhersage an. Verwende dann Tools zur Überwachung der GPU-Auslastung und der Speichernutzung, um Anomalien in Echtzeit zu erkennen. Stelle außerdem sicher, dass du die neueste Version des Frameworks oder der Bibliothek verwendest.

Probleme bei der Modellkonvertierung/beim Exportieren

Problem: Beim Konvertieren oder Exportieren von Machine-Learning-Modellen in verschiedene Formate oder Plattformen können Fehler oder unerwartete Verhaltensweisen auftreten.

Lösung:

  • KompatibilitĂ€tsprĂŒfung: Stelle sicher, dass du Versionen von Bibliotheken und Frameworks verwendest, die miteinander kompatibel sind. Nicht ĂŒbereinstimmende Versionen können zu unerwarteten Fehlern bei der Konvertierung fĂŒhren.

  • Umgebung zurĂŒcksetzen: Wenn du eine interaktive Umgebung wie Jupyter oder Colab verwendest, solltest du nach wichtigen Änderungen oder Installationen einen Neustart deiner Umgebung in Betracht ziehen. Ein Neustart kann manchmal die zugrunde liegenden Probleme lösen.

  • Offizielle Dokumentation: Beziehe dich immer auf die offizielle Dokumentation des Tools oder der Bibliothek, die du fĂŒr die Konvertierung verwendest. Sie enthĂ€lt oft spezielle Richtlinien und Best Practices fĂŒr den Modellexport.

  • Community-UnterstĂŒtzung: Suche im offiziellen Repository der Bibliothek oder des Frameworks nach Ă€hnlichen Problemen, die von anderen Nutzern gemeldet wurden. Möglicherweise haben die Betreuer oder die Community in Diskussionsforen Lösungen oder Workarounds bereitgestellt.

  • RegelmĂ€ĂŸig aktualisieren: Stelle sicher, dass du die neueste Version des Tools oder der Bibliothek verwendest. Die Entwickler veröffentlichen hĂ€ufig Updates, die bekannte Fehler beheben oder die FunktionalitĂ€t verbessern.

  • Teste schrittweise: Bevor du eine vollstĂ€ndige Umstellung durchfĂŒhrst, solltest du den Prozess mit einem kleineren Modell oder Datensatz testen, um mögliche Probleme frĂŒhzeitig zu erkennen.

Gemeinschaft und UnterstĂŒtzung

Der Kontakt zu einer Gemeinschaft von Gleichgesinnten kann deine Erfahrungen und deinen Erfolg bei der Arbeit mit YOLOv8 erheblich verbessern. Im Folgenden findest du einige KanÀle und Ressourcen, die dir helfen können.

Foren und KanÀle, um Hilfe zu bekommen

GitHub Issues: Das Repository YOLOv8 auf GitHub hat eine Registerkarte "Issues", auf der du Fragen stellen, Fehler melden und neue Funktionen vorschlagen kannst. Die Community und die Betreuer sind hier aktiv und es ist ein guter Ort, um Hilfe bei bestimmten Problemen zu bekommen.

Ultralytics Discord Server: Ultralytics hat einen Discord Server, auf dem du dich mit anderen Nutzern und den Entwicklern austauschen kannst.

Offizielle Dokumentation und Ressourcen

Ultralytics YOLOv8 Docs: Die offizielle Dokumentation bietet einen umfassenden Überblick ĂŒber YOLOv8 und enthĂ€lt Anleitungen zur Installation, Nutzung und Fehlerbehebung.

Diese Ressourcen sollten eine solide Grundlage fĂŒr die Fehlerbehebung und die Verbesserung deiner YOLOv8 Projekte sowie fĂŒr den Kontakt mit anderen in der YOLOv8 Community bilden.

Fazit

Die Fehlerbehebung ist ein wesentlicher Bestandteil jedes Entwicklungsprozesses, und wenn man mit dem richtigen Wissen ausgestattet ist, kann man den Zeit- und Arbeitsaufwand fĂŒr die Lösung von Problemen erheblich reduzieren. Dieser Leitfaden befasst sich mit den hĂ€ufigsten Problemen, mit denen Nutzer/innen des YOLOv8 Modells im Ultralytics Ökosystem konfrontiert sind. Wenn du diese hĂ€ufigen Probleme verstehst und angehst, kannst du einen reibungsloseren Projektverlauf gewĂ€hrleisten und bessere Ergebnisse bei deinen Computer Vision Aufgaben erzielen.

Denk daran, dass die Ultralytics Community eine wertvolle Ressource ist. Der Austausch mit anderen Entwicklern und Experten kann zusÀtzliche Erkenntnisse und Lösungen liefern, die in der Standarddokumentation vielleicht nicht enthalten sind. Lerne immer weiter, experimentiere und teile deine Erfahrungen, um zum kollektiven Wissen der Gemeinschaft beizutragen.

Viel Spaß bei der Fehlersuche!



Erstellt am 2023-11-12, Aktualisiert am 2023-11-16
Autoren: glenn-jocher (2)

Kommentare