Zum Inhalt springen

Benutzerdefinierte Daten trainieren

📚 Diese Anleitung erklärt, wie du deinen eigenen Datensatz mit YOLOv5 🚀.

Bevor du anfängst

Klone das Repo und installiere die requirements.txt in einem Python>=3.8.0 Umgebung, einschließlich PyTorch>=1.8. Modelle und Datensätze werden automatisch von der neuesten YOLOv5 Version heruntergeladen.

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Mit benutzerdefinierten Daten trainieren

Ultralytics aktives Lernen

Die Erstellung eines benutzerdefinierten Modells zur Erkennung deiner Objekte ist ein iterativer Prozess, bei dem du Bilder sammelst und ordnest, deine interessanten Objekte kennzeichnest, ein Modell trainierst, es in der freien Wildbahn einsetzt, um Vorhersagen zu treffen, und dann dieses eingesetzte Modell nutzt, um Beispiele für Grenzfälle zu sammeln, die du wiederholen und verbessern kannst.

Lizenzierung

Ultralytics bietet zwei Lizenzierungsoptionen an:

Weitere Informationen findest du unter Ultralytics Lizenzierung.

YOLOv5 Modelle müssen auf beschrifteten Daten trainiert werden, damit sie die Klassen der Objekte in diesen Daten lernen können. Es gibt zwei Möglichkeiten, deinen Datensatz zu erstellen, bevor du mit dem Training beginnst:

Option 1: Erstellen eines Roboflow Datensatz

1.1 Bilder sammeln

Dein Modell lernt durch Vorbild. Es ist äußerst wichtig, dass du mit Bildern trainierst, die denen ähneln, die es in freier Wildbahn sehen wird. Idealerweise sammelst du eine Vielzahl von Bildern mit der gleichen Konfiguration (Kamera, Winkel, Beleuchtung usw.), wie du dein Projekt letztendlich einsetzen wirst.

Wenn das nicht möglich ist, kannst du mit einem öffentlichen Datensatz beginnen, um dein anfängliches Modell zu trainieren und dann während der Inferenz Bilder aus der freien Natur auswählen, um deinen Datensatz und dein Modell iterativ zu verbessern.

1.2 Etiketten erstellen

Sobald du Bilder gesammelt hast, musst du die interessanten Objekte mit Anmerkungen versehen, um eine Grundlage für dein Modell zu schaffen.

YOLOv5 Genauigkeiten

Roboflow Annotate ist ein einfaches webbasiertes Tool, mit dem du deine Bilder gemeinsam mit deinem Team verwalten, beschriften und im YOLOv5's Annotationsformat exportieren kannst.

1.3 Datensatz vorbereiten für YOLOv5

Unabhängig davon, ob du deine Bilder mit Roboflow beschriftest oder nicht, kannst du damit deinen Datensatz in das Format YOLO konvertieren, eine YOLOv5 YAML-Konfigurationsdatei erstellen und sie für den Import in dein Trainingsskript bereitstellen.

Erstelle ein kostenloses Roboflow Konto und lade deinen Datensatz in eine Public Arbeitsbereich, beschriften Sie alle unkommentierten Bilder und erstellen und exportieren Sie dann eine Version Ihres Datensatzes in YOLOv5 Pytorch Format.

Hinweis: YOLOv5 führt während des Trainings eine Online-Erweiterung durch. Wir empfehlen daher, für das Training mit YOLOv5 keine Erweiterungsschritte in Roboflow durchzuführen. Wir empfehlen jedoch, die folgenden Vorverarbeitungsschritte anzuwenden:

Empfohlene Vorverarbeitungsschritte

  • Auto-Ausrichtung - um die EXIF-Ausrichtung aus deinen Bildern zu entfernen.
  • Größe ändern (strecken) - auf die quadratische Eingabegröße deines Modells (640x640 ist die Vorgabe von YOLOv5 ).

