Meet YOLO26: next-gen vision AI.

Link to this sectionDatenaugmentation mit Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionEinführung#

Datenaugmentation ist eine entscheidende Technik im Bereich Computer Vision, die deinen Trainingsdatensatz künstlich erweitert, indem sie verschiedene Transformationen auf vorhandene Bilder anwendet. Beim Training von Deep Learning-Modellen wie Ultralytics YOLO hilft Datenaugmentation dabei, die Robustheit des Modells zu verbessern, Overfitting zu reduzieren und die Generalisierung auf reale Szenarien zu optimieren.



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Link to this sectionWarum Datenaugmentation wichtig ist#

Datenaugmentation erfüllt mehrere kritische Funktionen beim Training von Computer-Vision-Modellen:

  • Erweiterter Datensatz: Durch das Erstellen von Variationen bestehender Bilder kannst du die Größe deines Trainingsdatensatzes effektiv vergrößern, ohne neue Daten sammeln zu müssen.
  • Verbesserte Generalisierung: Modelle lernen, Objekte unter verschiedenen Bedingungen zu erkennen, was sie in realen Anwendungen robuster macht.
  • Reduziertes Overfitting: Durch die Einführung von Variabilität in den Trainingsdaten ist es weniger wahrscheinlich, dass Modelle spezifische Bildmerkmale auswendig lernen.
  • Verbesserte Leistung: Modelle, die mit geeigneter Augmentation trainiert wurden, erzielen in der Regel eine bessere Genauigkeit auf Validierungs- und Testsets.

Die Implementierung von Ultralytics YOLO bietet eine umfassende Suite von Augmentationstechniken, von denen jede spezifische Zwecke erfüllt und auf unterschiedliche Weise zur Modellleistung beiträgt. Dieser Leitfaden erläutert jeden Augmentationsparameter im Detail und hilft dir zu verstehen, wann und wie du sie in deinen Projekten effektiv einsetzt.

Link to this sectionBeispielkonfigurationen#

Du kannst jeden Parameter mithilfe der Python API, des Command Line Interface (CLI) oder einer Konfigurationsdatei anpassen. Nachfolgend findest du Beispiele, wie du die Datenaugmentation mit jeder Methode einrichtest.

Konfigurationsbeispiele
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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 Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Link to this sectionVerwendung einer Konfigurationsdatei#

Du kannst alle Trainingsparameter, einschließlich Augmentationen, in einer YAML-Konfigurationsdatei (z. B. train_custom.yaml) definieren. Der mode-Parameter ist nur bei Verwendung des CLI erforderlich. Diese neue YAML-Datei überschreibt dann die Standarddatei, die sich im ultralytics-Paket befindet.

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

Starte dann das Training mit der Python API:

Trainingsbeispiel
from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

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

Link to this sectionFarbraum-Augmentationen#

Link to this sectionFarbtonanpassung (hsv_h)#

  • Bereich: 0.0 - 1.0
  • Standard: 0.015
  • Verwendung: Verschiebt die Bildfarben, während ihre Beziehungen zueinander erhalten bleiben. Der Hyperparameter hsv_h definiert das Ausmaß der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_h und hsv_h gewählt wird. Zum Beispiel wird bei hsv_h=0.3 die Verschiebung zufällig zwischen -0.3 und 0.3 ausgewählt. Bei Werten über 0.5 umschließt die Farbtonverschiebung das Farbrad, weshalb die Augmentationen zwischen 0.5 und -0.5 identisch aussehen.
  • Zweck: Besonders nützlich für Außenaufnahmen, bei denen Lichtverhältnisse das Erscheinungsbild von Objekten stark beeinflussen können. Zum Beispiel kann eine Banane bei hellem Sonnenlicht gelber aussehen, in Innenräumen jedoch eher grünlich.
  • Implementierung von Ultralytics: RandomHSV
-0.5-0.250.00.250.5
Farbtonverschiebung -0.5 AugmentationFarbtonverschiebung -0.25 AugmentationOriginalbild ohne AugmentationFarbtonverschiebung 0.25 AugmentationFarbtonverschiebung -0.5 Augmentation

Link to this sectionSättigungsanpassung (hsv_s)#

  • Bereich: 0.0 - 1.0
  • Standard: 0.7
  • Verwendung: Ändert die Intensität der Farben im Bild. Der Hyperparameter hsv_s definiert das Ausmaß der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_s und hsv_s gewählt wird. Zum Beispiel wird bei hsv_s=0.7 die Intensität zufällig zwischen -0.7 und 0.7 ausgewählt.
  • Zweck: Hilft Modellen dabei, mit unterschiedlichen Wetterbedingungen und Kameraeinstellungen umzugehen. Zum Beispiel kann ein rotes Verkehrsschild an einem sonnigen Tag sehr lebendig wirken, bei nebligen Bedingungen jedoch stumpf und verblasst aussehen.
  • Implementierung von Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Sättigung -1.0 Graustufen-AugmentationSättigung -0.5 AugmentationOriginalbild ohne AugmentationSättigung 0.5 AugmentationSättigung 1.0 lebendige Augmentation

