Zum Inhalt springen

Datenerweiterung mit Ultralytics YOLO

Beispiel für Bild-Augmentierungen

Einführung

Datenerweiterung ist eine entscheidende Technik in der Computer Vision, die Ihren Trainingsdatensatz künstlich erweitert, indem sie verschiedene Transformationen auf bestehende Bilder anwendet. Beim Training von Deep-Learning-Modellen wie Ultralytics YOLO hilft die Datenerweiterung, die Robustheit des Modells zu verbessern, Overfitting zu reduzieren und die Generalisierung auf reale Szenarien zu verbessern.



Ansehen: Wie man Mosaic, MixUp & weitere Datenerweiterungen verwendet, um Ultralytics YOLO-Modellen zu helfen, besser zu generalisieren 🚀

Warum Datenaugmentation wichtig ist

Die Datenerweiterung dient mehreren wichtigen Zwecken beim Training von Computer-Vision-Modellen:

  • Erweiterter Datensatz: Durch das Erstellen von Variationen bestehender Bilder können Sie die Größe Ihres Trainingsdatensatzes effektiv erhöhen, ohne neue Daten zu sammeln.
  • Verbesserte Generalisierung: Modelle lernen, Objekte unter verschiedenen Bedingungen zu erkennen, wodurch sie in realen Anwendungen robuster werden.
  • Reduziertes Overfitting: Durch die Einführung von Variabilität in den Trainingsdaten ist es weniger wahrscheinlich, dass Modelle bestimmte Bildeigenschaften auswendig lernen.
  • Verbesserte Leistung: Modelle, die mit geeigneter Augmentierung trainiert wurden, erzielen in der Regel eine bessere Genauigkeit bei Validierungs- und Testdatensätzen.

Die Implementierung von Ultralytics YOLO bietet eine umfassende Suite von Augmentationstechniken, von denen jede spezifischen Zwecken dient und auf unterschiedliche Weise zur Modellleistung beiträgt. Dieser Leitfaden wird jeden Augmentationsparameter im Detail untersuchen und Ihnen helfen zu verstehen, wann und wie Sie diese effektiv in Ihren Projekten einsetzen können.

Beispielkonfigurationen

Sie können jeden Parameter mithilfe der Python-API, der Befehlszeilenschnittstelle (CLI) oder einer Konfigurationsdatei anpassen. Nachfolgend finden Sie Beispiele für die Einrichtung der Datenerweiterung in jeder Methode.

Konfigurationsbeispiele

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5

Verwendung einer Konfigurationsdatei

Sie können alle Trainingsparameter, einschließlich Augmentierungen, in einer YAML-Konfigurationsdatei definieren (z. B. train_custom.yaml). Das Argument mode Parameter ist nur erforderlich, wenn die CLI verwendet wird. Diese neue YAML-Datei überschreibt dann die Standardeinstellung befindet sich im ultralytics Package.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Starten Sie dann das Training mit der Python-API:

Trainingsbeispiel

from ultralytics import YOLO

# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml

Farbraum-Augmentierungen

Farbtonanpassung (hsv_h)

  • Bereich: 0.0 - 1.0
  • Standard: 0.015
  • Nutzung: Verschiebt Bildfarben unter Beibehaltung ihrer Beziehungen. Die hsv_h Der Hyperparameter definiert die Verschiebungsstärke, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -hsv_h und hsv_h. Zum Beispiel mit hsv_h=0.3, wird die Verschiebung zufällig innerhalb von ausgewählt-0.3 zu 0.3. Für Werte über 0.5, die Farbtonverschiebung wickelt sich um das Farbrad, deshalb sehen die Augmentierungen gleich aus zwischen 0.5 und -0.5.
  • Zweck: Besonders nützlich für Außenszenarien, in denen die Lichtverhältnisse das Erscheinungsbild von Objekten dramatisch beeinflussen können. Beispielsweise kann eine Banane unter hellem Sonnenlicht gelber, aber in Innenräumen grünlicher aussehen.
  • Ultralytics' Implementierung: RandomHSV
-0.5 -0.25 0.0 0.25 0.5
hsv_h_-0.5_augmentation hsv_h_-0.25_augmentation augmentation_identity hsv_h_0.25_augmentation hsv_h_-0.5_augmentation

