Zum Inhalt springen

Benutzerdefinierte Daten trainieren

📚 Dieser Leitfaden erklärt, wie Sie Ihren eigenen benutzerdefinierten Datensatz mit YOLOv5 🚀.

Bevor Sie beginnen

Repo klonen und requirements.txt in einem Python>=3.8.0 Umgebung, einschließlich PyTorch>=1.8. Modelle und Datensätze werden automatisch von der neuestenVersion von YOLOv5 heruntergeladen.

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

Trainieren mit benutzerdefinierten Daten

Ultralytics aktives Lernen

Die Erstellung eines benutzerdefinierten Modells zur Erkennung Ihrer Objekte ist ein iterativer Prozess, bei dem Sie Bilder sammeln und organisieren, Ihre interessierenden Objekte beschriften, ein Modell trainieren, es in der freien Natur einsetzen, um Vorhersagen zu treffen, und dann dieses eingesetzte Modell verwenden, um Beispiele für Sonderfälle zu sammeln, die Sie wiederholen und verbessern können.

Lizenzvergabe

Ultralytics bietet zwei Lizenzierungsoptionen:

Weitere Einzelheiten finden Sie unter Ultralytics Lizenzierung.

YOLOv5 Modelle müssen auf beschrifteten Daten trainiert werden, um Klassen von Objekten in diesen Daten zu lernen. Es gibt zwei Möglichkeiten, Ihren Datensatz zu erstellen, bevor Sie mit dem Training beginnen:

Option 1: Erstellen eines Roboflow Datensatz

1.1 Bilder sammeln

Ihr Modell lernt durch Vorbild. Es ist von größter Bedeutung, dass Sie mit Bildern trainieren, die denen ähneln, die es in der freien Natur sehen wird. Im Idealfall sammeln Sie eine Vielzahl von Bildern mit der gleichen Konfiguration (Kamera, Winkel, Beleuchtung usw.), die Sie für Ihr Projekt verwenden werden.

Wenn dies nicht möglich ist, können Sie mit einem öffentlichen Datensatz beginnen, um Ihr erstes Modell zu trainieren, und dann während der Inferenz Bilder aus der freien Natur auswählen, um Ihren Datensatz und Ihr Modell iterativ zu verbessern.

1.2 Etiketten erstellen

Sobald Sie Bilder gesammelt haben, müssen Sie die interessanten Objekte mit Anmerkungen versehen, um eine Basiswahrheit zu schaffen, aus der Ihr Modell lernen kann.

YOLOv5 Genauigkeiten

Roboflow Annotate ist ein einfaches, webbasiertes Tool, mit dem Sie Ihre Bilder gemeinsam mit Ihrem Team verwalten, beschriften und in das Annotationsformat vonYOLOv5 exportieren können.

1.3 Vorbereiten des Datensatzes für YOLOv5

Unabhängig davon, ob Sie Ihre Bilder mit Roboflow beschriften oder nicht, können Sie damit Ihren Datensatz in das Format YOLO konvertieren, eine YOLOv5 YAML-Konfigurationsdatei erstellen und sie für den Import in Ihr Trainingsskript bereitstellen.

Erstellen Sie ein kostenloses Roboflow Konto und laden Sie Ihren Datensatz in ein Public Arbeitsbereich, beschriften Sie alle unkommentierten Bilder und erzeugen und exportieren Sie dann eine Version Ihres Datensatzes in YOLOv5 Pytorch Format.

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

Empfohlene Vorverarbeitungsschritte

  • Auto-Orient - zum Entfernen der EXIF-Ausrichtung aus Ihren Bildern.
  • Größe ändern (strecken) - auf die quadratische Eingabegröße Ihres Modells (640x640 ist die Vorgabe von YOLOv5 ).

Durch die Erstellung einer Version erhalten Sie eine Momentaufnahme Ihres Datensatzes, so dass Sie jederzeit zurückgehen und Ihre zukünftigen Modell-Trainingsläufe damit vergleichen können, auch wenn Sie später weitere Bilder hinzufügen oder die Konfiguration ändern.

Export im Format YOLOv5