Link to this sectionHelligkeitsanpassung (hsv_v)#

  • Bereich: 0.0 - 1.0
  • Standard: 0.4
  • Verwendung: Ändert die Helligkeit des Bildes. Der Hyperparameter hsv_v definiert das Ausmaß der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_v und hsv_v gewählt wird. Zum Beispiel wird bei hsv_v=0.4 die Intensität zufällig zwischen -0.4 und 0.4 ausgewählt.
  • Zweck: Wesentlich für das Training von Modellen, die unter verschiedenen Lichtbedingungen funktionieren müssen. Zum Beispiel kann ein roter Apfel im Sonnenlicht hell erscheinen, im Schatten jedoch viel dunkler.
  • Implementierung von Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Helligkeit -1.0 dunkle AugmentationHelligkeit -0.5 AugmentationOriginalbild ohne AugmentationHelligkeit 0.5 AugmentationHelligkeit 1.0 helle Augmentation

Link to this sectionGeometrische Transformationen#

Link to this sectionRotation (degrees)#

  • Bereich: 0.0 bis 180
  • Standard: 0
  • Verwendung: Rotiert Bilder zufällig innerhalb des angegebenen Bereichs. Der Hyperparameter degrees definiert den Rotationswinkel, wobei die endgültige Anpassung zufällig zwischen -degrees und degrees gewählt wird. Zum Beispiel wird bei degrees=10.0 die Rotation zufällig zwischen -10.0 und 10.0 gewählt.
  • Zweck: Entscheidend für Anwendungen, bei denen Objekte in verschiedenen Ausrichtungen erscheinen können. Zum Beispiel müssen in Luftaufnahmen von Drohnen Fahrzeuge in jede beliebige Richtung orientiert sein, was erfordert, dass Modelle die Objekte unabhängig von ihrer Rotation erkennen.
  • Implementierung von Ultralytics: RandomPerspective
-180-900.090180
Rotation -180 Grad AugmentationRotation -90 Grad AugmentationOriginalbild ohne AugmentationRotation 90 Grad AugmentationRotation 180 Grad Augmentation

Link to this sectionTranslation (translate)#

  • Bereich: 0.0 - 1.0
  • Standard: 0.1
  • Verwendung: Verschiebt Bilder horizontal und vertikal um einen zufälligen Bruchteil der Bildgröße. Der Hyperparameter translate definiert das Ausmaß der Verschiebung, wobei die endgültige Anpassung zweimal (einmal für jede Achse) zufällig innerhalb des Bereichs -translate bis translate gewählt wird. Zum Beispiel wird bei translate=0.5 die Translation zufällig zwischen -0.5 und 0.5 auf der x-Achse gewählt, und ein weiterer unabhängiger Zufallswert wird innerhalb desselben Bereichs für die y-Achse gewählt.
  • Zweck: Hilft Modellen dabei, teilweise sichtbare Objekte zu erkennen, und verbessert die Robustheit gegenüber der Objektposition. Zum Beispiel können in Anwendungen zur Bewertung von Fahrzeugschäden Autoteile je nach Position und Entfernung des Fotografen vollständig oder teilweise im Bild sein. Die Translations-Augmentation bringt dem Modell bei, diese Merkmale unabhängig von ihrer Vollständigkeit oder Position zu erkennen.
  • Implementierung von Ultralytics: RandomPerspective
  • Note: For simplicity, the translations applied below are the same each time for both x and y axes. Values -1.0 and 1.0 are not shown as they would translate the image completely out of the frame.
-0.5-0.250.00.250.5
Translation -0.5 Verschiebung AugmentationTranslation -0.25 Verschiebung AugmentationOriginalbild ohne AugmentationTranslation 0.25 Verschiebung AugmentationTranslation 0.5 Verschiebung Augmentation