Sättigungsanpassung (hsv_s)

  • Bereich: 0.0 - 1.0
  • Standard: 0.7
  • Nutzung: Modifiziert die Intensität der Farben im Bild. Die hsv_h Der Hyperparameter definiert die Verschiebungsstärke, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -hsv_s und hsv_s. Zum Beispiel mit hsv_s=0.7, wird die Intensität zufällig innerhalb von ausgewählt-0.7 zu 0.7.
  • Zweck: Hilft Modellen, mit unterschiedlichen Wetterbedingungen und Kameraeinstellungen umzugehen. Beispielsweise kann ein rotes Verkehrsschild an einem sonnigen Tag sehr lebendig erscheinen, aber bei nebligen Bedingungen stumpf und verblasst aussehen.
  • Ultralytics' Implementierung: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_s_-1_augmentation hsv_s_-0.5_augmentation augmentation_identity hsv_s_0.5_augmentation hsv_s_1_augmentation

Helligkeitsanpassung (hsv_v)

  • Bereich: 0.0 - 1.0
  • Standard: 0.4
  • Nutzung: Ändert die Helligkeit des Bildes. Die hsv_v Der Hyperparameter definiert die Verschiebungsstärke, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -hsv_v und hsv_v. Zum Beispiel mit hsv_v=0.4, wird die Intensität zufällig innerhalb von ausgewählt-0.4 zu 0.4.
  • Zweck: Essentiell für das Training von Modellen, die unter verschiedenen Lichtbedingungen funktionieren müssen. Beispielsweise kann ein roter Apfel im Sonnenlicht hell aussehen, im Schatten jedoch viel dunkler.
  • Ultralytics' Implementierung: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
hsv_v_-1_augmentation hsv_v_-0.5_augmentation augmentation_identity hsv_v_0.5_augmentation hsv_v_1_augmentation

Geometrische Transformationen

Rotation (degrees)

  • Bereich: 0.0 zu 180
  • Standard: 0.0
  • Nutzung: Rotiert Bilder zufällig innerhalb des angegebenen Bereichs. Die degrees Der Hyperparameter definiert den Drehwinkel, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -degrees und degrees. Zum Beispiel mit degrees=10.0, wird die Drehung zufällig innerhalb von ausgewählt-10.0 zu 10.0.
  • Zweck: Entscheidend für Anwendungen, bei denen Objekte in verschiedenen Ausrichtungen erscheinen können. In Luftaufnahmen von Drohnen beispielsweise können Fahrzeuge in jede Richtung ausgerichtet sein, sodass Modelle Objekte unabhängig von ihrer Drehung erkennen müssen.
  • Ultralytics' Implementierung: RandomPerspective
-180 -90 0.0 90 180
degrees_-180_augmentation degrees_-90_augmentation augmentation_identity degrees_90_augmentation degrees_180_augmentation

Übersetzung (translate)

  • Bereich: 0.0 - 1.0
  • Standard: 0.1
  • Nutzung: Verschiebt Bilder horizontal und vertikal um einen zufälligen Bruchteil der Bildgröße. Die translate Der Hyperparameter definiert die Verschiebungsstärke, wobei die endgültige Anpassung zweimal (einmal für jede Achse) innerhalb des Bereichs zufällig gewählt wird -translate und translate. Zum Beispiel mit translate=0.5, wird die Translation zufällig innerhalb von ausgewählt-0.5 zu 0.5 auf der x-Achse und ein weiterer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Hilft Modellen, teilweise sichtbare Objekte zu erkennen und verbessert die Robustheit gegenüber der Objektposition. Beispielsweise können bei Anwendungen zur Beurteilung von Fahrzeugschäden Autoteile je nach Position und Entfernung des Fotografen vollständig oder teilweise im Bild erscheinen. Die Translationserweiterung lehrt das Modell, diese Merkmale unabhängig von ihrer Vollständigkeit oder Position zu erkennen.
  • Ultralytics' Implementierung: RandomPerspective
  • Hinweis: Der Einfachheit halber sind die unten angewendeten Übersetzungen jedes Mal für beide gleich x und y Achsen. Werte -1.0 und 1.0werden nicht angezeigt, da sie das Bild vollständig aus dem Rahmen verschieben würden.
-0.5 -0.25 0.0 0.25 0.5
translate_-0.5_augmentation translate_-0.25_augmentation augmentation_identity translate_0.25_augmentation translate_0.5_augmentation

