Svelando gli Autoencoder di Denoising

Unveiling Denoising Autoencoders.

Introduzione

I Denoising Autoencoders sono modelli di reti neurali che rimuovono il rumore dai dati corrotti o rumorosi imparando a ricostruire i dati iniziali dalla loro controparte rumorosa. Alleniamo il modello per minimizzare la discrepanza tra i dati originali e quelli ricostruiti. Possiamo impilare questi autoencoder insieme per formare reti profonde, aumentando le loro prestazioni.

Inoltre, si può adattare questa architettura per gestire una varietà di formati di dati, inclusi immagini, audio e testo. Inoltre, è possibile personalizzare il rumore, come l’inclusione di rumore salino e pepe o rumore gaussiano. Poiché il DAE ricostruisce l’immagine, impara efficacemente le caratteristiche di input, portando a un’estrazione migliorata delle rappresentazioni latenti. È importante sottolineare che il Denoising Autoencoder riduce la probabilità di apprendere la funzione di identità rispetto a un autoencoder normale.

Obiettivi di Apprendimento

  • Una panoramica degli automatici codificatori di denoising (DAE) e del loro utilizzo nel ottenere una rappresentazione a bassa dimensione ricostruendo i dati originali dai tipi rumorosi.
  • Copriremo anche gli aspetti dell’architettura DAE, compresi i componenti dell’encoder e del decoder.
  • Esaminare le loro prestazioni può fornire una visione del loro ruolo nella ricostruzione dei dati originali dai loro corrispondenti rumorosi.
  • Inoltre, considereremo varie applicazioni di DAE come denoising, compressione, estrazione di caratteristiche e apprendimento di rappresentazioni. Come esempio illustrativo, ci concentreremo sull’implementazione di DAE per il denoising delle immagini utilizzando il dataset Keras.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cos’è un Denoising Autoencoder?

I Denoising Autoencoder sono un tipo specifico di rete neurale che consente l’apprendimento non supervisionato di rappresentazioni o codifiche dei dati. Il loro obiettivo principale è ricostruire la versione originale del segnale di input corrotto dal rumore. Questa capacità si rivela utile in problemi come il riconoscimento delle immagini o il rilevamento delle frodi, dove l’obiettivo è recuperare il segnale originale dalla sua forma rumorosa.

Un autoencoder è composto da due componenti principali:

  • Encoder: Questa componente mappa i dati di input in una rappresentazione o codifica a bassa dimensione.
  • Decoder: Questa componente restituisce la codifica allo spazio dei dati originali.

Durante la fase di allenamento, si presenta all’autoencoder un insieme di esempi di input puliti insieme alle loro versioni rumorose corrispondenti. L’obiettivo è imparare un compito utilizzando un’architettura encoder-decoder che trasforma in modo efficiente l’input rumoroso in un’output pulito.

Architettura del DAE

L’architettura del denoising autoencoder (DAE) è simile a un autoencoder standard. È composto da due componenti principali:

Encoder

  • L’encoder crea una rete neurale dotata di uno o più livelli nascosti.
  • Il suo scopo è ricevere dati di input rumorosi e generare una codifica, che rappresenta una rappresentazione a bassa dimensione dei dati.
  • Si può pensare all’encoder come una funzione di compressione perché la codifica ha meno parametri rispetto ai dati di input.

Decoder

  • Il decoder agisce come una funzione di espansione, responsabile della ricostruzione dei dati originali dalla codifica compressa.
  • Prende in input la codifica generata dall’encoder e ricostruisce i dati originali.
  • Come gli encoder, i decoder sono implementati come reti neurali con uno o più livelli nascosti.

Durante la fase di allenamento, si presenta al denoising autoencoder (DAE) una collezione di esempi di input puliti insieme alle loro controparti rumorose corrispondenti. L’obiettivo è acquisire una funzione che mappa un input rumoroso in un’output relativamente pulito utilizzando un’architettura encoder-decoder. Per raggiungere questo obiettivo, di solito si utilizza una funzione di perdita di ricostruzione per valutare la discrepanza tra l’input pulito e l’output ricostruito. Un DAE viene allenato minimizzando questa perdita attraverso l’uso della retropropagazione, che comporta l’aggiornamento dei pesi sia dei componenti dell’encoder che del decoder.

Le applicazioni dei Denoising Autoencoders (DAE) spaziano in una varietà di domini, inclusa la visione artificiale, l’elaborazione del linguaggio naturale e il riconoscimento del parlato.

Esempi

  • Image Denoising: I DAE sono efficaci nel rimuovere il rumore dalle immagini, come il rumore gaussiano o il rumore sale e pepe.
  • Rilevazione delle frodi: I DAE possono contribuire a identificare transazioni fraudolente apprendendo a ricostruire transazioni comuni dai loro controparti rumorose.
  • Imputazione dei dati: Per ricostruire valori mancanti dai dati disponibili mediante apprendimento, i DAE possono facilitare l’imputazione dei dati in set di dati con informazioni incomplete.
  • Compressione dei dati: I DAE possono comprimere i dati ottenendo una rappresentazione concisa dei dati nello spazio di codifica.
  • Rilevamento delle anomalie: Utilizzando i DAE, è possibile rilevare anomalie in un set di dati addestrando un modello a ricostruire dati normali e quindi segnalare input problematici come potenzialmente anomali.

Denoising Autoencoder per la rimozione del rumore dalle immagini

