Skip to main content

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

  1. Características
  2. Instalación
  3. Requisitos
  4. Uso rápido
    1. GUI
    2. CLI
  5. Ejemplos
  6. Arquitectura del proyecto
  7. Contribuir
  8. 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
  1. Selecciona la carpeta de imágenes de entrada.
  2. Indica al menos uno de los destinos: carpeta de salida y/o archivo .db de SQLite.
  3. En caso de considerarlo oportuno, activa el uso de CPU para las transformaciones.
  4. Activa las transformaciones deseadas y ajusta sus parámetros.
  5. 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

  1. Haz un fork del repositorio y crea tu rama: git checkout -b feature/nueva-funcion.
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

data_augmentation_app-0.1.4.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

data_augmentation_app-0.1.4-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

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

Hashes for data_augmentation_app-0.1.4.tar.gz
Algorithm Hash digest
SHA256 db93be4faaafe61267129cb156cc3f7e271e013f215cc535538cb71c170d65f7
MD5 7053643e6419a97f8f651b4c61c6275a
BLAKE2b-256 5c2a47644ef00328fb1bcd0a49d227b4ef55c4c557cb7897a50e2a6ee3d1afb3

See more details on using hashes here.

File details

Details for the file data_augmentation_app-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for data_augmentation_app-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a070c54f3169fc9aff0d7d157ca9bc22ceb0adcca34a5e22cf04cf6a0dd454b4
MD5 63438acf52249cccd5ec4e4644e12113
BLAKE2b-256 efa2a42cec020520b913ca9c8bd20764dd1a73ee2ba1478b01af6d28549071a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page