Skalierung (scale)

  • Bereich: ≥0.0
  • Standard: 0.5
  • Nutzung: Ändert die Größe von Bildern um einen zufälligen Faktor innerhalb des angegebenen Bereichs. Die scale Der Hyperparameter definiert den Skalierungsfaktor, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird 1-scale und 1+scale. Zum Beispiel mit scale=0.5, wird die Skalierung zufällig innerhalb von ausgewählt0.5 zu 1.5.
  • Zweck: Ermöglicht es Modellen, mit Objekten in unterschiedlichen Entfernungen und Größen umzugehen. In autonomen Fahranwendungen beispielsweise können Fahrzeuge in verschiedenen Entfernungen von der Kamera erscheinen, sodass das Modell sie unabhängig von ihrer Größe erkennen muss.
  • Ultralytics' Implementierung: RandomPerspective
  • Hinweis:
    • Der Wert -1.0 wird nicht angezeigt, da es das Bild verschwinden lassen würde, während 1.0 führt einfach zu einem 2-fachen Zoom.
    • Die in der folgenden Tabelle angezeigten Werte sind diejenigen, die durch den Hyperparameter angewendet werden scale, nicht der endgültige Skalierungsfaktor.
    • Wenn scale ist größer als 1.0, kann das Bild entweder sehr klein oder gespiegelt sein, da der Skalierungsfaktor zufällig gewählt wird zwischen 1-scale und 1+scale. Zum Beispiel mit scale=3.0, wird die Skalierung zufällig innerhalb von ausgewählt-2.0 zu 4.0Wenn ein negativer Wert gewählt wird, wird das Bild gespiegelt.
-0.5 -0.25 0.0 0.25 0.5
scale_-0.5_augmentation scale_-0.25_augmentation augmentation_identity scale_0.25_augmentation scale_0.5_augmentation

Scherung (shear)

  • Bereich: -180 zu +180
  • Standard: 0.0
  • Nutzung: Führt eine geometrische Transformation ein, die das Bild sowohl entlang der x-Achse als auch der y-Achse verzerrt, wodurch Teile des Bildes effektiv in eine Richtung verschoben werden, während parallele Linien beibehalten werden. Die shear Der Hyperparameter definiert den Scherwinkel, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -shear und shear. Zum Beispiel mit shear=10.0, wird die Scherung zufällig innerhalb von ausgewählt-10 zu 10 auf der x-Achse und ein weiterer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Hilft Modellen, sich an Variationen der Betrachtungswinkel anzupassen, die durch leichte Neigungen oder schräge Blickwinkel verursacht werden. Beispielsweise können bei der Verkehrsüberwachung Objekte wie Autos und Verkehrsschilder aufgrund nicht-senkrechter Kamerapositionen schräg erscheinen. Das Anwenden von Scherungsvergrößerung stellt sicher, dass das Modell Objekte trotz solcher verzerrten Verzerrungen erkennt.
  • Ultralytics' Implementierung: RandomPerspective
  • Hinweis:
    • shear Werte können das Bild schnell verzerren, daher wird empfohlen, mit kleinen Werten zu beginnen und diese schrittweise zu erhöhen.
    • Anders als bei perspektivischen Transformationen führt die Scherung nicht zu Tiefe oder Fluchtpunkten, sondern verzerrt die Form von Objekten, indem sie ihre Winkel verändert, während gegenüberliegende Seiten parallel bleiben.
-10 -5 0.0 5 10
Scherung_-10_Augmentierung Scherung_-5_Augmentierung augmentation_identity Scherung_5_Augmentierung Scherung_10_Augmentierung

