Revelando los Autoencoders de Desruido
'Revelando Autoencoders de Desruido'
Introducción
Los Denoising Autoencoders son modelos de redes neuronales que eliminan el ruido de los datos corruptos o ruidosos aprendiendo a reconstruir los datos iniciales a partir de su contraparte ruidosa. Entrenamos el modelo para minimizar la disparidad entre los datos originales y los datos reconstruidos. Podemos apilar estos autoencoders para formar redes profundas, aumentando su rendimiento.
Además, adaptamos esta arquitectura para manejar una variedad de formatos de datos, incluyendo imágenes, audio y texto. También personalizamos el ruido, como incluir ruido sal y pimienta o ruido gaussiano. A medida que el DAE reconstruye la imagen, aprende eficientemente las características de entrada, lo que lleva a una mejor extracción de representaciones latentes. Es importante destacar que el Denoising Autoencoder reduce la probabilidad de aprender la función de identidad en comparación con un autoencoder regular.
Objetivos de aprendizaje
- Una visión general de los codificadores automáticos de denoising (DAEs) y su uso para obtener una representación de baja dimensionalidad mediante la reconstrucción de los datos originales a partir de diferentes tipos de ruido.
- También cubriremos aspectos de la arquitectura de DAE, incluyendo los componentes del codificador y decodificador.
- Examinar su rendimiento puede proporcionar información sobre su papel en la reconstrucción de los datos originales a partir de sus contrapartes ruidosas.
- Además, consideraremos varias aplicaciones de DAE, como el denoising, la compresión, la extracción de características y el aprendizaje de representaciones. Como ejemplo ilustrativo, nos centraremos en la implementación de DAE para la eliminación de ruido de imágenes utilizando el conjunto de datos de Keras.
Este artículo fue publicado como parte del Data Science Blogathon.
¿Qué son los Denoising Autoencoders?
Los Denoising Autoencoders son un tipo específico de red neuronal que permite el aprendizaje no supervisado de representaciones o codificaciones de datos. Su objetivo principal es reconstruir la versión original de la señal de entrada que ha sido corrompida por ruido. Esta capacidad resulta valiosa en problemas como el reconocimiento de imágenes o la detección de fraudes, donde el objetivo es recuperar la señal original a partir de su forma ruidosa.
Un autoencoder consta de dos componentes principales:
- 5 Ideas de Agencia de Automatización de IA (para Ganar $45k Todos l...
- 10 Emociones Inventadas por ChatGPT (Sorprendentemente Relatables)
- Configuración de Proyectos de Python Parte V
- Codificador: Este componente mapea los datos de entrada en una representación o codificación de baja dimensionalidad.
- Decodificador: Este componente devuelve la codificación al espacio de datos original.
Durante la fase de entrenamiento, se presenta al autoencoder un conjunto de ejemplos de entrada limpios junto con sus versiones ruidosas correspondientes. El objetivo es aprender una tarea utilizando una arquitectura de codificador-decodificador que transforma eficientemente la entrada ruidosa en una salida limpia.
Arquitectura de DAE
La arquitectura del Denoising Autoencoder (DAE) es similar a la de un autoencoder estándar. Consta de dos componentes principales:
Codificador
- El codificador crea una red neuronal equipada con una o más capas ocultas.
- Su propósito es recibir datos de entrada ruidosos y generar una codificación, que representa una representación de baja dimensionalidad de los datos.
- Podemos entender el codificador como una función de compresión, ya que la codificación tiene menos parámetros que los datos de entrada.
Decodificador
- El decodificador actúa como una función de expansión, que se encarga de reconstruir los datos originales a partir de la codificación comprimida.
- Toma como entrada la codificación generada por el codificador y reconstruye los datos originales.
- Al igual que los codificadores, los decodificadores se implementan como redes neuronales con una o más capas ocultas.
Durante la fase de entrenamiento, se presenta al Denoising Autoencoder (DAE) un conjunto de ejemplos de entrada limpios junto con sus respectivas contrapartes ruidosas. El objetivo es adquirir una función que mapee una entrada ruidosa a una salida relativamente limpia utilizando una arquitectura de codificador-decodificador. Para lograr esto, generalmente se utiliza una función de pérdida de reconstrucción para evaluar la disparidad entre la entrada limpia y la salida reconstruida. Un DAE se entrena minimizando esta pérdida mediante la retropropagación, que implica actualizar los pesos tanto de los componentes del codificador como del decodificador.
Las aplicaciones de los Denoising Autoencoders (DAEs) abarcan una variedad de dominios, incluyendo la visión por computadora, el procesamiento de voz y el procesamiento de lenguaje natural.
Ejemplos
- Eliminación de ruido de imágenes: Los DAE son efectivos para eliminar el ruido de las imágenes, como el ruido gaussiano o el ruido sal y pimienta.
- Detección de fraude: Los DAE pueden contribuir a identificar transacciones fraudulentas aprendiendo a reconstruir transacciones comunes a partir de sus equivalentes ruidosos.
- Imputación de datos: Los DAE pueden facilitar la imputación de datos en conjuntos de datos con información incompleta al reconstruir valores faltantes a partir de los datos disponibles.
- Compresión de datos: Los DAE pueden comprimir datos obteniendo una representación concisa de los datos en el espacio de codificación.
- Detección de anomalías: Utilizando los DAE, se pueden detectar anomalías en un conjunto de datos entrenando un modelo para reconstruir datos normales y luego clasificar las entradas desafiantes como potencialmente anormales.
Eliminación de ruido de imágenes con Autoencoder de eliminación de ruido
Los autoencoders de eliminación de ruido (DAEs) proporcionan una solución poderosa para reconstruir los datos originales a partir de su versión ruidosa. En particular, cuando se trata de la eliminación de ruido de imágenes, el DAE puede ser extremadamente efectivo. Al proporcionar una imagen ruidosa como entrada, el DAE crea una versión reconstruida de la imagen original. El proceso de entrenamiento consiste en minimizar la discrepancia entre las imágenes originales y reconstruidas. Una vez que el DAE ha completado su entrenamiento, se puede utilizar para eliminar el ruido no deseado y reconstruir la imagen original de nuevas imágenes.
Para ilustrar esto, consideremos un ejemplo utilizando el conjunto de datos MNIST de dígitos de Keras. Este conjunto de datos consta de 60,000 imágenes en escala de grises de 28×28 píxeles (0-9) de dígitos escritos a mano para entrenamiento y otras 10,000 imágenes para pruebas. Podemos usar un autoencoder de eliminación de ruido para eliminar el ruido de estas imágenes.
Importar bibliotecas y conjunto de datos
Para comenzar, asegúrese de tener instaladas las bibliotecas requeridas y cargue el conjunto de datos.
# Instalar bibliotecas
!pip install tensorflow numpy matplotlib
# Cargar conjunto de datos
from tensorflow.keras.datasets import mnist
(x_train, _), (x_test, _) = mnist.load_data()
Preprocesar datos
# Añadir ruido a las imágenes
factor_de_ruido = 0.5
x_train_ruidoso = x_train + factor_de_ruido * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
x_test_ruidoso = x_test + factor_de_ruido * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape)
# Recortar las imágenes al rango de píxeles válido
x_train_ruidoso = np.clip(x_train_ruidoso, 0., 1.)
x_test_ruidoso = np.clip(x_test_ruidoso, 0., 1.)
# Normalizar los valores de los píxeles
x_train_ruidoso = x_train_ruidoso / 255.
x_test_ruidoso = x_test_ruidoso / 255.
Definir modelo
A continuación, puede proceder a definir el modelo del autoencoder de eliminación de ruido utilizando la API funcional de Keras.
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D
from tensorflow.keras.models import Model
# Definir la capa de entrada
capa_entrada = Input(shape=(28, 28, 1))
# Codificador
x = Conv2D(32, (3, 3), activation='relu', padding='same')(capa_entrada)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
codificado = MaxPooling2D((2, 2), padding='same')(x)
# Decodificador
x = Conv2D(32, (3, 3), activation='relu', padding='same')(codificado)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decodificado = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)
# Definir el modelo
autoencoder = Model(capa_entrada, decodificado)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
Entrenar modelo
Por último, puede entrenar el modelo y utilizarlo para eliminar el ruido de las imágenes.
# Entrenar el modelo
autoencoder.fit(x_train_ruidoso, x_train, epochs=10, batch_size=128,
validation_data=(x_test_ruidoso, x_test))
Eliminar ruido de imágenes
# Utilizando el modelo para eliminar el ruido de las imágenes
imágenes_desruidas = autoencoder.predict(x_test_noisy)
Para visualizar las imágenes originales, ruidosas y desruidas, puedes utilizar la biblioteca Matplotlib.
import matplotlib.pyplot as plt
# Mostrar la primera imagen del conjunto de prueba
plt.imshow(x_test[0], cmap='gray')
plt.show()
# Mostrar la primera imagen del conjunto de prueba con ruido
plt.imshow(x_test_noisy[0], cmap='gray')
plt.show()
# Mostrar la primera imagen del conjunto de prueba desruidas
plt.imshow(imágenes_desruidas[4].squeeze(), cmap='gray')
plt.show()
Resultado:
En el resultado proporcionado, las imágenes se organizan de la siguiente manera:
- La primera fila representa las imágenes de prueba originales.
- La segunda fila muestra las imágenes ruidosas correspondientes.
- La tercera fila muestra las imágenes limpias (reconstruidas).
Observa cómo las imágenes reconstruidas se asemejan de cerca a las originales.
Sin embargo, al observar más de cerca, puedes notar que la imagen actualizada se ve un poco borrosa. Hay varias razones posibles para esta confusión en la salida de la red decodificadora. Una de las razones es el uso de menos tiempo durante el período de estudio. Por lo tanto, tu tarea es aumentar el número de períodos y reevaluar la imagen resultante. Compara el aumento en el número de resultados obtenidos con el período anterior.
Conclusión
Los autoencoders de eliminación de ruido (DAEs) ofrecen varias ventajas sobre las técnicas tradicionales de reducción de ruido. Evitan eficazmente el problema de crear imágenes demasiado simplificadas y se calculan rápidamente. A diferencia de los métodos de filtrado tradicionales, los DAE utilizan un enfoque mejorado de autoencoder que implica insertar ruido en la entrada y reconstruir la salida a partir de la imagen dañada.
Esta modificación al enfoque estándar de autoencoder evita que el DAE copie la entrada en la salida. En su lugar, los DAE deben eliminar el ruido de la entrada antes de extraer información significativa.
En nuestro enfoque específico de DAE, hemos utilizado CNN debido a su eficacia para deducir y preservar las relaciones espaciales dentro de una imagen. Además, el uso de CNN ayuda a reducir las dimensiones y la complejidad computacional, lo que permite utilizar imágenes de tamaño arbitrario como entrada.
Puntos clave
- Los autoencoders de eliminación de ruido son un tipo de red neural diseñada para eliminar el ruido de las imágenes.
- Están compuestos por dos componentes principales: un codificador y un decodificador, que trabajan juntos para reconstruir una imagen limpia a partir de una entrada ruidosa.
- El proceso de entrenamiento implica agregar ruido a las imágenes y minimizar una función de pérdida de reconstrucción, con el objetivo de minimizar la discrepancia entre las imágenes originales y las reconstruidas.
- Los autoencoders de eliminación de ruido resultan valiosos para tareas de preprocesamiento de imágenes, eliminando eficazmente el ruido. Sin embargo, es importante tener en cuenta que pueden requerir mejoras adicionales para manejar patrones de ruido más complejos o diferentes tipos de datos.
Preguntas frecuentes
Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.