image

augmentImages

L'essentiel
Auf einen Blick
L'enrichissement des données via l'action CAS augmentImages constitue une étape pivot pour tout projet de Deep Learning sous SAS Viya. En générant des versions altérées de vos visuels originaux — par le biais de la création de patchs et l'application de mutations spécifiques comme les variations colorimétriques ou géométriques — vous renforcez considérablement la capacité de généralisation de vos algorithmes. Cette page centralise les réponses aux interrogations techniques les plus fréquentes concernant le paramétrage et l'optimisation de cette fonctionnalité de vision par ordinateur.

To achieve superior model robustness in Computer Vision, data scientists leverage the augmentImages CAS action within the SAS Viya ecosystem. This tool empowers users to artificially expand their training datasets by systematically generating mutated patches from source imagery, simulating various real-world conditions such as lighting shifts or angle adjustments. Below, you will find a comprehensive repository of Frequently Asked Questions designed to guide you through the effective implementation and troubleshooting of these image augmentation routines.

Die künstliche Erweiterung der Trainingsbasis ist ein entscheidender Faktor für die Qualität neuronaler Netze in der Bildverarbeitung. Mit der CAS-Aktion augmentImages bietet SAS Viya eine leistungsstarke Methode, um durch die Erzeugung von Bildausschnitten (Patches) und gezielten Modifikationen die Varianz in den Datenbeständen synthetisch zu erhöhen. In diesem Bereich haben wir die wichtigsten Antworten und Lösungen für Anwender zusammengestellt, die sich mit der Konfiguration und dem Einsatz dieser Deep-Learning-Funktion befassen.

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

Kopiert!
1PROC CAS;
2 image.loadImages /
3 path="/pfad/zu/ihren/bildern/"
4 casout={name="myImages", caslib="casuser", replace=true};
5RUN;
6QUIT;

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 Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3image.augmentImages / TABLE={name='myImages'} casOut={name='augmented_images_simple', replace=true} augmentations={{useWholeImage=true, mutations={horizontalFlip=true}}};
4 
5RUN;
6 
7QUIT;
8 
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 Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3image.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}}}}};
4 
5RUN;
6 
7QUIT;
8 
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 Code wartet auf Validierung durch die Community
Kopiert!
1 
2PROC CAS;
3image.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}};
4 
5RUN;
6 
7QUIT;
8 
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?

Zugehörige Szenarien

Anwendungsfall
Erkennung von Defekten auf Leiterplatten durch Augmentation für Robustheit

Ein Elektronikhersteller möchte ein KI-Modell trainieren, um kleine Defekte auf Leiterplatten (PCBs) zu erkennen. Die Beleuchtung und Ausrichtung der Platinen während der Aufnah...

Anwendungsfall
Großflächige Patch-Extraktion aus Satellitenbildern zur Landnutzungsklassifizierung

Ein Geoinformationsunternehmen analysiert hochauflösende Satellitenbilder, um Landflächen (z.B. Wald, Wasser, Stadtgebiet) zu klassifizieren. Da die Originalbilder sehr groß sin...

Anwendungsfall
Test der Robustheit mit mehreren Augmentationsstrategien und Verdeckung

Ein Forschungsinstitut arbeitet mit MRT-Scans, um Tumore zu identifizieren. Die Scans stammen aus verschiedenen Quellen und weisen unterschiedliche Eigenschaften auf. Dieses Sze...