Die Bilderkennung von YOLOv8 ist hervorragend, aber das Training des Modells ist eine wichtige Aufgabe, die Sie nicht übersehen sollten.
YOLOv8 ist ein Echtzeit-Objekterkennungsalgorithmus, der im Bereich der Objekterkennung weit verbreitet ist. Es ist Teil der von Ultralytics entwickelten You Only Look Once (YOLO)-Reihe. Der Algorithmus verfolgt, erkennt, segmentiert Instanzen, schätzt die Pose und klassifiziert Objekte in Bildern und Videos. Ziel ist es, schneller und genauer als seine Vorgängeralgorithmen zu sein.
Die Verwendung von YOLOv8 bei experimentellen Datensätzen wie CIFAR-10 und CIFAR-100 ist für Proof-of-Concept-Projekte (POC) oft einfacher als bei realen Datensätzen, die angepasste Datensätze erfordern.
Dieses Tutorial führt Sie durch die Schritte zum Trainieren von YOLOv8 mit benutzerdefinierten Daten.
Einrichten der Python-Umgebung
Beginnen Sie mit der Installation der Entwicklungsumgebung für das Projekt, indem Sie die folgenden Anweisungen befolgen.
- Gehen Sie zum Terminal und erstellen Sie ein neues Verzeichnis mit dem Namen yolov8project:
mkdir yolov8project
- Navigieren Sie zum Projektverzeichnis und Erstellen Sie eine virtuelle Umgebung:
cd yolov8project
python -m venv env - Aktivieren Sie dann die virtuelle Umgebung.
Um Ihren Code auszuführen, müssen Sie Ultralytics installieren, eine Bibliothek zur Objekterkennung und Bildsegmentierung. Es ist auch eine YOLOv8-Abhängigkeit. Es installieren mit pip indem Sie den folgenden Befehl ausführen.# Unter Windows
env/Scripts/activate# Unter Linux / macOS
Quelle env/bin/activatePip Install Ultralytics
- Dieser Befehl installiert das vorab trainierte Modell von YOLOv8. yolov8n.pt. Testen Sie das Modell, indem Sie die folgenden Befehle ausführen, um mit YOLOv8 eine Erkennung mit vorab trainierten Gewichten für das von Ihnen ausgewählte Bild oder Video durchzuführen.
Wenn alles perfekt funktioniert, stehen die Ergebnisse im zur Verfügung yolov8project Verzeichnis im läuft/erkennen/exp Unterverzeichnis.#Bilderkennung
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"#Videoerkennung
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"
Vorbereiten Ihres benutzerdefinierten Datensatzes
Die Schritte zur Vorbereitung Ihres benutzerdefinierten Datensatzes umfassen Datenerfassung, Datenkennzeichnung und Datenaufteilung (Training, Tests, Validierung).
Datensammlung
Hierbei wird eine Reihe von Bildern gesammelt, die die Objekte enthalten, die Sie erkennen möchten. Stellen Sie sicher, dass Sie qualitativ hochwertige Bilder verwenden, die scharf sind und die Objekte deutlich sichtbar sind. Sie können zum Sammeln von Bildern verschiedene Tools verwenden, z. B. Google Bilder, Flickr oder Ihre eigene Kamera. Wenn Sie keinen Bilddatensatz haben, verwenden Sie den Datensatz aus openimages Datenbank. In diesem Artikel wird das Sicherheitsbild auf der Baustelle verwendet Datensatz von Kaggle.
Datenkennzeichnung
Nachdem Sie Ihre Bilder gesammelt haben, müssen Sie sie beschriften. Dies bedeutet, die Objekte in jedem Bild und ihre Begrenzungsrahmen zu identifizieren. Es stehen mehrere Tools zur Verfügung, mit denen Sie Ihre Daten kennzeichnen können, z. B. LabelImg, CVAT und Roboflow. Die Nutzung dieser Tools ist allesamt kostenlos.
Aufteilen der Daten
Um Modelle für maschinelles Lernen zu trainieren, müssen Sie Ihre Daten in Trainings- und Testsätze aufteilen. Versuchen Sie es mit einem Aufteilungsverhältnis von 70 % bis 30 %, wenn Sie große Datenmengen verwenden. Ansonsten bleiben Sie bei 80–20 %, um eine Über- oder Unteranpassung Ihres Modells zu vermeiden.
Verwenden Split-Ordner, um Ihre Daten nach dem Zufallsprinzip in die Trainings-, Test- und Validierungssätze mit dem gewünschten Aufteilungsverhältnis aufzuteilen.
Konfigurieren Sie YOLOv8 für Ihren Datensatz
Nachdem Sie Ihre Daten beschriftet haben, fahren Sie mit der Konfiguration von YOLOv8 für Ihren benutzerdefinierten Datensatz fort. Dazu gehört die Erstellung einer Konfigurationsdatei, die Folgendes angibt:
- Der Weg zu Ihren Trainingsdaten.
- Der Pfad zu Ihren Validierungsdaten.
- Die Anzahl der Klassen, die Sie erkennen möchten.
Erstellen Sie eine config.yaml-Datei, um die Konfiguration zu speichern:
Weg:(DatensatzVerzeichnisWeg)
Zug:(ZugDatensatzOrdnerWeg)
prüfen:(prüfenDatensatzOrdnerWeg)
gültig:(ValidierungDatensatzOrdnerWeg)# Klassen
nc:5# Ersetzen Sie basierend auf der Anzahl der Klassen Ihres Datensatzes
# Klassennamen
# Ersetzen Sie alle Klassennamen durch die Namen Ihrer eigenen Klassen
Namen:['Klasse 1','Klasse 2','Klasse3','Klasse4','Klasse5']
Das Erstellen der Konfigurationsdatei ist eine hilfreiche Möglichkeit, die entscheidenden Parameter für Ihr Computer-Vision-Modell zu strukturieren und zu speichern. Stellen Sie sicher, dass Sie die Datei config.yaml entsprechend der Art und Struktur Ihres Datensatzes aktualisieren.
Stellen Sie sicher, dass Sie die richtigen Pfade für Ihre Datensätze verwenden, da das Training des Modells vollständig auf der Konfigurationsdatei basiert.
Training von YOLOv8 zu benutzerdefinierten Daten
Sobald Sie die Konfigurationsdatei erstellt haben, beginnen Sie mit dem Training von YOLOv8. Verwenden Sie das YOLOv8-Befehlszeilentool, um Ihr Modell zu trainieren. Das Befehlszeilentool übernimmt mehrere Parameter wie den Pfad zur Konfigurationsdatei, die Anzahl der Epochen und die Bildgröße wie folgt:
yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640
Dieser Befehl besteht aus mehreren Teilen.
Aufgabe legt den Typ der Aufgabe fest: Erkennen, Segmentieren oder Klassifizieren. Modus stellt eine Aktion dar: Trainieren, Vorhersagen, Validieren, Exportieren, Verfolgen oder Benchmarking. Modell ist das zu verwendende Modell, in diesem Fall yolov8n.pt. Sie können auch yolov8s/yolov8l/yolov8x verwenden.
Epochen stellt die Anzahl der Trainingsrunden dar (10). imgsz stellt die Bildgröße dar (640). Die Bildgröße sollte immer auf ein Vielfaches von 32 eingestellt werden.
Hier ist ein Beispiel für die Ausgabe, die Sie erwarten können:
Die für das Training benötigte Zeit hängt von der Größe Ihres Datensatzes, der Anzahl der Epochen und der Anzahl der Klassen ab, die Sie erkennen möchten. Sobald der Trainingsprozess abgeschlossen ist, verfügen Sie über ein trainiertes YOLOv8-Modell, mit dem Sie Objekte in Bildern und Videos erkennen können.
Führen Sie nach Abschluss des Trainings eine Schlussfolgerung mit den neuen Gewichten aus, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Navigieren Sie zu Läufe/Train/exp/Gewichte/best.pt Verzeichnis, um auf die individuell trainierten Gewichte zuzugreifen. YOLOv8 hat das vorhergesagte Bild im gespeichert läuft/erkennen/exp Unterverzeichnis.
Bewertung der Leistung des Modells
Sie können die Leistung des YOLOv8-Modells mit dem folgenden Befehl bewerten, der das Modell anhand einer Reihe von Testbildern bewertet:
yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640
Die erwarteten Ergebnisse sind wie folgt:
Der Bewertungsprozess generiert verschiedene Metriken wie Präzision, Rückruf und F1-Score. Die Präzisionsmetrik misst den Prozentsatz der Objekte, die korrekt erkannt wurden. Die Rückrufmetrik misst den Prozentsatz der Objekte, die YOLOv8 erkennt. Der F1-Score ist ein gewichteter Durchschnitt der Präzisions- und Erinnerungsmetriken.
Bereitstellen Ihres benutzerdefinierten YOLOv8-Modells
Testen Sie die Leistung Ihres YOLOv8-Modells.
Yolo erkennt Vorhersage model=path/to/best.pt source='path/to/image.jpg'
Die Ausgabe ist wie folgt:
Speichern Sie dann die Gewichte des Modells in einer Datei.
yolo export model=path/to/best.pt format=onnx
Verwenden Sie die Datei, um das Modell in Ihre Anwendung zu laden und damit Objekte in Echtzeit zu erkennen. Wenn Sie das Modell auf einem bereitstellen Cloud-DienstVerwenden Sie den Cloud-Dienst, um Objekte in Bildern und Videos zu erkennen, die sich im Dienst befinden.
YOLOv8 Imbiss
Das Ultralytics-Team hat die Modelle der YOLO-Serie kontinuierlich verbessert. Dies hat sie zu Branchenführern in der Objekterkennungstechnologie und im Bereich Computer Vision gemacht.
YOLOv8 ist ein verbessertes Modell, mit dem Sie viele Arten von Computer-Vision-Projekten abwickeln können.