?>
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.
| Parameter | Beschreibung |
|---|---|
| addColumns | Gibt zusätzliche Spalten an, die der Ausgabetabelle hinzugefügt werden sollen. |
| augmentations | Gibt die Liste der Zuschneide- und Mutationsoptionen an. |
| casOut | Gibt die Ausgabetabelle an, in der die augmentierten Bilder gespeichert werden sollen. |
| copyVars | Gibt die Variablen an, die von der Eingabetabelle in die Ausgabetabelle kopiert werden sollen. |
| decode | Wenn auf TRUE gesetzt, werden die Bilder vor dem Schreiben in die Ausgabetabelle dekodiert. |
| image | Gibt den Namen der Spalte an, die die Bildbinärdaten enthält. |
| seed | Gibt einen Seed für die Zufallszahlengenerierung an, um reproduzierbare Augmentationen zu gewährleisten. |
| table | Gibt die Eingabetabelle an, die die zu augmentierenden Bilder enthält. |
| writeRandomly | Wenn auf TRUE gesetzt, werden die resultierenden Bilder zufällig in die Ausgabetabelle geschrieben. |
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;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.
| 1 | PROC CAS; image.augmentImages / TABLE={name='myImages'} casOut={name='augmented_images_simple', replace=true} augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}}; RUN; QUIT; |
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.
| 1 | PROC 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; |
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.
| 1 | PROC 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; |