Link to this sectionSkalierung (scale)#

  • Bereich: 0.0 - 1.0
  • Standard: 0.5
  • Verwendung: Ändert die Bildgröße um einen zufälligen Faktor innerhalb des angegebenen Bereichs. Der Hyperparameter scale definiert den Skalierungsfaktor, wobei die endgültige Anpassung zufällig zwischen 1-scale und 1+scale gewählt wird. Zum Beispiel wird bei scale=0.5 die Skalierung zufällig zwischen 0.5 und 1.5 gewählt.
  • Zweck: Ermöglicht Modellen den Umgang mit Objekten in unterschiedlichen Entfernungen und Größen. Zum Beispiel können in Anwendungen für autonomes Fahren Fahrzeuge in verschiedenen Entfernungen von der Kamera erscheinen, was erfordert, dass das Modell sie unabhängig von ihrer Größe erkennt.
  • Implementierung von Ultralytics: RandomPerspective
  • Hinweis:
    • Der Wert -1.0 wird nicht angezeigt, da das Bild dadurch verschwinden würde, während 1.0 einfach zu einer 2-fachen Vergrößerung führt.
    • Die in der Tabelle unten angezeigten Werte sind diejenigen, die über den Hyperparameter scale angewendet werden, nicht der endgültige Skalierungsfaktor.
    • Wenn scale größer als 1.0 ist, kann das Bild entweder sehr klein sein oder gespiegelt werden, da der Skalierungsfaktor zufällig zwischen 1-scale und 1+scale gewählt wird. Zum Beispiel wird bei scale=3.0 die Skalierung zufällig zwischen -2.0 und 4.0 gewählt. Wenn ein negativer Wert gewählt wird, wird das Bild gespiegelt.
-0.5-0.250.00.250.5
Skalierung 0.5x Verkleinerung AugmentationSkalierung 0.75x Verkleinerung AugmentationOriginalbild ohne AugmentationSkalierung 1.25x Vergrößerung AugmentationSkalierung 1.5x Vergrößerung Augmentation

Link to this sectionScherung (shear)#

  • Bereich: -180 bis +180
  • Standard: 0
  • Verwendung: Führt eine geometrische Transformation ein, die das Bild entlang der x-Achse und y-Achse verzerrt, wobei Teile des Bildes in eine Richtung verschoben werden, während parallele Linien erhalten bleiben. Der Hyperparameter shear definiert den Scherungswinkel, wobei die endgültige Anpassung zufällig zwischen -shear und shear gewählt wird. Zum Beispiel wird bei shear=10.0 die Scherung zufällig zwischen -10 und 10 auf der x-Achse gewählt, und ein weiterer unabhängiger Zufallswert wird innerhalb desselben Bereichs für die y-Achse gewählt.
  • Zweck: Hilft Modellen dabei, auf Variationen von Blickwinkeln zu generalisieren, die durch leichte Neigungen oder schräge Perspektiven entstehen. Zum Beispiel können in der Verkehrsüberwachung Objekte wie Autos und Verkehrsschilder aufgrund von nicht senkrechten Kamerapositionen schräg erscheinen. Die Anwendung der Scherungs-Augmentation stellt sicher, dass das Modell lernt, Objekte trotz solcher verzerrten Perspektiven zu erkennen.
  • Implementierung von Ultralytics: RandomPerspective
  • Hinweis:
    • shear-Werte können das Bild schnell verzerren, daher wird empfohlen, mit kleinen Werten zu beginnen und diese schrittweise zu erhöhen.
    • Im Gegensatz zu perspektivischen Transformationen führt Scherung keine Tiefe oder Fluchtpunkte ein, sondern verzerrt die Form von Objekten durch Änderung ihrer Winkel, während gegenüberliegende Seiten parallel bleiben.
-10-50.0510
Scherung -10 Grad AugmentationScherung -5 Grad AugmentationOriginalbild ohne AugmentationScherung 5 Grad AugmentationScherung 10 Grad Augmentation

Link to this sectionPerspektive (perspective)#

  • Bereich: 0.0 - 0.001
  • Standard: 0
  • Verwendung: Wendet eine vollständige Perspektivtransformation entlang der x- und y-Achse an, um zu simulieren, wie Objekte erscheinen, wenn sie aus verschiedenen Tiefen oder Blickwinkeln betrachtet werden. Der Hyperparameter perspective definiert das Ausmaß der Perspektive, wobei die endgültige Anpassung zufällig zwischen -perspective und perspective gewählt wird. Zum Beispiel wird bei perspective=0.001 die Perspektive zufällig innerhalb von -0.001 bis 0.001 auf der x-Achse gewählt, und ein weiterer unabhängiger Zufallswert wird im gleichen Bereich für die y-Achse ausgewählt.
  • Zweck: Die Perspektiven-Augmentierung ist entscheidend für den Umgang mit extremen Blickwinkeländerungen, insbesondere in Szenarien, in denen Objekte aufgrund von Perspektivverschiebungen verkürzt oder verzerrt erscheinen. Beispielsweise können in der drohnengestützten Objekterkennung Gebäude, Straßen und Fahrzeuge je nach Neigung und Höhe der Drohne gestreckt oder gestaucht wirken. Durch die Anwendung von Perspektivtransformationen lernen Modelle, Objekte trotz dieser perspektivisch bedingten Verzerrungen zu erkennen, was ihre Robustheit bei realen Einsätzen verbessert.
  • Implementierung von Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformationOriginalbild ohne AugmentationPerspective 0.0005 transformationPerspective 0.001 transformation

