1. Datensatzvorbereitung
- Sammeln von Bildern: Sammeln Sie Bilder, die die Objekte enthalten, die Sie erkennen möchten.
- Annotationsdateien erstellen: Erstellen Sie Annotationsdateien für jedes Bild im YOLO-Format.
Jede Zeile in der Datei enthält:
- Klassen-ID
- x und y Koordinaten des Mittelpunkts der Bounding Box
- Breite und Höhe der Bounding Box
0 0.5 0.5 0.3 0.4
1 0.7 0.7 0.2 0.3
Verzeichnisstruktur:
dataset/
images/
train/
image1.jpg
image2.jpg
val/
image3.jpg
image4.jpg
labels/
train/
image1.txt
image2.txt
val/
image3.txt
image4.txt
2. Datenaugmentierungstechniken
Datenaugmentierung hilft dabei, die Vielfalt der Trainingsdaten zu erhöhen und das Modell robuster gegen Variationen zu machen. Gängige Techniken sind:
- Drehen und Spiegeln: Zufälliges Drehen und horizontales/vertikales Spiegeln von Bildern.
- Skalierung und Zuschneiden: Zufälliges Vergrößern und Zuschneiden von Bildern.
- Helligkeits- und Kontraständerungen: Zufälliges Anpassen der Helligkeit und des Kontrasts.
Beispielcode für Datenaugmentierung:
import cv2
import numpy as np
def augment_image(image):
# Zufälliges Drehen
if np.random.rand() > 0.5:
image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
# Zufälliges Spiegeln
if np.random.rand() > 0.5:
image = cv2.flip(image, 1)
# Zufällige Helligkeitsanpassung
if np.random.rand() > 0.5:
factor = 1.0 + (np.random.rand() - 0.5)
image = cv2.convertScaleAbs(image, alpha=factor, beta=0)
return image
# Beispielbild laden
image = cv2.imread("image1.jpg")
augmented_image = augment_image(image)
# Anzeige des augmentierten Bildes
cv2.imshow("Augmented Image", augmented_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. Konfigurationsdateien erklärt
YOLOv8 verwendet eine Konfigurationsdatei, um die Trainingsparameter und Pfade zu den Datensätzen festzulegen. Diese Datei enthält Informationen wie:
- Pfad zum Datensatz: Pfade zu Trainings- und Validierungsbildern und -labels.
- Trainingsparameter: Lernrate, Batch-Größe, Anzahl der Epochen usw.
- Modellarchitektur: Informationen über die Modellarchitektur und -schichten.
Beispiel einer Konfigurationsdatei (config.yaml):
train: /path/to/dataset/images/train
val: /path/to/dataset/images/val
nc: 2 # Anzahl der Klassen
names: ['class1', 'class2'] # Namen der Klassen
# Trainingsparameter
batch: 16
epochs: 100
img_size: 640
# Modellarchitektur
model:
backbone: yolov8s
heads:
- type: Detect
classes: 2
4. Das Modell trainieren
Mit den vorbereiteten Daten und der Konfigurationsdatei können Sie das Training des Modells starten.
Beispielcode zum Trainieren des Modells:
from ultralytics import YOLO
# Laden der Konfigurationsdatei und des Modells
model = YOLO('yolov8.yaml') # Ersetzen Sie 'yolov8.yaml' durch den Pfad zu Ihrer Konfigurationsdatei
# Training starten
model.train(data='config.yaml', epochs=100, imgsz=640)
Ausgabe: Das Modell wird trainiert und die Ausgabe zeigt den Fortschritt und die Metriken des Trainings.
5. Überwachung des Trainingsfortschritts
Es ist wichtig, den Trainingsfortschritt zu überwachen, um sicherzustellen, dass das Modell gut lernt und keine Probleme wie Überanpassung auftreten.
Möglichkeiten zur Überwachung:
- Trainingsverlaufsplots: Plotten Sie den Verlauf von Verlust und Genauigkeit während des Trainings.
- TensorBoard: Verwenden Sie TensorBoard, um detaillierte Visualisierungen des Trainingsfortschritts zu erhalten.
Beispielcode zur Verwendung von TensorBoard:
from torch.utils.tensorboard import SummaryWriter
# TensorBoard-Schreiber initialisieren
writer = SummaryWriter(log_dir='runs/yolov8_training')
# Während des Trainings (in der Trainingsschleife)
for epoch in range(epochs):
# Trainingscode hier ...
# Beispielhafte Metriken (Verlust und Genauigkeit)
loss = 0.1 * epoch # Dummy-Wert
accuracy = 0.9 # Dummy-Wert
# Metriken zu TensorBoard hinzufügen
writer.add_scalar('Loss/train', loss, epoch)
writer.add_scalar('Accuracy/train', accuracy, epoch)
# TensorBoard-Schreiber schließen
writer.close()
Ausgabe: Visualisierungen des Trainingsverlaufs in TensorBoard, die Ihnen helfen, den Fortschritt und die Leistung des Modells zu überwachen.
Fazit
Das Training von YOLOv8 von Grund auf erfordert sorgfältige Datensatzvorbereitung, Anwendung von Datenaugmentierungstechniken, Erstellung und Anpassung von Konfigurationsdateien sowie die Überwachung des Trainingsfortschritts. Mit den oben beschriebenen Schritten und Beispielen sollten Sie in der Lage sein, ein YOLOv8-Modell erfolgreich zu trainieren und zu optimieren.