?> augmentImages - WeAreCAS
image

augmentImages

Beschreibung

Die Aktion `augmentImages` ist ein leistungsstarkes Werkzeug im Computer Vision Toolkit von SAS Viya. Ihr Hauptzweck ist die künstliche Erweiterung eines Bilddatensatzes durch das Erstellen von modifizierten Kopien vorhandener Bilder. Dieser Prozess, bekannt als Datenaugmentation, ist entscheidend für das Training robuster Deep-Learning-Modelle, da er hilft, die Vielfalt der Trainingsdaten zu erhöhen und Überanpassung (Overfitting) zu reduzieren. Die Aktion funktioniert, indem sie entweder ganze Bilder oder aus ihnen extrahierte Patches (Ausschnitte) nimmt und eine Reihe von Transformationen oder 'Mutationen' darauf anwendet. Zu diesen Mutationen gehören geometrische Änderungen wie Spiegelungen und Drehungen sowie photometrische Änderungen wie Anpassungen von Helligkeit, Kontrast und Farbe. Das Ergebnis ist eine neue Tabelle, die sowohl die ursprünglichen als auch die neu generierten, augmentierten Bilder enthält, bereit zur Verwendung im Modelltraining.

image.augmentImages { addColumns={augmentImagesAddColumnsParms}, augmentations={{augmentationOptions-1} <, {augmentationOptions-2}, ...>}, casOut={casouttable}, copyVars={"variable-name-1" <, "variable-name-2", ...>}, decode=TRUE | FALSE, image="variable-name", seed=64-bit-integer, table={castable}, writeRandomly=TRUE | FALSE };
Einstellungen
ParameterBeschreibung
addColumnsGibt zusätzliche Spalten an, die der Ausgabetabelle hinzugefügt werden sollen.
augmentationsGibt die Liste der Zuschneide- und Mutationsoptionen an.
casOutGibt die Ausgabetabelle an, in der die augmentierten Bilder gespeichert werden sollen.
copyVarsGibt die Variablen an, die von der Eingabetabelle in die Ausgabetabelle kopiert werden sollen.
decodeWenn auf TRUE gesetzt, werden die Bilder vor dem Schreiben in die Ausgabetabelle dekodiert.
imageGibt den Namen der Spalte an, die die Bildbinärdaten enthält.
seedGibt einen Seed für die Zufallszahlengenerierung an, um reproduzierbare Augmentationen zu gewährleisten.
tableGibt die Eingabetabelle an, die die zu augmentierenden Bilder enthält.
writeRandomlyWenn auf TRUE gesetzt, werden die resultierenden Bilder zufällig in die Ausgabetabelle geschrieben.
Datenaufbereitung
Laden von Bilddaten

Bevor die Augmentation durchgeführt werden kann, müssen die Bilder in eine CAS-Tabelle geladen werden. Der folgende Code verwendet die Aktion `loadImages`, um alle Bilder aus einem angegebenen Pfad in die CAS-Tabelle `myImages` zu laden. Diese Tabelle dient als Eingabe für die `augmentImages`-Aktion.

proc cas;
  image.loadImages /
    path="/pfad/zu/ihren/bildern/"
    casout={name="myImages", caslib="casuser", replace=true};
run;
quit;

Beispiele

Dies ist das grundlegendste Beispiel für die Datenaugmentation. Es nimmt jedes Bild aus der `myImages`-Tabelle, wendet eine horizontale Spiegelung an und speichert das Ergebnis in einer neuen Tabelle namens `augmented_images_simple`. Die Option `useWholeImage=true` stellt sicher, dass die gesamte Bildgröße für die Augmentation verwendet wird.

SAS® / CAS-Code
Kopiert!
1PROC CAS; image.augmentImages / TABLE={name='myImages'} casOut={name='augmented_images_simple', replace=true} augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}}; RUN; QUIT;
Ergebnis :
Die Aktion erzeugt eine neue CAS-Tabelle `augmented_images_simple`, die die horizontal gespiegelten Versionen der Originalbilder enthält.

Dieses Beispiel zeigt einen komplexeren Anwendungsfall, der für das Training von Objekterkennungsmodellen typisch ist. Es durchläuft jedes Bild mit einem 224x224 Pixel großen Schiebefenster (`sweepImage=true`). Für jeden extrahierten Patch wird eine Reihe von Mutationen zufällig angewendet: eine 50%ige Wahrscheinlichkeit einer horizontalen Spiegelung, eine zufällige Drehung nach links um bis zu 25 Grad und eine zufällige Aufhellung um 10% bis 40%. Die Verwendung eines `seed` gewährleistet, dass die zufälligen Operationen bei jeder Ausführung des Codes identisch sind, was für die Reproduzierbarkeit wichtig ist.

SAS® / CAS-Code
Kopiert!
1PROC CAS; image.augmentImages / TABLE={name='myImages'} casOut={name='augmented_images_detailed', replace=true} seed=1234 augmentations={{sweepImage=true, width=224, height=224, mutations={horizontalFlip=true, rotateLeft={type='RANGE', value={0, 25}}, lighten={type='RANGE', value={0.1, 0.4}}}}}; RUN; QUIT;
Ergebnis :
Erstellt eine Tabelle `augmented_images_detailed`, die eine große Anzahl von 224x224 Pixel großen Bildpatches enthält. Diese Patches wurden durch eine Kombination aus Spiegelung, Drehung und Aufhellung transformiert, was zu einem vielfältigen Datensatz für das Training eines robusten Modells führt.

Dieses Beispiel demonstriert, wie man mehrere Augmentationsstrategien in einem einzigen Aufruf kombiniert. Es definiert zwei separate Augmentationssätze. Der erste erstellt 256x256 Patches und verdunkelt sie. Der zweite erstellt kleinere 128x128 Patches und wendet eine Verdeckung (`occlude`) an, bei der ein zufälliger Bereich des Patches ausgeblendet wird. Dies zwingt das Modell, aus partiellen Informationen zu lernen. Beide Sätze von augmentierten Bildern werden in derselben Ausgabetabelle `augmented_images_multi` gespeichert.

SAS® / CAS-Code
Kopiert!
1PROC CAS; image.augmentImages / TABLE={name='myImages'} casOut={name='augmented_images_multi', replace=true} augmentations={{sweepImage=true, width=256, height=256, mutations={darken={type='BASIC'}}}, {sweepImage=true, width=128, height=128, occlude=true}}; RUN; QUIT;
Ergebnis :
Die Ausgabetabelle `augmented_images_multi` enthält zwei Arten von augmentierten Bildern: verdunkelte 256x256 Patches und 128x128 Patches mit verdeckten Bereichen. Dies bereichert den Trainingsdatensatz mit Variationen in Größe und Sichtbarkeit.

FAQ

Was bewirkt die Aktion `augmentImages`?
Welche Parameter sind für die Aktion `augmentImages` erforderlich?
Welche Arten von Mutationen können auf die Bilder angewendet werden?
Wie kann ich die Erstellung von Bildausschnitten (Patches) steuern?
Kann ich die resultierenden Bilder zufällig in die Ausgabetabelle schreiben lassen?