Perspektive (perspective)

  • Bereich: 0.0 - 0.001
  • Standard: 0.0
  • Nutzung: Wendet eine vollständige perspektivische Transformation entlang der x- und y-Achse an, wodurch simuliert wird, wie Objekte aus verschiedenen Tiefen oder Winkeln betrachtet erscheinen. Die perspective Der Hyperparameter definiert die Perspektivenstärke, wobei die endgültige Anpassung zufällig zwischen den Werten gewählt wird -perspective und perspective. Zum Beispiel mit perspective=0.001, wird die Perspektive zufällig innerhalb von ausgewählt-0.001 zu 0.001 auf der x-Achse und ein weiterer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Perspektivische Augmentierung ist entscheidend für den Umgang mit extremen Änderungen des Blickwinkels, insbesondere in Szenarien, in denen Objekte aufgrund von perspektivischen Verschiebungen verkürzt oder verzerrt erscheinen. Beispielsweise können bei der drohnenbasierten Objekterkennung Gebäude, Straßen und Fahrzeuge je nach Neigung und Höhe der Drohne gestreckt oder komprimiert erscheinen. Durch das Anwenden von perspektivischen Transformationen lernen Modelle, Objekte trotz dieser perspektivisch bedingten Verzerrungen zu erkennen, wodurch ihre Robustheit in realen Einsätzen verbessert wird.
  • Ultralytics' Implementierung: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
Perspektive_-0.001_Augmentierung Perspektive_-0.0005_Augmentierung augmentation_identity Perspektive_0.0005_Augmentierung Perspektive_0.001_Augmentierung

Auf-Ab-Drehung (flipud)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Nutzung: Führt einen vertikalen Flip durch, indem das Bild entlang der y-Achse invertiert wird. Diese Transformation spiegelt das gesamte Bild auf den Kopf, behält aber alle räumlichen Beziehungen zwischen Objekten bei. Der Hyperparameter flipud definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit einem Wert von flipud=1.0 Sicherstellen, dass alle Bilder gespiegelt werden und ein Wert von flipud=0.0 deaktiviert die Transformation vollständig. Zum Beispiel mit flipud=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, auf den Kopf gestellt zu werden.
  • Zweck: Nützlich für Szenarien, in denen Objekte auf dem Kopf stehen können. Beispielsweise können in Robotervisionssystemen Objekte auf Förderbändern oder Roboterarmen aufgenommen und in verschiedenen Ausrichtungen platziert werden. Vertikales Spiegeln hilft dem Modell, Objekte unabhängig von ihrer Top-Down-Positionierung zu erkennen.
  • Ultralytics' Implementierung: RandomFlip
flipud aus flipud an
augmentation_identity flipud_on_augmentation

Links-Rechts-Drehung (fliplr)

  • Bereich: 0.0 - 1.0
  • Standard: 0.5
  • Nutzung: Führt einen horizontalen Flip durch, indem das Bild entlang der x-Achse gespiegelt wird. Diese Transformation vertauscht die linke und rechte Seite unter Beibehaltung der räumlichen Konsistenz, was dem Modell hilft, sich auf Objekte zu verallgemeinern, die in gespiegelten Ausrichtungen erscheinen. Die fliplr Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit einem Wert von fliplr=1.0 Sicherstellen, dass alle Bilder gespiegelt werden und ein Wert von fliplr=0.0 deaktiviert die Transformation vollständig. Zum Beispiel mit fliplr=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, von links nach rechts gespiegelt zu werden.
  • Zweck: Horizontales Spiegeln wird häufig in der Objekterkennung, der Posenschätzung und der Gesichtserkennung verwendet, um die Robustheit gegenüber Links-Rechts-Variationen zu verbessern. Beispielsweise können im autonomen Fahren Fahrzeuge und Fußgänger auf beiden Seiten der Straße erscheinen, und horizontales Spiegeln hilft dem Modell, sie in beiden Ausrichtungen gleichermaßen gut zu erkennen.
  • Ultralytics' Implementierung: RandomFlip
fliplr aus fliplr an
augmentation_identity fliplr_on_augmentation

BGR-Kanal-Swap (bgr)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Nutzung: Vertauscht die Farbkanäle eines Bildes von RGB zu BGR und ändert die Reihenfolge, in der Farben dargestellt werden. Die bgr Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit bgr=1.0 Sicherstellen, dass alle Bilder den Kanalwechsel durchlaufen und bgr=0.0 deaktiviert sie. Zum Beispiel mit bgr=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, von RGB in BGR konvertiert zu werden.
  • Zweck: Erhöht die Robustheit gegenüber unterschiedlichen Farbkanalreihenfolgen. Beispielsweise beim Trainieren von Modellen, die über verschiedene Kamerasysteme und Bildverarbeitungsbibliotheken hinweg arbeiten müssen, bei denen die Formate RGB und BGR inkonsistent verwendet werden können, oder beim Bereitstellen von Modellen in Umgebungen, in denen sich das Eingabefarbformat von den Trainingsdaten unterscheiden kann.
  • Ultralytics' Implementierung: Format
