GUI & CLI for image data augmentation with TensorFlow/Keras
Project description
Data Augmentation App
Aplicación en Python que permite aplicar data augmentation a colecciones de imágenes mediante capas personalizadas de TensorFlow / Keras. Se puede usar tanto con interfaz gráfica (PyQt 5) como desde la línea de comandos (CLI). Los resultados pueden almacenarse en disco y/o en una base de datos SQLite; además se genera un fichero JSON con los parámetros aplicados a cada imagen. Permite forzar el uso de CPU en vez de GPU o TPU, en caso de no contar con los drivers necesarios instalados.
Índice
- Características
- Instalación
- Requisitos
- Uso rápido
- Ejemplos
- Arquitectura del proyecto
- Contribuir
- Licencia
Características
-
Transformaciones de imagen basadas en capas personalizadas de Keras:
- Volteo aleatorio horizontal/vertical
- Rotación aleatoria
- Zoom aleatorio
- Desplazamiento de canales (channel shift)
- Distorsión de color (hue, saturación, brillo, contraste)
- Ruido gaussiano
- Ruido Salt & Pepper
-
Modo GUI (PyQt5) con barra de progreso y cancelación.
-
Modo CLI con
argparse, ideal para automatización y pipelines. -
Salida flexible:
- Carpeta en disco (PNG)
- Base de datos SQLite (blob + etiqueta)
- Ficheros JSON con los parámetros aplicados a cada transformación.
-
Opción de forzar ejecución en CPU.
Instalación
pip install data-augmentation-app
⚠️ Asegúrate de usar un virtual environment para evitar conflictos de dependencias.
Requisitos
- Python ≥ 3.8
- TensorFlow ≥ 2.8
- PyQt5 ≥ 5.15
- Pillow
- NumPy
Las dependencias principales se instalan automáticamente desde PyPI.
Nota en sistemas Unix TensorFlow puede mostrar algunos warnings (p. ej. sobre extensiones AVX, variables de entorno o aceleradores no detectados) al arrancar. Estos mensajes son solo informativos y no afectan al funcionamiento ni a los resultados de la aplicación.
Uso rápido
Interfaz gráfica (GUI)
data-augmentation
- Selecciona la carpeta de imágenes de entrada.
- Indica al menos uno de los destinos: carpeta de salida y/o archivo
.dbde SQLite. - En caso de considerarlo oportuno, activa el uso de CPU para las transformaciones.
- Activa las transformaciones deseadas y ajusta sus parámetros.
- Pulsa Iniciar y sigue la barra de progreso. Puedes detener el proceso en cualquier momento.
Línea de comandos (CLI)
data-augmentation --help
Los parámetros más importantes son:
| Parámetro | Descripción |
|---|---|
--in-dir |
Carpeta de imágenes de entrada (obligatorio) |
--out-dir |
Carpeta para guardar las imágenes aumentadas |
--db-path |
Ruta a la base de datos SQLite donde almacenar los blobs |
--json-dir |
Carpeta donde guardar los ficheros JSON de parámetros |
--num-aug |
Nº de augmentos por imagen (por defecto 20) |
--use-cpu |
Fuerza la ejecución en CPU |
--random-flip --flip-horizontal/--no-flip-horizontal --flip-vertical/--no-flip-vertical |
Activa el volteo aleatorio y sus opciones |
--random-rotation --rotation-delta 0.3 |
Rotación aleatoria ±0.3 |
--random-zoom --zoom-delta 0.25 |
Zoom aleatorio ±0.25 |
--random-channel-shift --channel-shift 0.2 |
Desplazamiento de canales |
--color-distortion … |
Distorsiones de color (hue, brillo, etc.) |
--gaussian-noise … |
Ruido gaussiano |
--salt-pepper-noise … |
Ruido sal y pimienta |
Ejemplo mínimo
data-augmentation \
--in-dir ./imgs \
--out-dir ./augmented \
--num-aug 30 \
--random-flip --random-rotation --rotation-delta 0.25
Ejemplos
Al finalizar se generarán archivos *.png y, si lo indicas, sus correspondientes *.json con esta estructura:
augmented/
├── imagen_0.png
├── imagen_0.json
├── imagen_1.png
├── imagen_1.json
└── …
La base de datos SQLite contendrá una tabla imagenes_aumentadas con los blobs de imagen y su etiqueta.
Arquitectura del proyecto
data_augmentation_app/
├── __init__.py # Metadata del paquete y exportación de API pública
├── data_augmentation_main.py # Lanza la GUI / dispatcher principal
├── cli.py # Parsing de argumentos y creación de la config CLI
├── augmentation_core.py # Núcleo de procesamiento: aplica el pipeline y gestiona la E/S
└── layers_personalizadas.py # Capas Keras para cada transformación
Cada transformación es una subclase de tf.keras.layers.Layer, de modo que el pipeline se construye como un tf.keras.Sequential, aprovechando la API funcional de TensorFlow y la ejecución en GPU/CPU.
Contribuir
- Haz un fork del repositorio y crea tu rama:
git checkout -b feature/nueva-funcion. - Envía un pull request describiendo tus cambios.
¡Se agradecen nuevas transformaciones y mejoras en la interfaz!
Licencia
Este proyecto se distribuye bajo la licencia MIT.
Autoría
Desarrollado con ❤️ por Javier García.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file data_augmentation_app-0.1.4.tar.gz.
File metadata
- Download URL: data_augmentation_app-0.1.4.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db93be4faaafe61267129cb156cc3f7e271e013f215cc535538cb71c170d65f7
|
|
| MD5 |
7053643e6419a97f8f651b4c61c6275a
|
|
| BLAKE2b-256 |
5c2a47644ef00328fb1bcd0a49d227b4ef55c4c557cb7897a50e2a6ee3d1afb3
|
File details
Details for the file data_augmentation_app-0.1.4-py3-none-any.whl.
File metadata
- Download URL: data_augmentation_app-0.1.4-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a070c54f3169fc9aff0d7d157ca9bc22ceb0adcca34a5e22cf04cf6a0dd454b4
|
|
| MD5 |
63438acf52249cccd5ec4e4644e12113
|
|
| BLAKE2b-256 |
efa2a42cec020520b913ca9c8bd20764dd1a73ee2ba1478b01af6d28549071a3
|