Zum Inhalt springen

Datenerweiterung mit Ultralytics YOLO

Beispiel für Bildverbesserungen

Einführung

Datenerweiterung ist eine wichtige Technik in der Computer Vision, die den Trainingsdatensatz künstlich erweitert, indem verschiedene Transformationen auf bestehende Bilder angewendet werden. Beim Training von Deep-Learning-Modellen wie Ultralytics YOLO hilft die Datenerweiterung, die Robustheit des Modells zu verbessern, die Überanpassung zu reduzieren und die Verallgemeinerung auf reale Szenarien zu verbessern.

Warum Datenerweiterung wichtig ist

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

  • Erweitertes Dataset: Durch die Erstellung von Variationen vorhandener Bilder können Sie Ihren Trainingsdatensatz effektiv vergrößern, ohne neue Daten zu sammeln.
  • Verbesserte Generalisierung: Die Modelle lernen, Objekte unter verschiedenen Bedingungen zu erkennen, was sie in realen Anwendungen robuster macht.
  • Geringere Überanpassung: Durch die Einführung von Variabilität in den Trainingsdaten ist es weniger wahrscheinlich, dass sich die Modelle bestimmte Bildmerkmale einprägen.
  • Verbesserte Leistung: Modelle, die mit einer angemessenen Erweiterung trainiert wurden, erreichen in der Regel eine bessere Genauigkeit in Validierungs- und Testsätzen.

Die Ultralytics YOLO bietet eine umfassende Reihe von Augmentierungstechniken, die jeweils spezifischen Zwecken dienen und auf unterschiedliche Weise zur Modellleistung beitragen. In diesem Leitfaden wird jeder Augmentierungsparameter im Detail untersucht, damit Sie verstehen, wann und wie Sie diese in Ihren Projekten effektiv einsetzen können.

Beispielkonfigurationen

Sie können jeden Parameter über die Python , die BefehlszeilenschnittstelleCLI) oder eine Konfigurationsdatei anpassen. Im Folgenden 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 der Erweiterungen, in einer YAML-Konfigurationsdatei definieren (z.B, train_custom.yaml). Die Website mode ist nur bei Verwendung der CLI erforderlich. Diese neue YAML-Datei überschreibt dann der Standard die sich im ultralytics Paket.

# 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 :

Beispiel für einen Zug

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-Erweiterungen

Farbtonanpassung (hsv_h)

  • Bereich: 0.0 - 1.0
  • Standard: 0.015
  • Verwendung: Verschiebt die Bildfarben unter Beibehaltung ihrer Beziehungen. Die hsv_h Hyperparameter definiert die Größe der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_h und hsv_h. Zum Beispiel, mit hsv_h=0.3wird die Schicht zufällig ausgewählt innerhalb-0.3 zu 0.3. Für Werte über 0.5Die Farbtonverschiebung geht um das Farbrad herum, deshalb sehen die Augmentierungen zwischen 0.5 und -0.5.
  • Zweck: Besonders nützlich für Szenarien im Freien, wo die Lichtverhältnisse das Aussehen von Objekten stark beeinflussen können. Eine Banane kann zum Beispiel bei hellem Sonnenlicht gelber, in Innenräumen aber 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
  • Verwendung: Ändert die Intensität der Farben im Bild. Die hsv_h Hyperparameter definiert die Größe der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_s und hsv_s. Zum Beispiel, mit hsv_s=0.7wird die Intensität zufällig ausgewählt innerhalb-0.7 zu 0.7.
  • Zweck: Hilft den Modellen, mit unterschiedlichen Wetterbedingungen und Kameraeinstellungen umzugehen. So kann beispielsweise ein rotes Verkehrsschild an einem sonnigen Tag sehr lebendig erscheinen, während es bei Nebel stumpf und verblasst wirkt.
  • 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

