image

augmentImages

Descripción

La acción `augmentImages` en SAS Viya se utiliza para aumentar imágenes creando parches y aplicándoles diversas mutaciones. Esta técnica es fundamental en el aprendizaje profundo para expandir artificialmente el conjunto de datos de entrenamiento, lo que ayuda a mejorar la robustez y el rendimiento del modelo al exponerlo a una mayor variedad de datos de imagen.

proc cas; 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; run;
Parámetros
ParámetroDescripción
addColumnsEspecifica columnas adicionales para agregar a la tabla de salida.
augmentationsEspecifica la lista de opciones de recorte y mutación.
casOutEspecifica la tabla de salida para almacenar las imágenes aumentadas.
copyVarsEspecifica las variables a copiar de la tabla de entrada a la tabla de salida.
decodeCuando se establece en True, decodifica las imágenes antes de escribirlas en la tabla de salida.
imageEspecifica el nombre de la columna que contiene los binarios de la imagen.
seedEspecifica una semilla para la escritura aleatoria de imágenes.
tableEspecifica la tabla de entrada que contiene los datos de la imagen.
writeRandomlyCuando se establece en True, escribe la imagen resultante de forma aleatoria en la tabla de salida.
Creación de Datos de Ejemplo

Este código crea una tabla CAS llamada 'my_images' que contiene la ruta a las imágenes que se utilizarán para el aumento. Es un requisito previo para poder cargar y procesar las imágenes.

¡Copiado!
1DATA mycas.my_images;
2 LENGTH image_path $200;
3 INPUT image_path $;
4 DATALINES;
5 /path/to/your/image1.jpg
6 /path/to/your/image2.png
7 /path/to/your/image3.bmp
8 ;
9RUN;
10 
11PROC CAS;
12 image.loadImages /
13 path="my_images"
14 casOut={name="images_table", caslib="mycas", replace=true}
15 TABLE={name="my_images", caslib="mycas"};
16RUN;

Ejemplos

Este ejemplo toma cada imagen de la tabla 'images_table', extrae un parche de 224x224 píxeles desde la esquina superior izquierda (0,0), y luego crea una versión volteada horizontalmente de ese parche.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 image.augmentImages /
3 TABLE={name='images_table'}
4 augmentations={{width=224, height=224, x=0, y=0, mutations={horizontalFlip=true}}}
5 casOut={name='augmented_simple', caslib='mycas', replace=true}
6 copyVars={'_id_', '_path_'};
7RUN;

Este ejemplo demuestra un escenario de aumento más complejo. Para cada imagen, se realizan dos tipos de aumentos. El primero ('useWholeImage=true') aplica una serie de mutaciones a la imagen completa. El segundo ('sweepImage=true') barre la imagen con una ventana de 256x256, creando múltiples parches. A cada parche se le aplica aleatoriamente una rotación a la izquierda, un aclarado o un oscurecimiento. La semilla ('seed') asegura la reproducibilidad de las operaciones aleatorias.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 image.augmentImages /
3 TABLE={name='images_table'}
4 seed=1234
5 augmentations={
6 {useWholeImage=true, mutations={horizontalFlip=true, verticalFlip=true, colorJittering=true}},
7 {sweepImage=true, width=256, height=256, stepSize=128,
8 mutations={
9 rotateLeft={type='RANGE', value={10, 45}},
10 lighten={type='RANGE', value={1.1, 1.5}},
11 darken={type='RANGE', value={0.5, 0.9}}
12 }
13 }
14 }
15 casOut={name='augmented_detailed', caslib='mycas', replace=true}
16 copyVars={'_id_', '_path_'};
17RUN;

FAQ

¿Cuál es el propósito de la acción `augmentImages`?
¿Qué tipo de mutaciones se pueden aplicar a las imágenes con esta acción?
¿Cómo puedo procesar la imagen completa en lugar de crear parches?
¿Qué hace el parámetro `sweepImage`?
¿Es posible generar múltiples versiones mutadas de cada parche de imagen?
¿Cómo se especifica la tabla de entrada que contiene las imágenes?

Escenarios asociados

Caso de uso
Análisis de Robustez de Modelo para Detección de Neumonía en Rayos X

Un hospital busca mejorar la precisión de su modelo de Deep Learning para detectar signos de neumonía en radiografías de tórax. El conjunto de datos es limitado y se necesita ge...

Caso de uso
Generación Masiva de Parches para Segmentación de Cobertura Terrestre

Una agencia geoespacial necesita entrenar un modelo de segmentación de imágenes para clasificar la cobertura del suelo (bosque, agua, urbano) a partir de imágenes satelitales de...

Caso de uso
Robustez del Proceso de Aumento Frente a Datos de Imagen Corruptos

En una línea de producción, un sistema de visión artificial captura imágenes de piezas para control de calidad. Ocasionalmente, se generan archivos de imagen corruptos o vacíos....