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
fromultralyticsimportYOLO# Load a modelmodel=YOLO("yolo11n.pt")# Training with custom augmentation parametersmodel.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
yolodetecttraindata=coco8.yamlmodel=yolo11n.ptepochs=100hsv_h=0.03hsv_s=0.6hsv_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 usagemode:traindata:coco8.yamlmodel:yolo11n.ptepochs:100hsv_h:0.03hsv_s:0.6hsv_v:0.5
Starten Sie dann das Training mit der Python :
Beispiel für einen Zug
fromultralyticsimportYOLO# Load a COCO-pretrained YOLO11n modelmodel=YOLO("yolo11n.pt")# Train the model with custom configurationmodel.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolodetecttrainmodel="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.
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.
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.
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.
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.
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
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.
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
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.
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
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.
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.
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.
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.
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.
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
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.
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
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.
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
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.
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
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.
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.
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.
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)
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