Einstellung der Helligkeit (hsv_v)

  • Bereich: 0.0 - 1.0
  • Standard: 0.4
  • Verwendung: Ändert die Helligkeit des Bildes. Die hsv_v Hyperparameter definiert die Größe der Verschiebung, wobei die endgültige Anpassung zufällig zwischen -hsv_v und hsv_v. Zum Beispiel, mit hsv_v=0.4wird die Intensität zufällig ausgewählt innerhalb-0.4 zu 0.4.
  • Zweck: Unverzichtbar für das Training von Modellen, die bei unterschiedlichen Lichtverhältnissen funktionieren müssen. Ein roter Apfel kann zum Beispiel im Sonnenlicht hell, im Schatten aber viel dunkler aussehen.
  • 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

Drehung (degrees)

  • Bereich: 0.0 zu 180
  • Standard: 0.0
  • Verwendung: Dreht Bilder zufällig innerhalb des angegebenen Bereichs. Die Seite degrees Der Hyperparameter definiert den Drehwinkel, wobei die endgültige Einstellung zufällig zwischen -degrees und degrees. Zum Beispiel, mit degrees=10.0wird die Drehung zufällig ausgewählt innerhalb-10.0 zu 10.0.
  • Zweck: Entscheidend für Anwendungen, bei denen Objekte in unterschiedlichen Ausrichtungen erscheinen können. Bei Drohnenbildern können die Fahrzeuge beispielsweise in jede Richtung ausgerichtet sein, so dass die Modelle die Objekte unabhängig von ihrer Drehung erkennen müssen.
  • Ultralytics' Implementierung: RandomPerspective
-180 -90 0.0 90 180
grad_-180_augmentation grad_-90_augmentation augmentation_identity grad_90_augmentation grad_180_augmentation

Übersetzung (translate)

  • Bereich: 0.0 - 1.0
  • Standard: 0.1
  • Verwendung: Verschiebt Bilder horizontal und vertikal um einen zufälligen Bruchteil der Bildgröße. Die Seite translate Der Hyperparameter definiert die Größe der Verschiebung, wobei die endgültige Anpassung zweimal (einmal für jede Achse) zufällig innerhalb des Bereichs -translate und translate. Zum Beispiel, mit translate=0.5wird die Übersetzung zufällig ausgewählt innerhalb-0.5 zu 0.5 auf der x-Achse, und ein anderer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Die Modelle lernen, teilweise sichtbare Objekte zu erkennen, und verbessern die Robustheit gegenüber der Objektposition. Bei Anwendungen zur Bewertung von Fahrzeugschäden beispielsweise können Autoteile je nach Position und Entfernung des Fotografen vollständig oder teilweise im Bild erscheinen. Durch die Übersetzungserweiterung lernt das Modell, diese Merkmale unabhängig von ihrer Vollständigkeit oder Position zu erkennen.
  • Ultralytics' Implementierung: RandomPerspective
  • Hinweis: Der Einfachheit halber sind die nachstehenden Übersetzungen für beide Seiten identisch 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

Skala (scale)

  • Bereich: ≥0.0
  • Standard: 0.5
  • Verwendung: Ändert die Größe der Bilder um einen Zufallsfaktor innerhalb des angegebenen Bereichs. Die Seite scale Hyperparameter definiert den Skalierungsfaktor, wobei die endgültige Anpassung zufällig zwischen 1-scale und 1+scale. Zum Beispiel, mit scale=0.5wird die Skalierung zufällig ausgewählt innerhalb0.5 zu 1.5.
  • Zweck: Ermöglicht es den Modellen, mit Objekten in unterschiedlichen Entfernungen und Größen umzugehen. Bei Anwendungen des autonomen Fahrens können beispielsweise Fahrzeuge in unterschiedlichen Entfernungen zur Kamera erscheinen, so dass 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 ergibt einfach einen 2-fachen Zoom.
    • Die in der nachstehenden Tabelle aufgeführten Werte sind diejenigen, die über den Hyperparameter scaleund nicht der endgültige Skalenfaktor.
    • Wenn scale größer ist als 1.0kann das Bild entweder sehr klein sein oder gespiegelt werden, da der Skalierungsfaktor zufällig gewählt wird zwischen 1-scale und 1+scale. Zum Beispiel, mit scale=3.0wird die Skalierung zufällig ausgewählt innerhalb-2.0 zu 4.0. Wenn ein negativer Wert gewählt wird, wird das Bild gespiegelt.