Ausfuhr in YOLOv5 Pytorch Format, kopieren Sie dann den Ausschnitt in Ihr Trainingsskript oder Notebook, um Ihren Datensatz herunterzuladen.

Roboflow Datensatz herunterladen Schnipsel

Option 2: Erstellen eines manuellen Datensatzes

2.1 Erstellen dataset.yaml

COCO128 ist ein Beispiel für einen kleinen Übungsdatensatz, der aus den ersten 128 Bildern in COCO train2017. Dieselben 128 Bilder werden sowohl für das Training als auch für die Validierung verwendet, um zu überprüfen, ob unsere Trainingspipeline in der Lage ist Überanpassung. data/coco128.yamlist 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 Sie Ihre Bilder mit einem Beschriftungswerkzeug beschriftet haben, exportieren Sie Ihre Beschriftungen in YOLO Formatmit einem *.txt Datei pro Bild (wenn keine Objekte im Bild, keine *.txt Datei erforderlich ist). Die *.txt Datei-Spezifikationen sind:

  • Eine Zeile pro Objekt
  • Jede Zeile ist class x_center y_center width height Format.
  • Die Koordinaten der Box müssen in normierte xywh Format (von 0 bis 1). Wenn Ihre Felder in Pixeln angegeben sind, teilen Sie x_center und width nach der 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

Organisieren Sie Ihre Zug- und Val-Bilder und Beschriftungen entsprechend dem folgenden Beispiel. YOLOv5 nimmt an /coco128 ist innerhalb einer /datasets Verzeichnis neben die /yolov5 Verzeichnis. YOLOv5 findet die Beschriftungen 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ählen Sie ein Modell

Wählen Sie ein vorab 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 finden Sie einen vollständigen Vergleich aller Modelle.

YOLOv5 Modelle

4. Zug

Trainieren Sie ein YOLOv5s-Modell auf COCO128, indem Sie den Datensatz, die Stapelgröße, die Bildgröße und entweder ein vortrainiertes --weights yolov5s.pt (empfohlen), oder zufällig initialisiert --weights '' --cfg yolov5s.yaml (nicht empfohlen). Vortrainierte Gewichte werden automatisch aus dem 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

💡 Trainieren Sie immer mit 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 Einzelheiten finden Sie im Abschnitt Ausbildung in unserem Tutorial-Notizbuch. In Colab öffnen In Kaggle öffnen

5. Visualisieren Sie

Comet Protokollierung und Visualisierung 🌟 NEU

Comet ist jetzt vollständig mit YOLOv5 integriert. Verfolgen und visualisieren Sie Modellmetriken in Echtzeit, speichern Sie Ihre Hyperparameter, Datensätze und Modellprüfpunkte, und visualisieren Sie Ihre Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass Sie nie den Überblick über Ihre Arbeit verlieren, und erleichtert die gemeinsame Nutzung von Ergebnissen und die Zusammenarbeit in Teams jeder Größe!

Der Einstieg ist 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, lesen Sie die Comet Tutorial. Wenn Sie mehr über Comet erfahren möchten, besuchen Sie unsere Dokumentation. Probieren Sie zunächst das Comet Colab Notebook aus: In Colab öffnen

YOLO UI

ClearML Protokollierung und Automatisierung 🌟 NEU

ClearML ist vollständig in YOLOv5 integriert, um Ihre 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 zur Verbindung mit einem ClearML Server