Gli autoencoder per la rimozione del rumore (DAE) offrono una potente soluzione per ricostruire i dati originali dalla loro versione rumorosa. In particolare, quando si tratta di rimozione del rumore dalle immagini, il DAE può essere estremamente efficace. Fornendo un’immagine rumorosa in input, il DAE crea una versione ricostruita dell’immagine originale. Il processo di addestramento prevede la minimizzazione della discrepanza tra le immagini originali e ricostruite. Una volta completato l’addestramento del DAE, può essere utilizzato per denoise nuove immagini rimuovendo il rumore indesiderato e ricostruendo l’immagine originale.

Per illustrare ciò, consideriamo un esempio utilizzando il dataset MNIST di cifre scritte a mano in Keras. Questo dataset è composto da 60.000 immagini in scala di grigi (0-9) di dimensioni 28×28 per l’addestramento e altre 10.000 immagini per il test. Possiamo utilizzare un autoencoder per la rimozione del rumore per denoise queste immagini.

Importazione delle librerie e del dataset

Per iniziare, assicurati di avere le librerie richieste installate e carica il dataset.

# Installazione delle librerie
!pip install tensorflow numpy matplotlib

# Caricamento del dataset
from tensorflow.keras.datasets import mnist
(x_train, _), (x_test, _) = mnist.load_data()

Preelaborazione dei dati

# Aggiunta di rumore alle immagini
noise_factor = 0.5
x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape)

# Clip delle immagini all'intervallo di pixel valido
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
x_test_noisy = np.clip(x_test_noisy, 0., 1.)

# Normalizzazione dei valori dei pixel
x_train_noisy = x_train_noisy / 255.
x_test_noisy = x_test_noisy / 255.

Definizione del modello

Successivamente, è possibile procedere alla definizione del modello di autoencoder per la rimozione del rumore utilizzando l’API funzionale di Keras.

from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D
from tensorflow.keras.models import Model

# Definizione del layer di input
input_layer = Input(shape=(28, 28, 1))

# Encoder
x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_layer)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)

# Decoder
x = Conv2D(32, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

# Definizione del modello
autoencoder = Model(input_layer, decoded)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

Addestramento del modello

Infine, è possibile addestrare il modello e utilizzarlo per denoise le immagini.

# Addestramento del modello
autoencoder.fit(x_train_noisy, x_train, epochs=10, batch_size=128,
validation_data=(x_test_noisy, x_test))

Denoise Immagini

# Utilizzo del modello per denoizzare le immagini
immagini_denoizzate = autoencoder.predict(x_test_noisy)

Per visualizzare le immagini originali, rumorose e denoizzate, puoi utilizzare la libreria Matplotlib.

import matplotlib.pyplot as plt

# Visualizza la prima immagine nel set di test
plt.imshow(x_test[0], cmap='gray')
plt.show()

# Visualizza la prima immagine nel set di test rumoroso
plt.imshow(x_test_noisy[0], cmap='gray')
plt.show()

# Visualizza la prima immagine nel set di test denoizzato
plt.imshow(immagini_denoizzate[4].squeeze(), cmap='gray')
plt.show()

Output:

Nell’output fornito, le immagini sono organizzate come segue:

  • La prima riga rappresenta le immagini di test originali.
  • La seconda riga mostra le immagini rumorose corrispondenti.
  • La terza riga mostra le immagini pulite (ricostruite).

Notare come le immagini ricostruite assomiglino molto alle originali.

Tuttavia, osservando più da vicino, potresti notare che l’immagine aggiornata appare un po’ sfocata. Ci sono diverse possibili ragioni per questa confusione nell’output della rete decoder. Uno dei motivi è l’uso di meno tempo durante il periodo di studio. Pertanto, il tuo compito è aumentare il numero di periodi e rivalutare l’immagine risultante. Confronta l’aumento dei risultati ottenuti con il periodo precedente.

Conclusioni

I denoising autoencoder (DAE) offrono diversi vantaggi rispetto alle tradizionali tecniche di riduzione del rumore. Evitano efficacemente il problema di creare immagini troppo semplificate e calcolano rapidamente. A differenza dei metodi di filtraggio tradizionali, i DAE utilizzano un approccio di autoencoder migliorato che prevede l’inserimento di rumore nell’input e la ricostruzione dell’output dall’immagine corrotta.

Questa modifica all’approccio standard degli autoencoder impedisce ai DAE di copiare l’input nell’output. Invece, i DAE devono rimuovere il rumore dall’input prima di estrarre informazioni significative.

Nel nostro specifico approccio DAE, abbiamo utilizzato le CNN per la loro efficacia nel dedurre e preservare le relazioni spaziali all’interno di un’immagine. Inoltre, l’utilizzo delle CNN aiuta a ridurre le dimensioni e la complessità computazionale, rendendo possibile l’utilizzo di immagini di dimensioni arbitrarie come input.

Punti Chiave

  • I denoising autoencoder sono un tipo di rete neurale progettata per eliminare il rumore dalle immagini.
  • Comprendono due componenti principali: un encoder e un decoder, che lavorano insieme per ricostruire un’immagine pulita da un input rumoroso.
  • Il processo di addestramento prevede l’aggiunta di rumore alle immagini e la minimizzazione di una funzione di perdita di ricostruzione, al fine di ridurre al minimo la discrepanza tra le immagini originali e ricostruite.
  • I denoising autoencoder sono preziosi per le attività di pre-elaborazione delle immagini, eliminando efficacemente il rumore. Tuttavia, è importante notare che potrebbero richiedere ulteriori miglioramenti per gestire pattern di rumore più complessi o diversi tipi di dati.

Domande Frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.