-0.5 -0.25 0.0 0.25 0.5
Skala_-0.5_Augmentation Skala_-0.25_Augmentation augmentation_identity Skala_0.25_Augmentation Skala_0.5_Augmentation

Scherung (shear)

  • Bereich: -180 zu +180
  • Standard: 0.0
  • Verwendung: Führt eine geometrische Transformation ein, die das Bild sowohl entlang der x- als auch der y-Achse verzerrt, wodurch Teile des Bildes in eine Richtung verschoben werden, während parallele Linien beibehalten werden. Die shear Der Hyperparameter definiert den Scherwinkel, wobei die endgültige Einstellung zufällig zwischen -shear und shear. Zum Beispiel, mit shear=10.0wird die Schere zufällig ausgewählt innerhalb-10 zu 10 auf der x-Achse, und ein anderer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Unterstützung der Modelle bei der Verallgemeinerung von Variationen des Blickwinkels, die durch leichte Neigungen oder schräge Blickwinkel verursacht werden. Bei der Verkehrsüberwachung beispielsweise können Objekte wie Autos und Straßenschilder aufgrund von nicht rechtwinklig angeordneten Kameras schräg erscheinen. Die Anwendung der Scherungserweiterung stellt sicher, dass das Modell lernt, Objekte trotz solcher schrägen Verzerrungen zu erkennen.
  • Ultralytics' Implementierung: RandomPerspective
  • Hinweis:
    • shear Werte können das Bild schnell verzerren, daher empfiehlt es sich, mit kleinen Werten zu beginnen und diese schrittweise zu erhöhen.
    • Im Gegensatz zu perspektivischen Transformationen werden bei der Scherung keine Tiefen- oder Fluchtpunkte eingeführt, sondern die Form von Objekten verzerrt, indem ihre Winkel verändert werden, während die gegenüberliegenden Seiten parallel bleiben.
-10 -5 0.0 5 10
Scherung_-10_Augmentation Scherung_-5_Augmentation augmentation_identity Scherung_5_Augmentation scherung_10_augmentation

Perspektive (perspective)

  • Bereich: 0.0 - 0.001
  • Standard: 0.0
  • Verwendung: Wendet eine vollständige perspektivische Transformation entlang der x- und y-Achse an und simuliert so, wie Objekte erscheinen, wenn sie aus verschiedenen Tiefen oder Winkeln betrachtet werden. Die perspective Hyperparameter definiert die Größe der Perspektive, wobei die endgültige Anpassung zufällig zwischen -perspective und perspective. Zum Beispiel, mit perspective=0.001wird die Perspektive zufällig ausgewählt innerhalb-0.001 zu 0.001 auf der x-Achse, und ein anderer unabhängiger Zufallswert wird innerhalb desselben Bereichs auf der y-Achse ausgewählt.
  • Zweck: Die perspektivische Augmentation ist entscheidend für den Umgang mit extremen Blickwinkeländerungen, insbesondere in Szenarien, in denen Objekte aufgrund von Perspektivverschiebungen verkürzt oder verzerrt erscheinen. Bei der Drohnen-basierten Objekterkennung können beispielsweise Gebäude, Straßen und Fahrzeuge je nach Neigung und Höhe der Drohne gestreckt oder gestaucht erscheinen. Durch die Anwendung perspektivischer Transformationen lernen die Modelle, Objekte trotz dieser perspektivisch bedingten Verzerrungen zu erkennen, was ihre Robustheit in realen Einsätzen verbessert.
  • Ultralytics' Implementierung: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
Perspektive_-0.001_Augmentation Perspektive_-0.0005_Augmentation augmentation_identity perspektive_0.0005_augmentation perspektive_0.001_augmentation