Sie erhalten all die großartigen Funktionen, die Sie von einem Experiment-Manager erwarten: Live-Updates, Modell-Upload, Experiment-Vergleich usw., aber ClearML verfolgt zum Beispiel auch unbestätigte Änderungen und installierte Pakete. Dank dessen sind ClearML Tasks (so nennen wir 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.

Sie können ClearML Data verwenden, um Ihren Datensatz zu versionieren und ihn dann einfach mit seiner eindeutigen ID an YOLOv5 zu übergeben. Auf diese Weise behalten Sie den Überblick über Ihre Daten, ohne dass Sie sich zusätzliche Mühe machen müssen. Weitere Informationen finden Sie im ClearML Tutorial!

ClearML Experiment Management UI

Lokale Protokollierung

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

Dieses Verzeichnis enthält Train- und Val-Statistiken, Mosaike, Beschriftungen, Vorhersagen und erweiterte Mosaike sowie Metriken und Diagramme, einschließlich Precision-Recall-Kurven (PR) und Konfusionsmatrizen.

Lokale Logging-Ergebnisse

Ergebnisdatei results.csv wird aktualisiert nach jeder Epocheund dann aufgetragen als results.png (unten) nach Abschluss des Trainings. Sie können 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 Ihr Modell trainiert ist, können Sie Ihren besten Kontrollpunkt verwenden best.pt zu:

Unterstützte Umgebungen

Ultralytics bietet eine Reihe gebrauchsfertiger Umgebungen, die jeweils mit wichtigen Abhängigkeiten vorinstalliert sind, z. B. CUDA, CUDNN, Python, und PyTorchvorinstalliert, um Ihre Projekte in Gang zu bringen.

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 Schlüsselbereichen: Training, Validierung, Inferenz, Export und Benchmarks. Sie gewährleisten einen konsistenten und zuverlässigen Betrieb unter macOS, Windows und Ubuntu, wobei die Tests alle 24 Stunden und bei jeder neuen Übertragung durchgeführt werden.

FAQ

Wie trainiere ich YOLOv5 auf meinem benutzerdefinierten Datensatz?

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

  1. Bereiten Sie Ihren Datensatz vor: Sammeln und beschriften Sie Bilder. Verwenden Sie Werkzeuge wie Roboflow um Daten zu organisieren und im FormatYOLOv5 zu exportieren.
  2. Umgebung einrichten: Klonen Sie das YOLOv5 Repo und installieren Sie die Abhängigkeiten:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Dataset-Konfiguration erstellen: Schreiben Sie eine dataset.yaml Datei, in der train/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?

Sie können 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 von Bildern können Sie 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 Schulung meiner YOLO Modelle verwenden?

Ultralytics HUB bietet eine End-to-End-Plattform für die Schulung, den Einsatz und die Verwaltung von YOLO Modellen, ohne dass umfangreiche Programmierkenntnisse erforderlich sind. Zu den Vorteilen der Nutzung von Ultralytics HUB gehören:

  • Einfache Modellschulung: Vereinfacht den Schulungsprozess durch vorkonfigurierte Umgebungen.
  • Datenverwaltung: Mühelose Verwaltung von Datensätzen und Versionskontrolle.
  • Überwachung in Echtzeit: Integriert Tools wie Comet zur Verfolgung und Visualisierung von Metriken in Echtzeit.
  • Kollaboration: Ideal für Teamprojekte mit gemeinsamen Ressourcen und einfacher Verwaltung.

Wie konvertiere ich meine mit Anmerkungen versehenen Daten in das Format YOLOv5 ?

Konvertierung von kommentierten Daten in das Format YOLOv5 mit Roboflow:

  1. Laden Sie Ihren Datensatz in einen Roboflow Arbeitsbereich hoch.
  2. Beschriften Sie die Bilder, falls sie noch nicht beschriftet sind.
  3. Generieren und Exportieren den Datensatz in YOLOv5 Pytorch Format. Stellen Sie sicher, dass Vorverarbeitungsschritte wie automatische Ausrichtung und Größenanpassung (Streckung) an die quadratische Eingabegröße (z. B. 640x640) durchgeführt werden.
  4. Laden Sie das Dataset herunter und integrieren Sie es in Ihr YOLOv5 Trainingsskript.

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

Ultralytics bietet zwei Lizenzierungsoptionen:

  • AGPL-3.0 Lizenz: Eine Open-Source-Lizenz für die nicht-kommerzielle Nutzung, ideal für Studenten und Enthusiasten.
  • Unternehmenslizenz: Maßgeschneidert für Unternehmen, die YOLOv5 in kommerzielle Produkte und Dienstleistungen integrieren möchten. Ausführliche Informationen finden Sie auf unserer Lizenzierungsseite.

Weitere Einzelheiten finden Sie in unserem Leitfaden zur Ultralytics Lizenzierung.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 1 Monat

Kommentare