bgr aus bgr an
augmentation_identity bgr_on_augmentation

Mosaik (mosaic)

  • Bereich: 0.0 - 1.0
  • Standard: 1.0
  • Nutzung: Kombiniert vier Trainingsbilder zu einem. Die mosaic Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit mosaic=1.0 Sicherstellen, dass alle Bilder kombiniert werden und mosaic=0.0 deaktiviert die Transformation. Zum Beispiel mit mosaic=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, mit drei anderen Bildern kombiniert zu werden.
  • Zweck: Sehr effektiv zur Verbesserung der Erkennung kleiner Objekte und des Kontextverständnisses. Beispielsweise hilft die Mosaik-Augmentierung in Naturschutzprojekten, bei denen Tiere in verschiedenen Entfernungen und Maßstäben erscheinen können, dem Modell, dieselbe Art über verschiedene Größen, Teilverdeckungen und Umweltkontexte hinweg zu erkennen, indem künstlich vielfältige Trainingsbeispiele aus begrenzten Daten erstellt werden.
  • Ultralytics' Implementierung: Mosaic
  • Hinweis:
    • Auch wenn die mosaic Die Augmentierung macht das Modell robuster, kann aber auch den Trainingsprozess erschweren.
    • Die mosaic Die Augmentierung kann gegen Ende des Trainings durch die Einstellung deaktiviert werden close_mosaic bis zu der Anzahl von Epochen vor Abschluss, wann es ausgeschaltet werden soll. Zum Beispiel, wenn epochs ist eingestellt auf 200 und close_mosaic ist eingestellt auf 20wird die mosaic Die Augmentierung wird danach deaktiviert 180 Epochen. Falls close_mosaic ist eingestellt auf 0wird die mosaic Die Augmentierung wird für den gesamten Trainingsprozess aktiviert.
    • Das Zentrum des generierten Mosaiks wird anhand von Zufallswerten bestimmt und kann sich entweder innerhalb oder außerhalb des Bildes befinden.
    • Die aktuelle Implementierung des mosaic Die Augmentierung kombiniert 4 Bilder, die zufällig aus dem Datensatz ausgewählt wurden. Wenn der Datensatz klein ist, kann dasselbe Bild mehrmals im selben Mosaik verwendet werden.
mosaic aus mosaic an
augmentation_identity mosaic_on_augmentation

Mixup (mixup)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Nutzung: Mischt zwei Bilder und ihre Beschriftungen mit einer bestimmten Wahrscheinlichkeit. Die mixup Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit mixup=1.0 Sicherstellen, dass alle Bilder gemischt werden und mixup=0.0 deaktiviert die Transformation. Zum Beispiel mit mixup=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, mit einem anderen Bild vermischt zu werden.
  • Zweck: Verbessert die Modellrobustheit und reduziert Overfitting. Beispielsweise hilft Mixup in Einzelhandelsprodukterkennungssystemen dem Modell, robustere Merkmale zu erlernen, indem es Bilder verschiedener Produkte mischt und es lehrt, Artikel auch dann zu identifizieren, wenn sie teilweise sichtbar oder durch andere Produkte in überfüllten Verkaufsregalen verdeckt sind.
  • Ultralytics' Implementierung: Mixup
  • Hinweis:
    • Die mixup Das Verhältnis ist ein zufälliger Wert, der aus einem a ausgewählt wird np.random.beta(32.0, 32.0) Beta-Verteilung, was bedeutet, dass jedes Bild ungefähr 50 % beiträgt, mit leichten Abweichungen.
Erstes Bild, mixup aus Zweites Bild, mixup aus mixup an
augmentation_mixup_identity_1 augmentation_mixup_identity_2 mixup_on_augmentation