Aufwärts-abwärts klappen (flipud)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Verwendung: Führt eine vertikale Spiegelung durch, indem das Bild entlang der y-Achse invertiert wird. Bei dieser Transformation wird das gesamte Bild auf den Kopf gestellt, aber alle räumlichen Beziehungen zwischen den Objekten bleiben erhalten. Der Hyperparameter flipud legt die Wahrscheinlichkeit der Anwendung der Transformation fest, mit einem Wert von flipud=1.0 dass alle Bilder gespiegelt werden und ein Wert von flipud=0.0 die Umwandlung vollständig zu deaktivieren. Zum Beispiel, mit flipud=0.5hat jedes Bild eine 50%ige Chance, auf den Kopf gestellt zu werden.
  • Zweck: Nützlich für Szenarien, in denen Objekte auf dem Kopf stehen können. So können z. B. in Robotik-Vision-Systemen Objekte auf Förderbändern oder Roboterarmen aufgenommen und in verschiedenen Ausrichtungen platziert werden. Das vertikale Spiegeln hilft dem Modell, Objekte unabhängig von ihrer Positionierung von oben nach unten zu erkennen.
  • Ultralytics' Implementierung: RandomFlip
flipud aus flipud auf
augmentation_identity flipud_on_augmentation

Links-Rechts spiegeln (fliplr)

  • Bereich: 0.0 - 1.0
  • Standard: 0.5
  • Verwendung: Führt eine horizontale Spiegelung des Bildes entlang der x-Achse durch. Bei dieser Transformation werden die linke und die rechte Seite vertauscht, wobei die räumliche Konsistenz beibehalten wird, was die Verallgemeinerung des Modells auf Objekte in gespiegelten Ausrichtungen erleichtert. Die Seite fliplr Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, mit einem Wert von fliplr=1.0 dass alle Bilder gespiegelt werden und ein Wert von fliplr=0.0 die Umwandlung vollständig zu deaktivieren. Zum Beispiel, mit fliplr=0.5hat jedes Bild eine 50%ige Chance, von links nach rechts gespiegelt zu werden.
  • Zweck: Die horizontale Spiegelung wird häufig in der Objekterkennung, der Posenschätzung und der Gesichtserkennung eingesetzt, um die Robustheit gegenüber Links-Rechts-Schwankungen zu verbessern. Beim autonomen Fahren zum Beispiel können Fahrzeuge und Fußgänger auf beiden Seiten der Straße auftauchen, und die horizontale Spiegelung hilft dem Modell, sie in beiden Ausrichtungen gleich gut zu erkennen.
  • Ultralytics' Implementierung: RandomFlip
fliplr aus fliplr auf
augmentation_identity fliplr_on_augmentation

BGR-Kanalwechsel (bgr)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Verwendung: Vertauscht die Farbkanäle eines Bildes von RGB zu BGR, wobei die Reihenfolge der Farbdarstellung geändert wird. Die Seite bgr Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei bgr=1.0 Sicherstellung, dass alle Bilder den Kanaltausch durchlaufen und bgr=0.0 sie zu deaktivieren. Zum Beispiel, mit bgr=0.5hat jedes Bild eine 50%ige Chance, von RGB nach BGR konvertiert zu werden.
  • Zweck: Erhöht die Robustheit gegenüber unterschiedlichen Farbkanalanordnungen. Zum Beispiel beim Training von Modellen, die mit verschiedenen Kamerasystemen und Bildbibliotheken arbeiten müssen, bei denen RGB- und BGR-Formate uneinheitlich verwendet werden können, oder beim Einsatz von Modellen in Umgebungen, in denen das Eingabefarbformat von den Trainingsdaten abweichen kann.
  • Ultralytics' Implementierung: Format
bgr aus bgr auf
augmentation_identity bgr_on_augmentation