Link to this sectionOben-Unten spiegeln (flipud)#

  • Bereich: 0.0 - 1.0
  • Standard: 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Zweck: Nützlich für Szenarien, in denen Objekte auf dem Kopf stehen können. In robotischen Sichtsystemen können Objekte auf Förderbändern oder Greifarmen beispielsweise in verschiedenen Ausrichtungen aufgenommen und platziert werden. Vertikales Spiegeln hilft dem Modell, Objekte unabhängig von ihrer Ausrichtung von oben nach unten zu erkennen.
  • Ultralytics' Implementierung: RandomFlip
flipud ausflipud an
Original image without augmentationVertical flip augmentation enabled
  • Bereich: 0.0 - 1.0
  • Standard: 0.5
  • Verwendung: Führt eine horizontale Spiegelung 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, Objekte in gespiegelten Ausrichtungen zu verallgemeinern. Der Hyperparameter fliplr definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei fliplr=1.0 sicherstellt, dass alle Bilder gespiegelt werden, und fliplr=0.0 die Transformation vollständig deaktiviert. Zum Beispiel hat jedes Bild bei fliplr=0.5 eine 50%ige Chance, von links nach rechts gespiegelt zu werden.
  • Zweck: Horizontales Spiegeln wird in der Objekterkennung, Pose-Schätzung und Gesichtserkennung weit verbreitet eingesetzt, um die Robustheit gegenüber Links-Rechts-Variationen zu verbessern. Im autonomen Fahren können Fahrzeuge und Fußgänger beispielsweise 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 ausfliplr an
Original image without augmentationHorizontal flip augmentation enabled

Link to this sectionBGR-Kanal-Tausch (bgr)#

  • Bereich: 0.0 - 1.0
  • Standard: 0
  • Verwendung: Tauscht die Farbkanäle eines Bildes von RGB zu BGR, wodurch die Reihenfolge der Farbdarstellung geändert wird. Der Hyperparameter bgr definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei bgr=1.0 sicherstellt, dass alle Bilder den Kanalaustausch durchlaufen, und bgr=0.0 ihn deaktiviert. Zum Beispiel hat jedes Bild bei bgr=0.5 eine 50%ige Chance, von RGB zu BGR konvertiert zu werden.
  • Zweck: Erhöht die Robustheit gegenüber verschiedenen Farbkanal-Reihenfolgen. Dies ist nützlich beim Training von Modellen, die über verschiedene Kamerasysteme und Bildbibliotheken hinweg funktionieren müssen, in denen RGB- und BGR-Formate inkonsistent verwendet werden könnten, oder bei der Bereitstellung von Modellen in Umgebungen, in denen sich das Eingangsfarbformat von den Trainingsdaten unterscheiden kann.
  • Ultralytics' Implementierung: Format
bgr ausbgr an
Original image without augmentationBGR channel swap augmentation

Link to this sectionMosaic (mosaic)#

  • Bereich: 0.0 - 1.0
  • Standard: 1
  • Verwendung: Kombiniert vier Trainingsbilder zu einem. Der Hyperparameter mosaic definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei mosaic=1.0 sicherstellt, dass alle Bilder kombiniert werden, und mosaic=0.0 die Transformation deaktiviert. Zum Beispiel hat jedes Bild bei mosaic=0.5 eine 50%ige Chance, mit drei anderen Bildern kombiniert zu werden.
  • Zweck: Äußerst effektiv zur Verbesserung der Erkennung kleiner Objekte und des Kontextverständnisses. Bei Naturschutzprojekten, in denen Tiere in unterschiedlichen Entfernungen und Maßstäben erscheinen können, hilft die Mosaic-Augmentierung dem Modell beispielsweise, 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-Augmentierung das Modell robuster macht, kann sie den Trainingsprozess anspruchsvoller gestalten.
    • Die mosaic-Augmentierung kann gegen Ende des Trainings deaktiviert werden, indem close_mosaic auf die Anzahl der Epochen vor Abschluss gesetzt wird, nach denen sie abgeschaltet werden soll. Wenn epochs beispielsweise auf 200 und close_mosaic auf 20 gesetzt ist, wird die mosaic-Augmentierung nach 180 Epochen deaktiviert. Wenn close_mosaic auf 0 gesetzt ist, bleibt die mosaic-Augmentierung während des gesamten Trainingsprozesses aktiviert.
    • Das Zentrum des generierten Mosaiks wird mithilfe von Zufallswerten bestimmt und kann entweder innerhalb oder außerhalb des Bildes liegen.
    • Die aktuelle Implementierung der mosaic-Augmentierung kombiniert 4 zufällig aus dem Datensatz ausgewählte Bilder. Wenn der Datensatz klein ist, kann dasselbe Bild mehrfach im selben Mosaik verwendet werden.
