Sobes.tech
Middle

Sollte beim Training von YOLO zur Erkennung seltener Objekte eine realitätsnahe Stichprobe oder ein Gleichgewicht der Klassen verwendet werden?

sobes.tech KI

Antwort von AI

Beim Training von YOLO zur Erkennung seltener Objekte ist es wichtig, das Klassenungleichgewicht zu berücksichtigen, aber der Ansatz hängt von der Aufgabe und den Daten ab. Wenn man eine Stichprobe verwendet, die nahe an der tatsächlichen Verteilung liegt (also mit natürlichem Ungleichgewicht), kann das Modell schlecht lernen, seltene Klassen zu erkennen, weil es an Beispielen mangelt.

Daher werden häufig Ausgleichstechniken angewendet, wie z.B. Stichproben mit gleicher Anzahl an Beispielen für jede Klasse oder die Verwendung von Datenaugmentierungsmethoden (data augmentation) für seltene Klassen. Das hilft dem Modell, seltene Objekte besser zu erkennen.

Ein zu starker künstlicher Ausgleich kann jedoch zu Overfitting bei seltenen Klassen und zu einer Verschlechterung der Gesamtleistung führen.

Der optimale Ansatz ist, das Klassenungleichgewicht unter Berücksichtigung der tatsächlichen Verteilung zu kombinieren, z.B. durch die Verwendung gewichteter Verlustfunktionen oder fokussierter Verluste (focal loss), die den Einfluss häufiger Klassen verringern und den Fokus auf seltene Klassen legen.

Beispiel für die Verwendung gewichteter Stichproben:

# Beispiel-Pseudocode zur Klassenbalancierung
from torch.utils.data import WeightedRandomSampler

class_sample_counts = [1000, 100, 50]  # Anzahl der Beispiele pro Klasse
weights = 1. / torch.tensor(class_sample_counts, dtype=torch.float)
samples_weight = weights[labels]
sampler = WeightedRandomSampler(samples_weight, num_samples=len(samples_weight), replacement=True)

# Verwendung des Samplers im DataLoader