YOLOv5 auf benutzerdefinierten Daten trainieren
📚 Dieser Leitfaden erklärt, wie Sie Ihren eigenen benutzerdefinierten Datensatz mit dem YOLOv5 Modell 🚀. Das Training von benutzerdefinierten Modellen ist ein grundlegender Schritt bei der Anpassung von Computer-Vision-Lösungen an spezifische reale Anwendungen, die über die allgemeine Objekterkennung hinausgehen.
Bevor Sie beginnen
Stellen Sie zunächst sicher, dass Sie die erforderliche Umgebung eingerichtet haben. Klonen Sie das YOLOv5 und installieren Sie die erforderlichen Abhängigkeiten von requirements.txt
. A Python.8.0 Umwelt mit PyTorch.8 ist unerlässlich. Modelle und Datensätze werden automatisch von der neuesten YOLOv5 heruntergeladen. freigeben wenn sie nicht lokal gefunden werden.
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies
Trainieren mit benutzerdefinierten Daten
Die Entwicklung eines benutzerdefinierten Objekterkennungsmodells ist ein iterativer Prozess:
- Sammeln und Organisieren von Bildern: Sammeln Sie Bilder, die für Ihre spezielle Aufgabe relevant sind. Hochwertige, vielfältige Daten sind entscheidend. Siehe unseren Leitfaden zur Datenerfassung und -beschriftung.
- Objekte beschriften: Beschriften Sie die interessanten Objekte in Ihren Bildern genau.
- Trainieren Sie ein Modell: Verwenden Sie die beschrifteten Daten, um Ihr YOLOv5 zu trainieren. Nutzen Sie Transfer Learning, indem Sie mit vortrainierten Gewichten beginnen.
- Einsetzen und Vorhersagen: Verwenden Sie das trainierte Modell für die Inferenz auf neue, ungesehene Daten.
- Sammeln Sie Randfälle: Ermitteln Sie Szenarien, in denen das Modell schlecht abschneidet(Randfälle), und fügen Sie Ihrem Datensatz ähnliche Daten hinzu, um die Robustheit zu verbessern. Wiederholen Sie den Zyklus.
Ultralytics HUB bietet eine rationalisierte, codefreie Lösung für den gesamten Zyklus des maschinellen Lernens (MLOps), einschließlich Datensatzverwaltung, Modelltraining und Bereitstellung.
Lizenzvergabe
Ultralytics bietet zwei Lizenzierungsoptionen für verschiedene Nutzungsszenarien:
- AGPL-3.0 : Diese von der OSI genehmigte Open-Source-Lizenz ist ideal für Studenten, Forscher und Enthusiasten, die sich für eine offene Zusammenarbeit und den Wissensaustausch einsetzen. Sie erfordert, dass abgeleitete Werke unter derselben Lizenz weitergegeben werden. In der LICENSE-Datei finden Sie alle Einzelheiten.
- Unternehmenslizenz: Diese Lizenz wurde für kommerzielle Anwendungen entwickelt und ermöglicht die nahtlose Integration der Ultralytics Software und KI-Modelle in kommerzielle Produkte und Dienstleistungen ohne die Open-Source-Bestimmungen der AGPL-3.0. Wenn Ihr Projekt einen kommerziellen Einsatz erfordert, fordern Sie eine Enterprise-Lizenz an.
Weitere Informationen zu unseren Lizenzierungsoptionen finden Sie auf der Ultralytics .
Bevor mit dem Training begonnen werden kann, muss der Datensatz vorbereitet werden.
1. Datensatz erstellen
YOLOv5 benötigen beschriftete Daten, um die visuellen Merkmale von Objektklassen zu lernen. Die richtige Organisation Ihres Datensatzes ist entscheidend.
1.1 Erstellen dataset.yaml
Die Datensatz-Konfigurationsdatei (z. B., coco128.yaml
) gibt einen Überblick über die Struktur des Datensatzes, die Klassennamen und die Pfade zu den Bildverzeichnissen. COCO128 dient als kleiner Beispieldatensatz, der die ersten 128 Bilder aus dem umfangreichen COCO Datensatz. Es ist nützlich, um die Trainingspipeline schnell zu testen und mögliche Probleme zu diagnostizieren, wie Überanpassung.
Die dataset.yaml
Dateistruktur umfasst:
path
: Das Stammverzeichnis, das den Datensatz enthält.train
,val
,test
: Relative Pfade vonpath
zu Verzeichnissen mit Bildern oder Textdateien, in denen die Bildpfade für die Trainings-, Validierungs- und Testsätze aufgeführt sind.names
: Ein Wörterbuch, das die Klassenindizes (beginnend bei 0) den entsprechenden Klassennamen zuordnet.
Nachfolgend finden Sie die Struktur für coco128.yaml
(Ansicht auf GitHub):
# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128
# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images
# Classes (example using 80 COCO classes)
names:
0: person
1: bicycle
2: car
# ... (remaining COCO classes)
77: teddy bear
78: hair drier
79: toothbrush
1.2 Hebelwirkung von Modellen für die automatisierte Kennzeichnung
Die manuelle Beschriftung mit Hilfe von Werkzeugen ist zwar ein gängiger Ansatz, kann aber sehr zeitaufwändig sein. Jüngste Fortschritte bei den Grundlagenmodellen bieten Möglichkeiten zur Automatisierung oder Halbautomatisierung des Beschriftungsprozesses, wodurch die Erstellung von Datensätzen erheblich beschleunigt werden kann. Hier sind einige Beispiele für Modelle, die bei der Erstellung von Beschriftungen helfen können:
- Google Zwillinge: Große multimodale Modelle wie Gemini verfügen über leistungsstarke Fähigkeiten zum Bildverständnis. Sie können aufgefordert werden, Objekte in Bildern zu identifizieren und zu lokalisieren, indem sie Begrenzungsrahmen oder Beschreibungen erzeugen, die in Beschriftungen im YOLO umgewandelt werden können. Erkunden Sie das Potenzial von Gemini in dem mitgelieferten Tutorial-Notebook.
- SAM2 (Segment Anything Model 2): Foundation-Modelle, die sich auf die Segmentierung konzentrieren, wie SAM2, können Objekte mit hoher Präzision identifizieren und abgrenzen. Obwohl sie in erster Linie der Segmentierung dienen, können die resultierenden Masken oft in Bounding-Box-Kommentare umgewandelt werden, die sich für Aufgaben der Objekterkennung eignen.
- YOLOWorld: Dieses Modell bietet Erkennungsfunktionen mit offenem Vokabular. Sie können Textbeschreibungen der Objekte, an denen Sie interessiert sind, bereitstellen, und YOLOWorld kann sie in Bildern ohne vorheriges Training für diese spezifischen Klassen lokalisieren. Dies kann als Ausgangspunkt für die Erstellung erster Beschriftungen verwendet werden, die dann verfeinert werden können.
Die Verwendung dieser Modelle kann einen "Pre-Labeling"-Schritt darstellen, der den manuellen Aufwand reduziert. Es ist jedoch von entscheidender Bedeutung, die automatisch generierten Beschriftungen zu überprüfen und zu verfeinern, um Genauigkeit und Konsistenz zu gewährleisten, da sich die Qualität direkt auf die Leistung Ihres trainierten YOLOv5 auswirkt. Stellen Sie nach der Generierung (und eventuellen Verfeinerung) Ihrer Labels sicher, dass sie den YOLO Format: eins *.txt
Datei pro Bild, wobei jede Zeile ein Objekt darstellt als class_index x_center y_center width height
(normalisierte Koordinaten, Klasse mit Null-Index). Wenn ein Bild keine Objekte von Interesse enthält, wird keine entsprechende *.txt
Datei benötigt wird.
Das YOLO *.txt
Die Dateispezifikationen sind präzise:
- Eine Zeile pro Objektbegrenzungsrahmen.
- Jede Zeile muss enthalten:
class_index x_center y_center width height
. - Koordinaten müssen sein normalisiert auf einen Bereich zwischen 0 und 1. Dazu teilen Sie die Pixelwerte von
x_center
undwidth
durch die Gesamtbreite des Bildes, und teilen Siey_center
undheight
durch die Gesamthöhe des Bildes. - Die Klassenindizes sind null-indiziert (d. h., die erste Klasse wird dargestellt durch
0
, die zweite durch1
und so weiter).
Die Etikettendatei, die dem obigen Bild entspricht, enthält zwei "Person"-Objekte (Klassenindex 0
) und ein 'Krawatten'-Objekt (Klassenindex 27
), würde wie folgt aussehen:
1.3 Verzeichnisse organisieren
Strukturieren Sie Ihr Datensätze Verzeichnis wie unten dargestellt. Standardmäßig erwartet YOLOv5 das Verzeichnis des Datensatzes (z.B., /coco128
) innerhalb einer /datasets
Ordner befindet angrenzend an die /yolov5
Repository-Verzeichnis.
YOLOv5 findet automatisch die Beschriftungen für jedes Bild, indem es die letzte Instanz von /images/
im Bildpfad mit /labels/
. Zum Beispiel:
../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file
Die empfohlene Verzeichnisstruktur ist:
/datasets/
└── coco128/ # Dataset root
├── images/
│ ├── train2017/ # Training images
│ │ ├── 000000000009.jpg
│ │ └── ...
│ └── val2017/ # Validation images (optional if using same set for train/val)
│ └── ...
└── labels/
├── train2017/ # Training labels
│ ├── 000000000009.txt
│ └── ...
└── val2017/ # Validation labels (optional if using same set for train/val)
└── ...
2. Wählen Sie ein Modell
Wählen Sie ein bereits trainiertes Modell, um den Trainingsprozess zu starten. Der Start mit vortrainierten Gewichten beschleunigt das Lernen erheblich und verbessert die Leistung im Vergleich zum Training von Grund auf. YOLOv5 bietet verschiedene Modellgrößen, die jeweils ein ausgewogenes Verhältnis zwischen Geschwindigkeit und Genauigkeit aufweisen. YOLOv5s ist zum Beispiel das zweitkleinste und schnellste Modell, das sich für ressourcenbeschränkte Umgebungen eignet. In der README-Tabelle finden Sie einen detaillierten Vergleich aller verfügbaren Modelle.
3. Zug
Beginnen Sie die Modellschulung unter Verwendung der train.py
Skript. Wesentliche Argumente sind:
--img
: Definiert die Eingabe Bildgröße (z.B.,--img 640
). Größere Größen liefern im Allgemeinen eine bessere Genauigkeit, erfordern aber mehr GPU .--batch
: Bestimmt die Chargengröße (z.B.,--batch 16
). Wählen Sie die größte Größe, die Ihr GPU verarbeiten kann.--epochs
: Gibt die Gesamtzahl der Trainingseinheiten an Epochen (z.B.,--epochs 100
). Eine Epoche entspricht einem vollständigen Durchlauf durch den gesamten Trainingsdatensatz.--data
: Pfad zu Ihremdataset.yaml
Datei (z.B.,--data coco128.yaml
).--weights
: Pfad zur Datei mit den Anfangsgewichten. Mit vortrainierten Gewichten (z.B.,--weights yolov5s.pt
) wird für eine schnellere Konvergenz und bessere Ergebnisse dringend empfohlen. Um von Grund auf zu trainieren (nicht empfohlen, es sei denn, Sie haben einen sehr großen Datensatz und spezielle Anforderungen), verwenden Sie--weights '' --cfg yolov5s.yaml
.
Vorgefertigte Gewichte werden automatisch von der neuesten YOLOv5 heruntergeladen, wenn sie nicht lokal gefunden werden.
# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
Optimieren Sie die Trainingsgeschwindigkeit
💡 Arbeitgeber --cache ram
oder --cache disk
zum Zwischenspeichern von Datensatzbildern in RAM bzw. der lokalen Festplatte. Dadurch wird das Training erheblich beschleunigt, insbesondere wenn E/A-Operationen (Eingabe/Ausgabe) von Datensätzen einen Engpass darstellen. Beachten Sie, dass dies erheblichen RAM- oder Festplattenplatz erfordert.
Lokale Datenspeicherung
💡 Trainieren Sie immer mit lokal gespeicherten Datensätzen. Der Zugriff auf Daten von Netzlaufwerken (z. B. Google Drive) oder einem entfernten Speicher kann deutlich langsamer sein und die Trainingsleistung beeinträchtigen. Das Kopieren Ihres Datensatzes auf eine lokale SSD ist oft die beste Praxis.
Alle Trainingsergebnisse, einschließlich Gewichte und Protokolle, werden in der Datei runs/train/
Verzeichnis. Jede Trainingseinheit erstellt ein neues Unterverzeichnis (z.B., runs/train/exp
, runs/train/exp2
, usw.). Für eine interaktive, praktische Erfahrung, erkunden Sie den Trainingsbereich in unseren offiziellen Tutorial-Notebooks:
4. Visualisieren Sie
YOLOv5 lässt sich nahtlos in verschiedene Tools zur Visualisierung des Trainingsfortschritts, zur Auswertung der Ergebnisse und zur Leistungsüberwachung in Echtzeit integrieren.
Comet Protokollierung und Visualisierung 🌟 NEU
Comet ist für eine umfassende Experimentverfolgung vollständig integriert. Visualisieren Sie Metriken live, speichern Sie Hyperparameter, verwalten Sie Datensätze und Modellprüfpunkte und analysieren Sie Modellvorhersagen mit interaktiven Comet Custom Panels.
Die ersten Schritte sind ganz einfach:
pip install comet_ml # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!
Mehr über die unterstützten Funktionen erfahren Sie in unserem Comet. Erfahren Sie mehr über die Fähigkeiten von Comet in der offiziellen Dokumentation. Testen Sie das Comet Colab Notebook für eine Live-Demo:
ClearML Protokollierung und Automatisierung 🌟 NEU
ClearML Integration ermöglicht die detaillierte Verfolgung von Experimenten, die Verwaltung von Datensatzversionen und sogar die Fernausführung von Trainingsläufen. Aktivieren Sie ClearML mit diesen einfachen Schritten:
- Installieren Sie das Paket:
pip install clearml
- ClearML initialisieren: ausführen.
clearml-init
einmal, um eine Verbindung zu Ihrem ClearML herzustellen (entweder selbst gehostet oder der kostenloser Bereich).
ClearML erfasst automatisch Details zu Experimenten, Modell-Uploads, Vergleichen, nicht bestätigten Code-Änderungen und installierten Paketen, um eine vollständige Reproduzierbarkeit zu gewährleisten. Mit ClearML Data können Sie ganz einfach Trainingsaufgaben auf Remote-Agenten planen und Datensatzversionen verwalten. Ausführliche Informationen finden Sie im ClearML .
Lokale Protokollierung
Die Trainingsergebnisse werden automatisch protokolliert mit TensorBoard und gespeichert als CSV Dateien innerhalb des spezifischen Experimentverzeichnisses (z. B., runs/train/exp
). Die aufgezeichneten Daten umfassen:
- Trainings- und Validierungsverluste und Leistungsmetriken.
- Beispielbilder, die angewandte Augmentierungen (wie Mosaike) zeigen.
- Grundwahrheitsbeschriftungen neben Modellvorhersagen zur visuellen Überprüfung.
- Wichtige Bewertungskennzahlen wie die Precision-Recall (PR)-Kurven.
- Konfusionsmatrizen für eine detaillierte klassenweise Leistungsanalyse.
Die results.csv
Datei wird nach jeder Epoche aktualisiert und wie folgt aufgezeichnet results.png
sobald das Training abgeschlossen ist. Sie können auch jede results.csv
Datei manuell mit Hilfe der mitgelieferten Utility-Funktion:
from utils.plots import plot_results
# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv") # This will generate 'results.png' in the same directory
5. Nächste Schritte
Nach erfolgreichem Abschluss des Trainings wird der leistungsstärkste Modellprüfpunkt (best.pt
) ist gespeichert und bereit für den Einsatz oder weitere Verfeinerungen. Mögliche nächste Schritte sind:
- Führen Sie die Inferenz auf neuen Bildern oder Videos unter Verwendung des trainierten Modells über die CLI oder Python.
- Führen Sie eine Validierung durch, um die Genauigkeit und die Verallgemeinerungsfähigkeiten des Modells auf verschiedenen Datensplits zu bewerten (z. B. ein ausgeklammertes Testset).
- Exportieren Sie das Modell in verschiedene Bereitstellungsformate wie ONNX, TensorFlow SavedModel, oder TensorRT für optimierte Inferenz auf verschiedenen Plattformen.
- Anwendung von Hyperparameter-Tuning-Techniken, um möglicherweise zusätzliche Leistungsgewinne zu erzielen.
- Verbessern Sie Ihr Modell weiter, indem Sie unsere Tipps für beste Trainingsergebnisse befolgen und auf der Grundlage der Leistungsanalyse iterativ weitere vielfältige und anspruchsvolle Daten hinzufügen.
Unterstützte Umgebungen
Ultralytics bietet gebrauchsfertige Umgebungen, die mit wesentlichen Abhängigkeiten wie CUDAund cuDNN, Pythonund PyTorch, die einen reibungslosen Start ermöglichen.
- Kostenlose GPU Notizbücher:
- Cloud-Plattformen:
- Google Wolke: GCP-Schnellstart-Anleitung
- Amazon AWS: AWS Schnellstart-Anleitung
- Microsoft Azure: AzureML-Schnellstart-Anleitung
- Lokale Einrichtung:
- Docker: Docker-Schnellstart-Anleitung
- Docker: Docker-Schnellstart-Anleitung
Projektstatus
Dieses Abzeichen zeigt an, dass alle YOLOv5 GitHub Actions Continuous Integration (CI) Tests erfolgreich bestanden wurden. Diese strengen CI-Tests decken die Kernfunktionalitäten ab, einschließlich Training, Validierung, Inferenz, Export und Benchmarks, für die Betriebssysteme macOS, Windows und Ubuntu. Die Tests werden automatisch alle 24 Stunden und bei jedem Code-Commit ausgeführt, um konsistente Stabilität und optimale Leistung zu gewährleisten.
FAQ
Häufig gestellte Fragen
Wie trainiere ich YOLOv5 auf meinem benutzerdefinierten Datensatz?
Das Training von YOLOv5 auf einem benutzerdefinierten Datensatz umfasst mehrere wichtige Schritte:
- Bereiten Sie Ihren Datensatz vor: Sammeln Sie Bilder und beschriften Sie sie. Stellen Sie sicher, dass die Anmerkungen in der erforderlichen YOLO Format. Organisieren Sie Bilder und Etiketten in
train/
undval/
(und optionaltest/
) Verzeichnisse. Erwägen Sie die Verwendung von Modellen wie Google Zwillinge, SAM2, oder YOLOWorld zur Unterstützung oder Automatisierung des Etikettierungsprozesses (siehe Abschnitt 1.2). - Richten Sie Ihre Umgebung ein: Klonen Sie das YOLOv5 und installieren Sie die Abhängigkeiten mit
pip install -r requirements.txt
.git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt
- Dataset-Konfiguration erstellen: Definieren Sie Datensatzpfade, Anzahl der Klassen und Klassennamen in einem
dataset.yaml
Datei. - Ausbildung beginnen: Führen Sie die
train.py
Skript, das die Pfade zu Ihrendataset.yaml
, gewünschte vortrainierte Gewichte (z.B.,yolov5s.pt
), Bildgröße, Stapelgröße und die Anzahl der Epochen.python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
Warum sollte ich Ultralytics HUB für die Schulung meiner YOLO Modelle verwenden?
Ultralytics HUB ist eine umfassende Plattform, die dazu dient, den gesamten Lebenszyklus der YOLO zu rationalisieren, und zwar oft ohne die Notwendigkeit, einen Code zu schreiben. Die wichtigsten Vorteile sind:
- Vereinfachtes Training: Einfaches Trainieren von Modellen mithilfe vorkonfigurierter Umgebungen und einer intuitiven Benutzeroberfläche.
- Integrierte Datenverwaltung: Hochladen, Versionskontrolle und effiziente Verwaltung Ihrer Datensätze innerhalb der Plattform.
- Überwachung in Echtzeit: Verfolgen Sie den Trainingsfortschritt und visualisieren Sie Leistungskennzahlen mit integrierten Tools wie Comet oder TensorBoard.
- Funktionen für die Zusammenarbeit: Erleichtert die Teamarbeit durch gemeinsame Ressourcen, Projektmanagement-Tools und die einfache gemeinsame Nutzung von Modellen.
- No-Code-Bereitstellung: Setzen Sie trainierte Modelle direkt auf verschiedenen Zielen ein.
Eine praktische Anleitung finden Sie in unserem Blogbeitrag: Wie Sie Ihre benutzerdefinierten Modelle mit Ultralytics HUB trainieren.
Wie konvertiere ich meine mit Anmerkungen versehenen Daten in das YOLOv5 ?
Unabhängig davon, ob Sie manuell annotieren oder automatisierte Tools (wie die in Abschnitt 1.2 erwähnten) verwenden, müssen die endgültigen Etiketten im spezifischen YOLO vorliegen, das von YOLOv5 verlangt wird:
- Eine erstellen
.txt
Datei für jedes Bild. Der Dateiname sollte mit dem Dateinamen des Bildes übereinstimmen (z. B.,image1.jpg
entsprichtimage1.txt
). Legen Sie diese Dateien in einemlabels/
Verzeichnis parallel zu Ihremimages/
Verzeichnis (z.B.,../datasets/mydataset/labels/train/
). - Jede Zeile innerhalb einer
.txt
Datei stellt eine Objektanmerkung dar und hat das folgende Format:class_index center_x center_y width height
. - Koordinaten (
center_x
,center_y
,width
,height
) müssen sein normalisiert (Werte zwischen 0,0 und 1,0) relativ zu den Abmessungen des Bildes. - Die Klassenindizes sind Null-Basis (die erste Klasse ist
0
die zweite ist1
, usw.).
Viele manuelle Annotationswerkzeuge bieten einen direkten Export in das YOLO . Wenn Sie automatisierte Modelle verwenden, benötigen Sie Skripte oder Prozesse, um deren Ausgabe (z. B. Bounding-Box-Koordinaten, Segmentierungsmasken) in dieses spezielle normalisierte Textformat zu konvertieren. Vergewissern Sie sich, dass die Struktur Ihres endgültigen Datensatzes dem im Leitfaden enthaltenen Beispiel entspricht. Weitere Einzelheiten finden Sie in unserem Leitfaden zur Datenerfassung und -beschriftung.
Welche Lizenzierungsmöglichkeiten gibt es für die Verwendung von YOLOv5 in kommerziellen Anwendungen?
Ultralytics bietet eine flexible Lizenzierung, die auf unterschiedliche Bedürfnisse zugeschnitten ist:
- AGPL-3.0 : Diese Open-Source-Lizenz eignet sich für die akademische Forschung, persönliche Projekte und Situationen, in denen die Einhaltung der Open-Source-Richtlinien akzeptabel ist. Sie schreibt vor, dass Modifikationen und abgeleitete Werke ebenfalls unter der AGPL-3.0 als Open-Source-Lizenz bereitgestellt werden müssen. Lesen Sie die Details der AGPL-3.0 -Lizenz.
- Unternehmenslizenz: Eine kommerzielle Lizenz für Unternehmen, die YOLOv5 in ihre eigenen Produkte oder Dienstleistungen integrieren. Diese Lizenz hebt die Open-Source-Verpflichtungen der AGPL-3.0 auf und ermöglicht eine Closed-Source-Verteilung. Besuchen Sie unsere Lizenzierungsseite für weitere Details oder um eine Enterprise-Lizenz anzufordern.
Wählen Sie die Lizenz, die am besten zu den Anforderungen und dem Vertriebsmodell Ihres Projekts passt.