mosaic ausmosaic an
Original image without augmentationMosaic 4-image augmentation enabled

Link to this sectionMixup (mixup)#

  • Bereich: 0.0 - 1.0
  • Standard: 0
  • Verwendung: Vermischt zwei Bilder und ihre Labels mit einer gegebenen Wahrscheinlichkeit. Der Hyperparameter mixup definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei mixup=1.0 sicherstellt, dass alle Bilder gemischt werden, und mixup=0.0 die Transformation deaktiviert. Zum Beispiel hat jedes Bild bei mixup=0.5 eine 50%ige Chance, mit einem anderen Bild gemischt zu werden.
  • Zweck: Verbessert die Robustheit des Modells und reduziert Overfitting. In Einzelhandel-Produkterkennungssystemen hilft Mixup dem Modell beispielsweise, robustere Merkmale zu lernen, indem Bilder verschiedener Produkte gemischt werden. Dies lehrt das Modell, Artikel auch dann zu identifizieren, wenn sie nur teilweise sichtbar sind oder durch andere Produkte in überfüllten Ladenregalen verdeckt werden.
  • Ultralytics' Implementierung: Mixup
  • Hinweis:
    • Das mixup-Verhältnis ist ein Zufallswert, der aus einer np.random.beta(32.0, 32.0)-Betaverteilung gezogen wird, was bedeutet, dass jedes Bild etwa 50% beiträgt, mit leichten Abweichungen.
Erstes Bild, mixup ausZweites Bild, mixup ausmixup an
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

Link to this sectionCutMix (cutmix)#

  • Bereich: 0.0 - 1.0
  • Standard: 0
  • Verwendung: Schneidet einen rechteckigen Bereich aus einem Bild und fügt ihn mit einer gegebenen Wahrscheinlichkeit in ein anderes Bild ein. Der Hyperparameter cutmix definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei cutmix=1.0 sicherstellt, dass alle Bilder diese Transformation durchlaufen, und cutmix=0.0 sie vollständig deaktiviert. Zum Beispiel hat jedes Bild bei cutmix=0.5 eine 50%ige Chance, einen Bereich durch ein Stück aus einem anderen Bild ersetzt zu bekommen.
  • Zweck: Verbessert die Modellleistung durch die Schaffung realistischer Verdeckungsszenarien unter Beibehaltung der lokalen Merkmalsintegrität. In Systemen für autonomes Fahren hilft CutMix dem Modell beispielsweise, Fahrzeuge oder Fußgänger auch dann zu erkennen, wenn sie teilweise von anderen Objekten verdeckt sind, was die Erkennungsgenauigkeit in komplexen realen Umgebungen mit überlappenden Objekten verbessert.
  • Ultralytics' Implementierung: CutMix
  • Hinweis:
    • Die Größe und Position des ausgeschnittenen Bereichs wird für jede Anwendung zufällig bestimmt.
    • Im Gegensatz zu Mixup, das Pixelwerte global vermischt, behält cutmix die ursprünglichen Pixelintensitäten innerhalb der ausgeschnittenen Bereiche bei und bewahrt so lokale Merkmale.
    • Ein Bereich wird nur dann in das Zielbild eingefügt, wenn er sich nicht mit einer vorhandenen Bounding Box überschneidet. Außerdem werden nur die Bounding Boxen beibehalten, die mindestens 0.1 (10%) ihrer ursprünglichen Fläche innerhalb des eingefügten Bereichs behalten.
    • Dieser Schwellenwert für die minimale Bounding-Box-Fläche kann in der aktuellen Implementierung nicht geändert werden und ist standardmäßig auf 0.1 gesetzt.
Erstes Bild, cutmix ausZweites Bild, cutmix auscutmix an
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Link to this sectionSegmentierungsspezifische Augmentierungen#