CutMix (cutmix)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Nutzung: Schneidet einen rechteckigen Bereich aus einem Bild aus und fügt ihn mit einer bestimmten Wahrscheinlichkeit in ein anderes Bild ein. Die cutmix Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit cutmix=1.0 Sicherstellen, dass alle Bilder diese Transformation durchlaufen und cutmix=0.0 deaktiviert sie vollständig. Zum Beispiel mit cutmix=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, dass ein Bereich durch einen Patch aus einem anderen Bild ersetzt wird.
  • Zweck: Verbessert die Modellleistung, indem realistische Okklusionsszenarien erstellt werden, während die lokale Feature-Integrität erhalten bleibt. In autonomen Fahrsystemen hilft Cutmix dem Modell beispielsweise, Fahrzeuge oder Fußgänger auch dann zu erkennen, wenn sie teilweise von anderen Objekten verdeckt werden, wodurch die Erkennungsgenauigkeit in komplexen realen Umgebungen mit überlappenden Objekten verbessert wird.
  • Ultralytics' Implementierung: CutMix
  • Hinweis:
    • Die Grösse und Position des ausgeschnittenen Bereichs wird für jede Anwendung zufällig bestimmt.
    • Im Gegensatz zu Mixup, das Pixelwerte global vermischt, cutmix behält die ursprünglichen Pixelintensitäten innerhalb der ausgeschnittenen Bereiche bei und bewahrt lokale Merkmale.
    • Eine Region wird nur dann in das Zielbild eingefügt, wenn sie sich nicht mit vorhandenen Begrenzungsrahmen überschneidet. Zusätzlich werden nur die Begrenzungsrahmen beibehalten, die mindestens 0.1 (10%) ihrer ursprünglichen Fläche innerhalb des eingefügten Bereichs erhalten bleiben.
    • Dieser Schwellenwert für die minimale Begrenzungsrahmenfläche kann mit der aktuellen Implementierung nicht geändert werden und ist auf 0.1 standardmäßig.
Erstes Bild, cutmix aus Zweites Bild, cutmix aus cutmix an
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

Segmentierungsspezifische Augmentierungen

Copy-Paste (copy_paste)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Nutzung: Funktioniert nur für Segmentierungsaufgaben. Diese Augmentierung kopiert Objekte innerhalb oder zwischen Bildern basierend auf einer bestimmten Wahrscheinlichkeit, die durch die gesteuert wird copy_paste_mode. Der copy_paste Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit copy_paste=1.0 Sicherstellen, dass alle Bilder kopiert werden und copy_paste=0.0 deaktiviert die Transformation. Zum Beispiel mit copy_paste=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, dass Objekte aus einem anderen Bild kopiert werden.
  • Zweck: Besonders nützlich für Aufgaben der Instanzsegmentierung und seltene Objektklassen. Beispielsweise kann in der industriellen Fehlererkennung, wo bestimmte Arten von Fehlern selten auftreten, die Copy-Paste-Augmentierung das Auftreten dieser seltenen Fehler künstlich erhöhen, indem sie von einem Bild in ein anderes kopiert werden, wodurch das Modell diese unterrepräsentierten Fälle besser erlernen kann, ohne dass zusätzliche fehlerhafte Stichproben erforderlich sind.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Wie im untenstehenden GIF dargestellt, ist die copy_paste Die Augmentierung kann verwendet werden, um Objekte von einem Bild in ein anderes zu kopieren.
    • Sobald ein Objekt kopiert wurde, unabhängig von der copy_paste_mode, seine Intersection over Area (IoA) wird mit allen Objekten des Quellbilds berechnet. Wenn alle IoA unterhalb liegen 0.3 (30%) liegt, wird das Objekt in das Zielbild eingefügt. Wenn nur eines der IoA oben ist 0.3, wird das Objekt nicht in das Zielbild eingefügt.
    • Der IoA-Schwellenwert kann mit der aktuellen Implementierung nicht geändert werden und ist auf Folgendes festgelegt: 0.3 standardmäßig.
copy_paste aus copy_paste an mit copy_paste_mode=flip Visualisieren Sie die copy_paste Prozess
augmentation_identity copy_paste_on_augmentation copy_paste_augmentation_gif_demo

Copy-Paste-Modus (copy_paste_mode)

  • Optionen: 'flip', 'mixup'
  • Standard: 'flip'
  • Nutzung: Bestimmt die Methode, die verwendet wird für Copy-Paste Augmentierung. Wenn eingestellt auf 'flip', stammen die Objekte aus demselben Bild, während 'mixup' ermöglicht das Kopieren von Objekten aus verschiedenen Bildern.
  • Zweck: Ermöglicht Flexibilität bei der Integration kopierter Objekte in Zielbilder.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Das IoA-Prinzip ist für beide gleich copy_paste_mode, aber die Art und Weise, wie die Objekte kopiert werden, ist unterschiedlich.
    • Abhängig von der Bildgröße können Objekte manchmal teilweise oder vollständig außerhalb des Rahmens kopiert werden.
    • Abhängig von der Qualität der Polygon-Annotationen können kopierte Objekte leichte Formabweichungen gegenüber den Originalen aufweisen.