Mosaik (mosaic)

  • Bereich: 0.0 - 1.0
  • Standard: 1.0
  • Verwendung: Kombiniert vier Trainingsbilder zu einem Bild. Die mosaic Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei mosaic=1.0 Sicherstellung, dass alle Bilder kombiniert werden und mosaic=0.0 Deaktivierung der Umwandlung. Zum Beispiel, mit mosaic=0.5Jedes Bild hat eine 50%ige Chance, mit drei anderen Bildern kombiniert zu werden.
  • Zweck: Hocheffektiv zur Verbesserung der Erkennung kleiner Objekte und des Kontextverständnisses. Bei Projekten zum Schutz von Wildtieren, bei denen Tiere in verschiedenen Entfernungen und Maßstäben vorkommen können, hilft die Mosaikvergrößerung dem Modell zu lernen, dieselbe Art in verschiedenen Größen, bei teilweiser Verdeckung und in verschiedenen Umgebungskontexten zu erkennen, indem aus begrenzten Daten künstlich verschiedene Trainingsmuster erstellt werden.
  • Ultralytics' Implementierung: Mosaik
  • Hinweis:
    • Auch wenn die mosaic Augmentation macht das Modell zwar robuster, kann aber auch den Trainingsprozess erschweren.
    • Die mosaic Augmentation kann gegen Ende des Trainings deaktiviert werden, indem die close_mosaic auf die Anzahl der Epochen vor der Beendigung, in denen sie ausgeschaltet werden soll. Zum Beispiel, wenn epochs wird eingestellt auf 200 und close_mosaic wird eingestellt auf 20die mosaic Die Augmentation wird deaktiviert nach 180 Epochen. Wenn close_mosaic wird eingestellt auf 0die mosaic Augmentation wird für den gesamten Ausbildungsprozess aktiviert sein.
    • Der Mittelpunkt des erzeugten Mosaiks wird anhand von Zufallswerten bestimmt und kann entweder innerhalb oder außerhalb des Bildes liegen.
    • Die derzeitige Umsetzung des mosaic augmentation kombiniert 4 zufällig aus dem Datensatz ausgewählte Bilder. Wenn der Datensatz klein ist, kann dasselbe Bild mehrmals im selben Mosaik verwendet werden.
mosaic aus mosaic auf
augmentation_identity mosaik_auf_augmentation

Verwechslung (mixup)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Verwendung: Mischt zwei Bilder und ihre Beschriftungen mit einer bestimmten Wahrscheinlichkeit. Die mixup Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei mixup=1.0 Sicherstellung, dass alle Bilder gemischt sind und mixup=0.0 Deaktivierung der Umwandlung. Zum Beispiel, mit mixup=0.5Jedes Bild hat eine 50%ige Chance, mit einem anderen Bild gemischt zu werden.
  • Zweck: Verbessert die Robustheit des Modells und reduziert die Überanpassung. Bei Produkterkennungssystemen im Einzelhandel beispielsweise hilft die Verwechslung dem Modell, robustere Merkmale zu erlernen, indem es Bilder verschiedener Produkte mischt und so lernt, Artikel auch dann zu erkennen, wenn sie nur teilweise sichtbar sind oder von anderen Produkten in überfüllten Regalen verdeckt werden.
  • Ultralytics' Implementierung: Mixup
  • Hinweis:
    • Die mixup Verhältnis ist ein Zufallswert, der aus einer np.random.beta(32.0, 32.0) Beta-Verteilung, d. h. jedes Bild trägt etwa 50 % bei, mit leichten Abweichungen.
Erstes Bild, mixup aus Zweites Bild, mixup aus mixup auf
augmentation_mixup_identity_1 augmentation_mixup_identity_2 Verwechslung_bei_Augmentation

