Whatsapp Telegram Telegram Call Anrufen

YOLO von Grund auf trainieren mit YOLOv8


1. Datensatzvorbereitung

Die Vorbereitung eines Datensatzes ist der erste und wichtigste Schritt beim Training eines Modells. Der Datensatz sollte aus Bildern und den dazugehörigen Annotationsdateien bestehen, die die Position und Klasse der Objekte in den Bildern enthalten.

Schritte zur Datensatzvorbereitung:

  1. Sammeln von Bildern: Sammeln Sie Bilder, die die Objekte enthalten, die Sie erkennen möchten.
  2. 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
Beispiel für eine Annotationsdatei (image1.txt):
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.


CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!