Este repositorio contiene el código y los resultados del proyecto de investigación sobre la detección de imágenes sintéticas desarrollado para el ramo INF473 INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL EXPLICABLE.
➡️ Leer el Informe Completo del Proyecto (PDF)
Este proyecto implementa un sistema completo de clasificación binaria para distinguir entre imágenes reales e imágenes generadas por IA, utilizando el dataset CIFAKE de Kaggle. El enfoque principal está en la aplicación de múltiples técnicas de Inteligencia Artificial Explicable (XAI) para interpretar y visualizar las decisiones del modelo.
- Dataset: CIFAKE con imágenes reescaladas a 224x224 pixels clasificadas como REAL o FAKE
- Múltiples Arquitecturas: Modelo CNN personalizado, VGG16 y InceptionV3 con Transfer Learning
- Técnicas XAI: Implementación de 2 técnicas diferentes de explicabilidad
- Evaluación Completa: Métricas de rendimiento con visualizaciones detalladas
-
Preparación de Datos
- Preprocesamiento específico para cada arquitectura (VGG16/InceptionV3)
- Augmentación de datos (RandomFlip, RandomRotation, RandomZoom)
- División eficiente con
tf.data.Datasety optimización conAUTOTUNE
-
Arquitecturas de Modelos
- CNN Personalizada: Modelo secuencial con bloques Conv2D, BatchNormalization, MaxPooling y Dropout
- VGG16 Transfer Learning: Con fine-tuning desde el ultimo bloque convolucional
- InceptionV3 Transfer Learning: Con fine-tuning desde la capa 'mixed9'
-
Entrenamiento y Optimización
- Callbacks avanzados: EarlyStopping y ModelCheckpoint
- Métricas múltiples: Accuracy, Binary Crossentropy Loss, F1-Score
- Estrategia de fine-tuning con learning rates adaptativos
-
Técnicas de Explicabilidad (XAI)
- Grad-CAM: Mapas de activación de gradientes usando tf-keras-vis
- SmoothGrad: Gradientes suavizados con tf-keras-vis
-
Visualización y Análisis
- Comparación visual de predicciones vs etiquetas reales
- Mapas de calor superpuestos para cada técnica XAI
El proyecto no solo busca lograr una clasificación precisa de imágenes reales vs generadas por IA, sino principalmente comprender y explicar cómo el modelo toma sus decisiones mediante la implementación y comparación de múltiples técnicas de XAI, proporcionando insights valiosos sobre las características que el modelo considera más importantes para la clasificación.
- Visualiza las regiones de la imagen que más contribuyen a la predicción
- Utiliza gradientes de la capa convolucional final
- Genera mapas de calor superpuestos sobre la imagen original
- Mejora la calidad de los Saliency Maps mediante promediado de múltiples muestras con ruido
- Implementado con tf-keras-vis
- Reduce el ruido en las visualizaciones de gradientes
Puedes abrir y ejecutar el notebook directamente en Google Colab usando el siguiente botón:
Este proyecto forma parte del curso INF473 y está enfocado en demostrar la implementación práctica de técnicas de XAI en clasificación de imágenes.