Link to this sectionCopy-Paste (copy_paste)#

  • Bereich: 0.0 - 1.0
  • Standard: 0
  • Verwendung: Funktioniert nur bei Segmentierungsaufgaben. Diese Augmentierung kopiert Objekte innerhalb oder zwischen Bildern basierend auf einer festgelegten Wahrscheinlichkeit, die durch copy_paste_mode gesteuert wird. Der Hyperparameter copy_paste definiert die Wahrscheinlichkeit für die Anwendung der Transformation, wobei copy_paste=1.0 sicherstellt, dass alle Bilder kopiert werden, und copy_paste=0.0 die Transformation deaktiviert. Zum Beispiel hat jedes Bild bei copy_paste=0.5 eine 50%ige Chance, dass Objekte aus einem anderen Bild kopiert werden.
  • Zweck: Besonders nützlich für Instanzsegmentierungsaufgaben und seltene Objektklassen. In der industriellen Fehlererkennung, bei der bestimmte Fehlerarten selten auftreten, kann die Copy-Paste-Augmentierung beispielsweise das Vorkommen dieser seltenen Defekte künstlich erhöhen, indem sie von einem Bild in ein anderes kopiert werden. Dies hilft dem Modell, diese unterrepräsentierten Fälle besser zu lernen, ohne dass zusätzliche fehlerhafte Proben erforderlich sind.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Wie im GIF unten dargestellt, kann die copy_paste-Augmentierung verwendet werden, um Objekte von einem Bild in ein anderes zu kopieren.
    • Sobald ein Objekt kopiert wurde, wird unabhängig vom copy_paste_mode sein Schnitt-über-Fläche-Verhältnis (Intersection over Area, IoA) mit allen Objekten des Quellbildes berechnet. Wenn alle IoA-Werte unter 0.3 (30%) liegen, wird das Objekt in das Zielbild eingefügt. Wenn nur einer der IoA-Werte über 0.3 liegt, wird das Objekt nicht in das Zielbild eingefügt.
    • Der IoA-Schwellenwert kann in der aktuellen Implementierung nicht geändert werden und ist standardmäßig auf 0.3 gesetzt.
copy_paste auscopy_paste an mit copy_paste_mode=flipVisualisierung des copy_paste-Prozesses
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Link to this sectionCopy-Paste-Modus (copy_paste_mode)#

  • Optionen: 'flip', 'mixup'
  • Standard: 'flip'
  • Verwendung: Bestimmt die Methode für die Copy-Paste-Augmentierung. Wenn auf 'flip' eingestellt, stammen die Objekte aus demselben Bild, während 'mixup' das Kopieren von Objekten aus verschiedenen Bildern ermöglicht.
  • Zweck: Ermöglicht Flexibilität bei der Art und Weise, wie kopierte Objekte in Zielbilder integriert werden.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Das IoA-Prinzip ist für beide copy_paste_mode gleich, aber die Art und Weise, wie die Objekte kopiert werden, ist unterschiedlich.
    • Je nach 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 Formvariationen im Vergleich zu den Originalen aufweisen.
ReferenzbildAusgewähltes Bild für copy_pastecopy_paste an mit copy_paste_mode=mixup
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Link to this sectionKlassifizierungsspezifische Augmentierungen#

Link to this sectionAuto Augment (auto_augment)#

  • Optionen: 'randaugment', 'autoaugment', 'augmix', None
  • Standard: 'randaugment'
  • Verwendung: Wendet automatisierte Augmentierungsrichtlinien für die Klassifizierung an. Die Option 'randaugment' nutzt RandAugment, 'autoaugment' verwendet AutoAugment und 'augmix' nutzt AugMix. Die Einstellung auf None deaktiviert die automatisierte Augmentierung.
  • Zweck: Optimiert Augmentierungsstrategien automatisch für Klassifizierungsaufgaben. Die Unterschiede sind folgende:
    • AutoAugment: Dieser Modus wendet vordefinierte Augmentierungsrichtlinien an, die von Datensätzen wie ImageNet, CIFAR10 und SVHN gelernt wurden. Benutzer können diese bestehenden Richtlinien auswählen, aber innerhalb von Torchvision keine neuen trainieren. Um optimale Augmentierungsstrategien für spezifische Datensätze zu finden, 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, was ihn recheneffizienter macht und gleichzeitig die Robustheit des Modells erhöht. Verweis auf das RandAugment-Paper.
    • AugMix: AugMix ist eine Datenaugmentierungsmethode, die die Robustheit des Modells verbessert, indem sie durch zufällige Kombinationen einfacher Transformationen vielfältige Bildvariationen erzeugt. Verweis auf das AugMix-Paper.
  • Ultralytics-Implementierung: classify_augmentations()
  • Hinweis:
    • Im Grunde liegt der Hauptunterschied zwischen den drei Methoden in der Art und Weise, wie die Augmentierungsrichtlinien definiert und angewendet werden.
    • Du kannst auf diesen Artikel verweisen, der die drei Methoden im Detail vergleicht.

