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
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:
- Die AGPL-3.0 Lizenz, eine von der OSI genehmigte Open-Source-Lizenz, ist ideal für Studenten und Enthusiasten.
- Die Enterprise-Lizenz für Unternehmen, die unsere KI-Modelle in ihre Produkte und Dienstleistungen einbinden möchten.
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.
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:
- 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.
Ausfuhr in YOLOv5 Pytorch
Format, kopieren Sie dann den Ausschnitt in Ihr Trainingsskript oder Notebook, um Ihren Datensatz herunterzuladen.
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
undwidth
nach der Bildbreite, undy_center
undheight
nach Bildhöhe. - Die Klassennummern sind null-indiziert (beginnen bei 0).
Die Etikettendatei, die dem obigen Bild entspricht, enthält 2 Personen (Klasse 0
) und ein Unentschieden (Klasse 27
):
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:
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.
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.
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.
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:
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!
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.
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'
Nächste Schritte
Sobald Ihr Modell trainiert ist, können Sie Ihren besten Kontrollpunkt verwenden best.pt
zu:
- ausführen. CLI oder Python Inferenz auf neue Bilder und Videos
- Validieren Sie die Genauigkeit von Train-, Val- und Test-Splits
- Exportieren in TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML und TensorRT
- Hyperparameter zur Leistungsverbesserung weiterentwickeln
- Verbessern Sie Ihr Modell, indem Sie Bilder aus der realen Welt auswählen und zu Ihrem Datensatz hinzufügen.
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.
- Kostenlose GPU Notizbücher:
- Google Wolke: GCP-Schnellstart-Anleitung
- Amazon: AWS Schnellstart-Anleitung
- Azure: AzureML-Schnellstart-Anleitung
- Docker: Docker-Schnellstart-Anleitung
Projektstatus
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:
- Bereiten Sie Ihren Datensatz vor: Sammeln und beschriften Sie Bilder. Verwenden Sie Werkzeuge wie Roboflow um Daten zu organisieren und im FormatYOLOv5 zu exportieren.
- Umgebung einrichten: Klonen Sie das YOLOv5 Repo und installieren Sie die Abhängigkeiten:
- Dataset-Konfiguration erstellen: Schreiben Sie eine
dataset.yaml
Datei, in der train/val-Pfade und Klassennamen definiert sind. - Das Modell trainieren:
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:
- Laden Sie Ihren Datensatz in einen Roboflow Arbeitsbereich hoch.
- Beschriften Sie die Bilder, falls sie noch nicht beschriftet sind.
- 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. - 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.