CutMix (cutmix)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Verwendung: Schneidet einen rechteckigen Bereich aus einem Bild aus und fügt ihn mit einer bestimmten Wahrscheinlichkeit in ein anderes Bild ein. Die cutmix Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei cutmix=1.0 sicherzustellen, dass alle Bilder diese Transformation durchlaufen und cutmix=0.0 sie vollständig zu deaktivieren. Zum Beispiel, mit cutmix=0.5Jedes Bild hat eine 50 %ige Chance, dass eine Region durch einen Fleck aus einem anderen Bild ersetzt wird.
  • Zweck: Verbesserung der Modellleistung durch Schaffung realistischer Verdeckungsszenarien unter Beibehaltung der Integrität lokaler Merkmale. In autonomen Fahrsystemen beispielsweise hilft Cutmix dem Modell zu lernen, Fahrzeuge oder Fußgänger zu erkennen, auch wenn sie teilweise von anderen Objekten verdeckt sind, und verbessert so die Erkennungsgenauigkeit in komplexen realen Umgebungen mit überlappenden Objekten.
  • Ultralytics' Implementierung: CutMix
  • Hinweis:
    • Die Größe und Position des ausgeschnittenen Bereichs wird bei jeder Anwendung nach dem Zufallsprinzip bestimmt.
    • Im Gegensatz zu mixup, das Pixelwerte global mischt, cutmix behält die ursprünglichen Pixelintensitäten innerhalb der ausgeschnittenen Regionen bei, so dass lokale Merkmale erhalten bleiben.
    • Ein Bereich wird nur dann in das Zielbild eingefügt, wenn er sich mit keinem vorhandenen Begrenzungsrahmen überschneidet. Außerdem werden nur die Begrenzungsrahmen eingefügt, die mindestens 0.1 (10 %) ihrer ursprünglichen Fläche innerhalb der eingefügten Region erhalten bleiben.
    • Dieser Schwellenwert für die Mindestfläche des Begrenzungsrahmens kann bei der derzeitigen Implementierung nicht geändert werden und ist auf 0.1 standardmäßig.
Erstes Bild, cutmix aus Zweites Bild, cutmix aus cutmix auf
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

Segmentierungsspezifische Erweiterungen

Kopieren-Einfügen (copy_paste)

  • Bereich: 0.0 - 1.0
  • Standard: 0.0
  • Verwendung: Diese Erweiterung funktioniert nur bei Segmentierungsaufgaben und kopiert Objekte innerhalb oder zwischen Bildern auf der Grundlage einer bestimmten Wahrscheinlichkeit, die von der copy_paste_mode. Die copy_paste Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei copy_paste=1.0 sicherzustellen, dass alle Bilder kopiert werden und copy_paste=0.0 Deaktivierung der Umwandlung. Zum Beispiel, mit copy_paste=0.5Jedes Bild hat eine 50%ige Chance, dass Objekte aus einem anderen Bild kopiert wurden.
  • Zweck: Besonders nützlich für Segmentierungsaufgaben und seltene Objektklassen. Bei der Erkennung industrieller Defekte, bei denen bestimmte Arten von Defekten selten auftreten, kann die Copy-Paste-Erweiterung das Auftreten dieser seltenen Defekte künstlich erhöhen, indem sie von einem Bild in ein anderes kopiert wird, so dass das Modell diese unterrepräsentierten Fälle besser lernen kann, ohne dass zusätzliche defekte Proben erforderlich sind.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Wie im folgenden Bild zu sehen, ist die copy_paste Augmentation kann dazu verwendet werden, Objekte von einem Bild in ein anderes zu kopieren.
    • Sobald ein Objekt kopiert ist, wird es unabhängig von der copy_paste_modewird seine Schnittmenge über die Fläche (IoA) mit allen Objekten des Ausgangsbildes berechnet. Wenn alle IoA kleiner sind als 0.3 (30%), wird das Objekt in das Zielbild eingefügt. Liegt nur einer der IoAs über 0.3wird das Objekt nicht in das Zielbild eingefügt.
    • Der IoA-Schwellenwert kann bei der derzeitigen Implementierung nicht geändert werden und ist auf 0.3 standardmäßig.
copy_paste aus copy_paste weiter mit copy_paste_mode=flip Visualisieren Sie die copy_paste Prozess
augmentation_identity copy_paste_on_augmentation copy_paste_augmentation_gif_demo