Link to this sectionZufälliges Löschen (erasing)#

  • Bereich: 0.0 - 0.9
  • Standard: 0.4
  • Verwendung: Löscht während des Klassifizierungstrainings zufällig Bildbereiche. Der Hyperparameter erasing definiert die Wahrscheinlichkeit der Anwendung dieser Transformation, wobei erasing=0.9 sicherstellt, dass fast alle Bilder gelöscht werden, und erasing=0.0 die Transformation deaktiviert. Beispiel: Bei erasing=0.5 hat jedes Bild eine 50-prozentige Chance, dass ein Bereich gelöscht wird.
  • Zweck: Hilft Modellen dabei, robuste Merkmale zu erlernen und verhindert eine zu starke Abhängigkeit von bestimmten Bildbereichen. In Gesichtserkennungssystemen hilft das zufällige Löschen beispielsweise dabei, Modelle gegenüber teilweisen Verdeckungen wie Sonnenbrillen, Gesichtsmasken oder anderen Objekten, die Gesichtsmerkmale teilweise verdecken könnten, robuster zu machen. Dies verbessert die Leistung in der realen Welt, da das Modell gezwungen wird, Individuen anhand mehrerer Gesichtsmerkmale zu identifizieren, anstatt sich allein auf markante Merkmale zu verlassen, die möglicherweise verdeckt sind.
  • Ultralytics-Implementierung: classify_augmentations()
  • Hinweis:
    • Die erasing-Augmentierung besitzt die Hyperparameter scale, ratio und value, die mit der aktuellen Implementierung nicht geändert werden können. Ihre Standardwerte sind (0.02, 0.33), (0.3, 3.3) bzw. 0, wie in der PyTorch-Dokumentation angegeben.
    • Die Obergrenze des erasing-Hyperparameters ist auf 0.9 festgelegt, um zu vermeiden, dass die Transformation auf alle Bilder angewendet wird.
erasing auserasing an (Beispiel 1)erasing an (Beispiel 2)erasing an (Beispiel 3)
Originalbild ohne AugmentierungBeispiel 1 für zufälliges LöschenBeispiel 2 für zufälliges LöschenBeispiel 3 für zufälliges Löschen

Link to this sectionErweiterte Augmentierungsfunktionen#

Link to this sectionBenutzerdefinierte Albumentations-Transformationen (augmentations)#

  • Typ: list von Albumentations-Transformationen
  • Standard: None
  • Verwendung: Ermöglicht es dir, benutzerdefinierte Albumentations-Transformationen für die Datenaugmentierung über die Python API bereitzustellen. Dieser Parameter akzeptiert eine Liste von Albumentations-Transformations-Objekten, die anstelle der standardmäßigen Albumentations-Transformationen während des Trainings angewendet werden.
  • Zweck: Bietet eine feinkörnige Kontrolle über Datenaugmentierungsstrategien durch Nutzung der umfangreichen Albumentations-Bibliothek. Dies ist besonders nützlich, wenn du spezielle Augmentierungen benötigst, die über die integrierten YOLO-Optionen hinausgehen, wie z. B. fortgeschrittene Farbanpassungen, Rauschinjektionen oder domänenspezifische Transformationen.
  • Ultralytics-Implementierung: Albumentations
Beispiel für benutzerdefinierte Albumentations
import albumentations as A

from ultralytics import YOLO

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

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

Wichtige Punkte:

  • Nur Python API: Benutzerdefinierte Albumentations-Transformationen werden derzeit nur über die Python API unterstützt. Sie können nicht über CLI oder YAML-Konfigurationsdateien angegeben werden.
  • Ersetzt Standardtransformationen: Wenn du benutzerdefinierte Transformationen über den Parameter augmentations bereitstellst, ersetzen diese vollständig die standardmäßigen Albumentations-Transformationen. Die standardmäßigen YOLO-Augmentierungen (wie mosaic, hsv_h, hsv_s, degrees etc.) bleiben aktiv und werden unabhängig davon angewendet.
  • Kompatibilität von Bounding Boxen: Sei vorsichtig bei der Verwendung räumlicher Transformationen (Transformationen, die die Geometrie des Bildes ändern). Ultralytics handhabt die Anpassungen der Bounding Boxen automatisch, aber einige komplexe Transformationen erfordern möglicherweise eine zusätzliche Konfiguration.
  • Umfangreiche Bibliothek: Albumentations bietet über 70 verschiedene Transformationen an. Entdecke alle verfügbaren Optionen in der Albumentations-Dokumentation.
  • Leistungsüberlegung: Das Hinzufügen von zu vielen Augmentierungen oder die Verwendung rechenintensiver Transformationen kann das Training verlangsamen. Beginne mit einer kleinen Auswahl und überwache die Trainingsgeschwindigkeit.