Wenn du eine Version erstellst, erhältst du eine Momentaufnahme deines Datensatzes. So kannst du immer wieder zurückgehen und deine zukünftigen Modell-Trainingsläufe damit vergleichen, auch wenn du später weitere Bilder hinzufügst oder die Konfiguration änderst.

Export im YOLOv5 Format

Exportieren in YOLOv5 Pytorch Format, dann kopiere das Snippet in dein Trainingsskript oder dein Notizbuch, um deinen Datensatz herunterzuladen.

Roboflow Datensatz herunterladen Schnipsel

Option 2: Einen manuellen Datensatz erstellen

2.1 Erstellen dataset.yaml

COCO128 ist ein Beispiel für einen kleinen Tutorial-Datensatz, der aus den ersten 128 Bildern in COCO train2017. These same 128 images are used for both training and validation to verify our training pipeline is capable of overfitting. data/coco128.yaml(siehe unten) ist die Dataset-Konfigurationsdatei, die 1) das Stammverzeichnis des Datasets definiert path und relative Pfade zu train / val / test Bildverzeichnisse (oder *.txt Dateien mit Bildpfaden) und 2) eine Klasse names Wörterbuch:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes (80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

2.2 Etiketten erstellen

Nachdem du deine Bilder mit einem Beschriftungswerkzeug beschriftet hast, exportiere deine Beschriftungen nach YOLO Format, mit einer *.txt Datei pro Bild (wenn keine Objekte im Bild, keine *.txt Datei erforderlich ist). Die *.txt Dateispezifikationen sind:

  • Eine Zeile pro Objekt
  • Jede Zeile ist class x_center y_center width height Format.
  • Die Koordinaten der Box müssen in normalisierte xywh Format (von 0 bis 1). Wenn deine Boxen in Pixeln angegeben sind, teile x_center und width durch die Bildbreite, und y_center und height nach Bildhöhe.
  • Die Klassennummern sind null-indiziert (beginnen bei 0).

Roboflow Anmerkungen

Die Etikettendatei, die dem obigen Bild entspricht, enthält 2 Personen (Klasse 0) und ein Unentschieden (Klasse 27):

Roboflow Vorverarbeitung des Datensatzes

2.3 Verzeichnisse organisieren

Organisiere deine Zug- und Val-Bilder und Beschriftungen nach dem folgenden Beispiel. YOLOv5 nimmt an /coco128 ist innerhalb einer /datasets Verzeichnis neben Die /yolov5 Verzeichnis. YOLOv5 findet die Etiketten automatisch für jedes Bild durch Ersetzen der letzten Instanz von /images/ in jedem Bildpfad mit /labels/. Zum Beispiel:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 Datensatzstruktur

3. Wähle ein Modell

Wähle ein trainiertes Modell aus, um mit dem Training zu beginnen. Hier wählen wir YOLOv5s, das zweitkleinste und schnellste verfügbare Modell. In unserer README-Tabelle findest du einen vollständigen Vergleich aller Modelle.

YOLOv5 Modelle

4. Zug

Trainiere ein YOLOv5s-Modell auf COCO128, indem du den Datensatz, die Stapelgröße, die Bildgröße und entweder das Pre-Training --weights yolov5s.pt (empfohlen), oder zufällig initialisiert --weights '' --cfg yolov5s.yaml (nicht empfohlen). Vortrainierte Gewichte werden automatisch von der Datenbank heruntergeladen. neueste Version YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Tipp

💡 Hinzufügen --cache ram oder --cache disk um die Ausbildung zu beschleunigen (erfordert erhebliche RAM- und Festplattenressourcen).

Tipp

💡 Trainiere immer von einem lokalen Datensatz. Gemountete oder Netzlaufwerke wie Google Drive werden sehr langsam sein.

Alle Trainingsergebnisse werden gespeichert in runs/train/ mit inkrementellen Laufverzeichnissen, d.h. runs/train/exp2, runs/train/exp3 usw. Weitere Informationen findest du im Abschnitt Training in unserem Tutorial-Notizbuch. In Colab öffnen In Kaggle öffnen

5. Visualisiere

Comet Protokollierung und Visualisierung 🌟 NEU

Comet ist jetzt vollständig mit YOLOv5 integriert. Verfolge und visualisiere Modellmetriken in Echtzeit, speichere deine Hyperparameter, Datensätze und Modellprüfpunkte und visualisiere deine Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass du nie den Überblick über deine Arbeit verlierst, und macht es einfach, Ergebnisse zu teilen und mit Teams jeder Größe zusammenzuarbeiten!

Der Einstieg ist ganz einfach:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Um mehr über alle unterstützten Comet Funktionen für diese Integration zu erfahren, schau dir die Comet Tutorial. Wenn du mehr über Comet erfahren möchtest, besuche unsere Dokumentation. Probiere das Comet Colab Notebook aus: In Colab öffnen

YOLO UI

ClearML Protokollierung und Automatisierung 🌟 NEU

ClearML ist vollständig in YOLOv5 integriert, um deine Experimente zu verfolgen, Datensatzversionen zu verwalten und sogar Trainingsläufe aus der Ferne durchzuführen. Um ClearML zu aktivieren:

  • pip install clearml
  • laufen. clearml-init um eine Verbindung zu einem ClearML Server herzustellen

Du bekommst alle Funktionen, die du von einem Experiment-Manager erwartest: Live-Updates, Modell-Upload, Experiment-Vergleich usw. Aber ClearML verfolgt zum Beispiel auch unbestätigte Änderungen und installierte Pakete. Dank ClearML sind Tasks (so nennen wir die Experimente) auch auf verschiedenen Rechnern reproduzierbar! Mit nur einer zusätzlichen Zeile können wir eine YOLOv5 Trainingsaufgabe in eine Warteschlange einplanen, die von einer beliebigen Anzahl von ClearML Agenten (Arbeitern) ausgeführt wird.

Du kannst ClearML Data verwenden, um deinen Datensatz zu versionieren und ihn dann einfach mit seiner eindeutigen ID an YOLOv5 zu übergeben. So behältst du den Überblick über deine Daten, ohne dass du dir zusätzliche Mühe machen musst. Weitere Informationen findest du im ClearML Tutorial!

ClearML Experiment Management UI

Lokales Logging

Die Trainingsergebnisse werden automatisch mit Tensorboard und CSV Logger zu runs/trainwobei für jedes neue Training ein neues Experimentierverzeichnis erstellt wird als runs/train/exp2, runs/train/exp3, etc.

This directory contains train and val statistics, mosaics, labels, predictions and augmented mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.

Lokale Logging-Ergebnisse

Ergebnisdatei results.csv is updated after each epoch, and then plotted as results.png (unten), nachdem das Training abgeschlossen ist. Du kannst auch jede results.csv Datei manuell:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

ergebnisse.png

Nächste Schritte

Sobald dein Modell trainiert ist, kannst du deinen besten Kontrollpunkt verwenden best.pt zu:

  • Führen Sie CLI oder Python Inferenz auf neue Bilder und Videos
  • Validate accuracy on train, val and test splits
  • Export to TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML and TensorRT formats
  • Hyperparameter weiterentwickeln, um die Leistung zu verbessern
  • Verbessere dein Modell, indem du Bilder aus der realen Welt nimmst und sie deinem Datensatz hinzufügst

Unterstützte Umgebungen

Ultralytics bietet eine Reihe gebrauchsfertiger Umgebungen, die jeweils mit wichtigen Abhängigkeiten vorinstalliert sind, wie z. B. CUDA, CUDNN, Python, und PyTorch, um deine Projekte zu starten.

Projektstatus

YOLOv5 CI

Dieses Abzeichen zeigt an, dass alle YOLOv5 GitHub Actions Continuous Integration (CI) Tests erfolgreich bestanden wurden. Diese CI-Tests überprüfen die Funktionalität und Leistung von YOLOv5 in verschiedenen Bereichen: Training, Validierung, Inferenz, Export und Benchmarks. Sie gewährleisten einen konsistenten und zuverlässigen Betrieb unter macOS, Windows und Ubuntu. Die Tests werden alle 24 Stunden und bei jeder neuen Übertragung durchgeführt.

FAQ

Wie trainiere ich YOLOv5 auf meinem eigenen Datensatz?

Das Training von YOLOv5 auf einem benutzerdefinierten Datensatz umfasst mehrere Schritte:

  1. Bereite deinen Datensatz vor: Sammle und beschrifte die Bilder. Verwende Tools wie Roboflow um die Daten zu organisieren und im FormatYOLOv5 zu exportieren.
  2. Umgebung einrichten: Klone das YOLOv5 Repo und installiere die Abhängigkeiten:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Datensatzkonfiguration erstellen: Schreibe eine dataset.yaml Datei, in der die Zug-/Val-Pfade und Klassennamen definiert sind.
  4. Das Modell trainieren:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

Welche Tools kann ich verwenden, um meinen YOLOv5 Datensatz mit Anmerkungen zu versehen?

Du kannst Roboflow Annotate verwenden, ein intuitives, webbasiertes Tool zur Beschriftung von Bildern. Es unterstützt die Zusammenarbeit im Team und exportiert im Format YOLOv5 . Nach dem Sammeln der Bilder kannst du mit Roboflow effizient Anmerkungen erstellen und verwalten. Weitere Optionen sind Tools wie LabelImg und CVAT für lokale Beschriftungen.

Warum sollte ich Ultralytics HUB für die Ausbildung meiner YOLO Modelle nutzen?

Ultralytics HUB bietet eine durchgängige Plattform für die Schulung, den Einsatz und die Verwaltung von YOLO Modellen, ohne dass umfangreiche Programmierkenntnisse erforderlich sind. Die Vorteile der Nutzung von Ultralytics HUB sind

  • Einfache Modellschulung: Vereinfacht den Trainingsprozess mit vorkonfigurierten Umgebungen.
  • Datenmanagement: Verwalte mühelos Datensätze und Versionskontrolle.
  • Überwachung in Echtzeit: Integriert Tools wie Comet für die Verfolgung und Visualisierung von Metriken in Echtzeit.
  • Kollaboration: Ideal für Teamprojekte mit gemeinsamen Ressourcen und einfacher Verwaltung.

Wie konvertiere ich meine kommentierten Daten in das Format YOLOv5 ?

Um kommentierte Daten in das Format YOLOv5 zu konvertieren, verwende Roboflow:

  1. Lade deinen Datensatz in einen Roboflow Arbeitsbereich hoch.
  2. Beschrifte die Bilder, wenn sie noch nicht beschriftet sind.
  3. Generieren und exportieren den Datensatz in YOLOv5 Pytorch Format. Vergewissere dich, dass Vorverarbeitungsschritte wie automatische Ausrichtung und Größenanpassung (Streckung) an die quadratische Eingabegröße (z. B. 640x640) durchgeführt werden.
  4. Lade den Datensatz herunter und integriere ihn in dein YOLOv5 Trainingsskript.

Welche Lizenzierungsmöglichkeiten gibt es für die Nutzung von YOLOv5 in kommerziellen Anwendungen?

Ultralytics bietet zwei Lizenzierungsoptionen an:

  • AGPL-3.0 Lizenz: Eine Open-Source-Lizenz, die für die nicht-kommerzielle Nutzung geeignet ist, ideal für Studierende und Enthusiasten.
  • Unternehmenslizenz: Maßgeschneidert für Unternehmen, die YOLOv5 in kommerzielle Produkte und Dienstleistungen integrieren möchten. Ausführliche Informationen findest du auf unserer Seite zur Lizenzierung.

Weitere Informationen findest du in unserem Leitfaden zur Ultralytics Lizenzierung.


📅 Created 11 months ago ✏️ Updated 2 days ago

Kommentare