Kopieren-Einfügen-Modus (copy_paste_mode)

  • Optionen: 'flip', 'mixup'
  • Standard: 'flip'
  • Verwendung: Legt die Methode fest, die für kopieren-einfügen Vergrößerung. Bei Einstellung 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 in der Art und Weise, wie kopierte Objekte in Zielbilder integriert werden.
  • Ultralytics' Implementierung: CopyPaste
  • Hinweis:
    • Das IoA-Prinzip ist für beide dasselbe copy_paste_modeDie Art und Weise, wie die Objekte kopiert werden, ist jedoch unterschiedlich.
    • Je nach Bildgröße können Objekte teilweise oder ganz außerhalb des Rahmens kopiert werden.
    • Je nach Qualität der Polygonbeschriftungen können die kopierten Objekte leichte Formabweichungen im Vergleich zu den Originalen aufweisen.
Referenzbild Ausgewähltes Bild für copy_paste copy_paste weiter mit copy_paste_mode=mixup
augmentation_mixup_identity_2 augmentation_identity copy_paste_mode_mixup_augmentation

Klassifizierungsspezifische Erweiterungen

Auto Augment (auto_augment)

  • Optionen: 'randaugment', 'autoaugment', 'augmix', None
  • Standard: 'randaugment'
  • Verwendung: Wendet automatische Erweiterungsrichtlinien für die Klassifizierung an. Die 'randaugment' Option verwendet RandAugment, 'autoaugment' verwendet AutoAugment, und 'augmix' verwendet AugMix. Einstellung auf None deaktiviert die automatische Erweiterung.
  • Zweck: Optimiert automatisch Augmentierungsstrategien für Klassifizierungsaufgaben. Die Unterschiede sind die folgenden:
    • AutoAugmentation: Dieser Modus wendet vordefinierte Erweiterungsrichtlinien an, die aus Datensätzen wie ImageNet, CIFAR10 und SVHN gelernt wurden. Die Benutzer können diese bestehenden Strategien auswählen, aber keine neuen Strategien innerhalb von Torchvision trainieren. Um optimale Augmentierungsstrategien für bestimmte Datensätze zu finden, wären externe Bibliotheken oder benutzerdefinierte Implementierungen erforderlich. Verweis auf das AutoAugment-Papier.
    • RandAugment: Wendet eine zufällige Auswahl von Transformationen mit einheitlicher Größe an. Dieser Ansatz macht eine umfangreiche Suchphase überflüssig, wodurch er rechnerisch effizienter ist und gleichzeitig die Robustheit des Modells erhöht. Verweis auf das RandAugment-Papier.
    • AugMix: AugMix ist eine Methode zur Datenerweiterung, die die Robustheit des Modells erhöht, indem sie durch zufällige Kombinationen einfacher Transformationen verschiedene Bildvarianten erzeugt. Verweis auf das AugMix-Papier.
  • Ultralytics' Implementierung: classify_augmentations()
  • Hinweis:
    • Der Hauptunterschied zwischen den drei Methoden liegt in der Art und Weise, wie die Erweiterungsmaßnahmen definiert und angewendet werden.
    • Sie können diesen Artikel lesen, in dem die drei Methoden im Detail verglichen werden.

Zufälliges Löschen (erasing)

  • Bereich: 0.0 - 0.9
  • Standard: 0.4
  • Verwendung: Löscht Teile des Bildes während des Klassifizierungstrainings nach dem Zufallsprinzip. Die erasing Hyperparameter definiert die Wahrscheinlichkeit der Anwendung der Transformation, wobei erasing=0.9 die dafür sorgen, dass fast alle Bilder gelöscht werden und erasing=0.0 Deaktivierung der Umwandlung. Zum Beispiel, mit erasing=0.5Bei jedem Bild besteht eine 50%ige Chance, dass ein Teil gelöscht wird.
  • Zweck: Hilft Modellen, robuste Merkmale zu erlernen und verhindert, dass sie sich zu sehr auf bestimmte Bildregionen verlassen. Bei Gesichtserkennungssystemen beispielsweise hilft das zufällige Löschen den Modellen, robuster gegenüber partiellen Verdeckungen wie Sonnenbrillen, Gesichtsmasken oder anderen Objekten zu werden, die Gesichtsmerkmale teilweise verdecken können. Dies verbessert die Leistung in der Praxis, indem das Modell gezwungen wird, Personen anhand mehrerer Gesichtsmerkmale zu identifizieren, anstatt sich nur auf markante Merkmale zu verlassen, die möglicherweise verdeckt sind.
  • Ultralytics' Implementierung: classify_augmentations()
  • Hinweis:
    • Die erasing Augmentation ist mit einem scale, ratiound value Hyperparameter, die nicht mit der Option derzeitige Umsetzung. Ihre Standardwerte sind (0.02, 0.33), (0.3, 3.3)und 0wie in der PyTorch angegeben. Dokumentation.
    • Die Obergrenze der erasing Der Hyperparameter wird auf 0.9 um zu vermeiden, dass die Transformation auf alle Bilder angewendet wird.