Häufige Anwendungsfälle:

  • Medizinische Bildgebung: Wende spezialisierte Transformationen wie elastische Verformungen oder Gitterverzerrungen für die Augmentierung von Röntgen- oder MRT-Bildern an
  • Luft-/Satellitenbilder: Verwende Transformationen, die für Ansichten aus der Vogelperspektive optimiert sind
  • Lichtarme Bedingungen: Wende Rausch- und Helligkeitsanpassungen an, um schwierige Lichtverhältnisse zu simulieren
  • Industrielle Inspektion: Füge fehlerähnliche Muster oder Texturvariationen für Qualitätskontrollanwendungen hinzu

Kompatibilitätshinweise:

  • Erfordert Albumentations Version 1.0.3 oder höher
  • Kompatibel mit allen YOLO-Erkennungs- und Segmentierungsaufgaben
  • Nicht anwendbar für Klassifizierungsaufgaben (Klassifizierung verwendet eine andere Augmentierungspipeline)

Weitere Informationen zu Albumentations und verfügbaren Transformationen findest du in der offiziellen Albumentations-Dokumentation.

Link to this sectionFAQ#

Link to this sectionEs gibt zu viele Augmentierungen zur Auswahl. Woher weiß ich, welche ich verwenden soll?#

Die Wahl der richtigen Augmentierungen hängt von deinem spezifischen Anwendungsfall und Datensatz ab. Hier sind ein paar allgemeine Richtlinien, die dir bei der Entscheidung helfen können:

  • In den meisten Fällen sind leichte Variationen in Farbe und Helligkeit vorteilhaft. Die Standardwerte für hsv_h, hsv_s und hsv_v sind ein solider Ausgangspunkt.
  • Wenn der Blickwinkel der Kamera konsistent ist und sich nach der Bereitstellung des Modells nicht ändert, kannst du geometrische Transformationen wie rotation, translation, scale, shear oder perspective wahrscheinlich weglassen. Wenn der Kamerawinkel jedoch variieren kann und du möchtest, dass das Modell robuster ist, ist es besser, diese Augmentierungen beizubehalten.
  • Verwende die mosaic-Augmentierung nur, wenn teilweise verdeckte Objekte oder mehrere Objekte pro Bild akzeptabel sind und den Label-Wert nicht ändern. Alternativ kannst du mosaic aktiv lassen, aber den Wert für close_mosaic erhöhen, um sie früher im Trainingsprozess zu deaktivieren.

Kurz gesagt: Halte es einfach. Beginne mit einer kleinen Menge an Augmentierungen und füge bei Bedarf nach und nach weitere hinzu. Das Ziel ist es, die Generalisierung und Robustheit des Modells zu verbessern, nicht den Trainingsprozess unnötig zu komplizieren. Stelle zudem sicher, dass die von dir angewendeten Augmentierungen dieselbe Datenverteilung widerspiegeln, auf die dein Modell in der Produktion treffen wird.

Link to this sectionWenn ich ein Training starte, sehe ich einen Hinweis auf albumentations: Blur[...]. Bedeutet das, dass Ultralytics YOLO zusätzliche Augmentierungen wie Weichzeichnen durchführt?#

Wenn das Paket albumentations installiert ist, wendet Ultralytics automatisch eine Reihe zusätzlicher Bildaugmentierungen damit an. Diese Augmentierungen werden intern gehandhabt und erfordern keine zusätzliche Konfiguration.

Die vollständige Liste der angewendeten Transformationen findest du in unserer technischen Dokumentation sowie in unserem Albumentations-Integrationsleitfaden. Beachte, dass nur Augmentierungen mit einer Wahrscheinlichkeit p größer als 0 aktiv sind. Diese werden gezielt mit geringer Häufigkeit angewendet, um visuelle Artefakte aus der realen Welt nachzuahmen, wie z. B. Weichzeichner oder Graustufeneffekte.

Du kannst auch deine eigenen benutzerdefinierten Albumentations-Transformationen über die Python API bereitstellen. Siehe dazu den Abschnitt Erweiterte Augmentierungsfunktionen für weitere Details.

Link to this sectionWenn ich ein Training starte, sehe ich keinen Hinweis auf Albumentations. Warum?#

Überprüfe, ob das Paket albumentations installiert ist. Falls nicht, kannst du es mit pip install albumentations installieren. Sobald es installiert ist, sollte das Paket automatisch von Ultralytics erkannt und verwendet werden.

Link to this sectionWie kann ich meine Augmentierungen anpassen?#

Du kannst Augmentierungen anpassen, indem du eine benutzerdefinierte Dataset-Klasse und einen Trainer erstellst. Du kannst beispielsweise die standardmäßigen Ultralytics-Klassifizierungsaugmentierungen durch torchvision.transforms.Resize von PyTorch oder andere Transformationen ersetzen. Siehe das Beispiel für benutzerdefiniertes Training in der Klassifizierungsdokumentation für Details zur Implementierung.

Kommentare