Referenzbild Ausgewähltes Bild für copy_paste copy_paste an mit copy_paste_mode=mixup
augmentation_mixup_identity_2 augmentation_identity copy_paste_mode_mixup_augmentation

Klassifizierungsspezifische Augmentierungen

Auto Augment (auto_augment)

  • Optionen: 'randaugment', 'autoaugment', 'augmix', None
  • Standard: 'randaugment'
  • Nutzung: Wendet automatisierte Augmentationsrichtlinien für die Klassifizierung an. Die 'randaugment' Option verwendet RandAugment, 'autoaugment' verwendet AutoAugment, und 'augmix' verwendet AugMix. Wird eingestellt auf None deaktiviert die automatische Augmentierung.
  • Zweck: Optimiert Augmentationsstrategien automatisch für Klassifizierungsaufgaben. Die Unterschiede sind folgende:
    • AutoAugment: Dieser Modus wendet vordefinierte Augmentationsrichtlinien an, die von Datensätzen wie ImageNet, CIFAR10 und SVHN gelernt wurden. Benutzer können diese vorhandenen Richtlinien auswählen, aber keine neuen innerhalb von Torchvision trainieren. Um optimale Augmentationsstrategien für bestimmte Datensätze zu ermitteln, wären externe Bibliotheken oder benutzerdefinierte Implementierungen erforderlich. Verweis auf das AutoAugment-Paper.
    • RandAugment: Wendet eine zufällige Auswahl von Transformationen mit einheitlicher Stärke an. Dieser Ansatz reduziert den Bedarf an einer umfangreichen Suchphase, wodurch er rechentechnisch effizienter wird und gleichzeitig die Modellrobustheit erhöht. Referenz zum RandAugment Paper.
    • AugMix: AugMix ist eine Datenerweiterungsmethode, die die Robustheit des Modells verbessert, indem sie vielfältige Bildvariationen durch zufällige Kombinationen einfacher Transformationen erzeugt. Referenz zum AugMix Paper.
  • Ultralytics' Implementierung: classify_augmentations()
  • Hinweis:
    • Im Wesentlichen besteht der Hauptunterschied zwischen den drei Methoden in der Art und Weise, wie die Augmentationsrichtlinien definiert und angewendet werden.
    • Sie können diesen Artikel konsultieren, der die drei Methoden im Detail vergleicht.

Random Erasing (erasing)

  • Bereich: 0.0 - 0.9
  • Standard: 0.4
  • Nutzung: Löscht zufällig Teile des Bildes während des Klassifizierungstrainings. Die erasing Der Hyperparameter definiert die Wahrscheinlichkeit, mit der die Transformation angewendet wird, mit erasing=0.9 Sicherstellen, dass fast alle Bilder gelöscht werden und erasing=0.0 deaktiviert die Transformation. Zum Beispiel mit erasing=0.5, jedes Bild hat eine Wahrscheinlichkeit von 50 %, dass ein Teil davon gelöscht wird.
  • Zweck: Hilft Modellen, robuste Merkmale zu erlernen und verhindert eine übermäßige Abhängigkeit von bestimmten Bildbereichen. In Gesichtserkennungssystemen hilft das zufällige Löschen beispielsweise Modellen, robuster gegenüber teilweisen Verdeckungen wie Sonnenbrillen, Gesichtsmasken oder anderen Objekten zu werden, die Gesichtsmerkmale teilweise verdecken könnten. Dies verbessert die Leistung in der realen Welt, indem das Modell gezwungen wird, Personen anhand mehrerer Gesichtsmerkmale zu identifizieren, anstatt sich ausschließlich auf markante Merkmale zu verlassen, die möglicherweise verdeckt sind.
  • Ultralytics' Implementierung: classify_augmentations()
  • Hinweis:
    • Die erasing Die Augmentierung kommt mit einem scale, ratiound value Hyperparameter, die nicht mit dem Parameter geändert werden können aktuelle ImplementierungIhre Standardwerte sind (0.02, 0.33), (0.3, 3.3)und 0, bzw. wie in der PyTorch angegeben Dokumentation.
    • Die Obergrenze des erasing Hyperparameter ist auf 0.9 um die Transformation nicht auf alle Bilder anzuwenden.