erasing aus erasing ein (Beispiel 1) erasing ein (Beispiel 2) erasing ein (Beispiel 3)
augmentation_identity löschung_ex1_augmentation löschung_ex2_augmentation löschung_ex3_augmentation

FAQ

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

Die Wahl der richtigen Erweiterungen hängt von Ihrem spezifischen Anwendungsfall und Datensatz ab. Im Folgenden finden Sie einige allgemeine Leitlinien, die Ihnen bei der Entscheidung helfen sollen:

  • In den meisten Fällen sind leichte Abweichungen bei Farbe und Helligkeit von Vorteil. Die Standardwerte für hsv_h, hsv_sund hsv_v sind eine gute Ausgangsbasis.
  • Wenn der Blickwinkel der Kamera konsistent ist und sich nicht ändert, sobald das Modell bereitgestellt wird, können Sie geometrische Transformationen wie rotation, translation, scale, shear, oder perspective. Wenn jedoch der Kamerawinkel variieren kann und das Modell robuster sein soll, ist es besser, diese Erweiterungen beizubehalten.
  • Verwenden Sie die mosaic Augmentation nur dann, wenn teilweise verdeckte Objekte oder mehrere Objekte pro Bild akzeptabel sind und den Beschriftungswert nicht verändern. Alternativ können Sie auch mosaic aktiv, sondern erhöhen die close_mosaic Wert, um sie zu einem früheren Zeitpunkt im Trainingsprozess zu deaktivieren.

Kurz gesagt: Halten Sie es einfach. Beginnen Sie mit einem kleinen Satz von Erweiterungen und fügen Sie nach und nach weitere hinzu, je nach Bedarf. Ziel ist es, die Verallgemeinerung und Robustheit des Modells zu verbessern und den Trainingsprozess nicht zu verkomplizieren. Stellen Sie außerdem sicher, dass die von Ihnen verwendeten Erweiterungen dieselbe Datenverteilung widerspiegeln, mit der Ihr Modell in der Produktion konfrontiert sein wird.

Zu Beginn einer Schulung sehen Sie eine albumentations: Blur[...] Referenz. Bedeutet das, dass Ultralytics YOLO zusätzliche Erweiterungen wie Unschärfe durchführt?

Wenn die albumentations Paket installiert ist, wendet Ultralytics automatisch eine Reihe von zusätzlichen Bildverbesserungen an, die dieses Paket verwenden. Diese Erweiterungen werden intern gehandhabt und erfordern keine zusätzliche Konfiguration.

Die vollständige Liste der angewandten Umwandlungen finden Sie in unserer technische Dokumentationals auch in unserem Albumentations Integrationsleitfaden. Beachten Sie, dass nur die Erweiterungen mit einer Wahrscheinlichkeit p größer als 0 aktiv sind. Diese werden absichtlich mit niedrigen Frequenzen angewendet, um reale visuelle Artefakte wie Unschärfe oder Graustufeneffekte zu imitieren.

Wenn ich eine Ausbildung beginne, sehe ich keinen Hinweis auf Albumentationen. Warum eigentlich?

Prüfen Sie, ob die albumentations Paket installiert ist. Falls nicht, können Sie es installieren, indem Sie pip install albumentations. Nach der Installation sollte das Paket von Ultralytics automatisch erkannt und verwendet werden.



📅 Erstellt vor 1 Monat ✏️ Aktualisiert vor 23 Tagen

Kommentare