erasing aus erasing an (Beispiel 1) erasing an (Beispiel 2) erasing an (Beispiel 3)
augmentation_identity erasing_ex1_augmentation erasing_ex2_augmentation erasing_ex3_augmentation

FAQ

Es gibt zu viele Augmentierungen zur Auswahl. Woher weiß ich, welche ich verwenden soll?

Die Wahl der richtigen Augmentierungen hängt von Ihrem spezifischen Anwendungsfall und Datensatz ab. Hier sind einige allgemeine Richtlinien, die Ihnen bei der Entscheidung helfen:

  • In den meisten Fällen sind leichte Farb- und Helligkeitsabweichungen von Vorteil. Die Standardwerte für hsv_h, hsv_sund hsv_v sind ein solider Ausgangspunkt.
  • Wenn der Blickwinkel der Kamera konsistent ist und sich nach dem Einsatz des Modells nicht mehr ändert, können Sie geometrische Transformationen wie rotation, translation, scale, shear, oder perspectiveWenn sich der Kamerawinkel jedoch ändern kann und das Modell robuster sein muss, ist es besser, diese Augmentationen beizubehalten.
  • Verwenden Sie den mosaic Augmentierung nur, wenn teilweise verdeckte Objekte oder mehrere Objekte pro Bild akzeptabel sind und den Label-Wert nicht ändern. Alternativ können Sie mosaic aktiv, aber erhöhen Sie die close_mosaic Wert, um ihn früher im Trainingsprozess zu deaktivieren.

Kurz gesagt: Halten Sie es einfach. Beginnen Sie mit einem kleinen Satz von Augmentierungen und fügen Sie nach Bedarf schrittweise weitere hinzu. Ziel ist es, die Generalisierung und Robustheit des Modells zu verbessern, nicht den Trainingsprozess zu verkomplizieren. Stellen Sie außerdem sicher, dass die von Ihnen angewendeten Augmentierungen die gleiche Datenverteilung widerspiegeln, auf die Ihr Modell in der Produktion treffen wird.

Beim Starten eines Trainings sehe ich ein albumentations: Blur[...] Referenz. Bedeutet das, dass Ultralytics YOLO zusätzliche Augmentierungen wie z. B. Unschärfe durchführt?

Wenn der albumentations package installiert ist, wendet Ultralytics automatisch eine Reihe zusätzlicher Bildaugmentationen mithilfe dieser an. Diese Augmentationen werden intern behandelt und erfordern keine zusätzliche Konfiguration.

Sie finden die vollständige Liste der angewendeten Transformationen in unserem technische Dokumentation, sowie in unserem Albumentations-IntegrationsanleitungBeachten Sie, dass nur die Augmentationen mit einer Wahrscheinlichkeit p größer als 0 sind aktiv. Diese werden gezielt mit niedrigen Frequenzen eingesetzt, um visuelle Artefakte der realen Welt, wie z. B. Unschärfe- oder Graustufeneffekte, nachzubilden.

Beim Starten eines Trainings sehe ich keinen Verweis auf Albumentations. Warum?

Überprüfen Sie, ob die albumentations package installiert ist. Wenn nicht, können Sie es installieren, indem Sie Folgendes ausführen: pip install albumentationsNach der Installation sollte das Paket automatisch von Ultralytics erkannt und verwendet werden.

Wie kann ich meine Augmentierungen anpassen?

Sie können Augmentierungen anpassen, indem Sie eine benutzerdefinierte Datensatzklasse und einen Trainer erstellen. Sie können beispielsweise die standardmäßigen Ultralytics-Klassifizierungsaugmentierungen durch PyTorch's torchvision.transforms.Resize oder andere Transformationen ersetzen. Einzelheiten zur Implementierung finden Sie im Beispiel für benutzerdefiniertes Training in der Klassifizierungsdokumentation.



📅 Erstellt vor 4 Monaten ✏️ Aktualisiert vor 1 Monat

Kommentare