Convolutional Neural Network Tutorial

Ago 18, 2021
admin

L’intelligenza artificiale ha fatto molta strada e ha colmato senza soluzione di continuità il divario tra il potenziale degli umani e delle macchine. E gli appassionati di dati in tutto il mondo lavorano su numerosi aspetti dell’IA e trasformano le visioni in realtà – e una di queste aree sorprendenti è il dominio della Computer Vision. Questo campo ha lo scopo di abilitare e configurare le macchine per vedere il mondo come fanno gli umani, e usare la conoscenza per diversi compiti e processi (come il riconoscimento delle immagini, l’analisi e la classificazione delle immagini, e così via). E i progressi nella Computer Vision con il Deep Learning hanno avuto un notevole successo, in particolare con l’algoritmo Convolutional Neural Network.

In questo tutorial, imparerai a conoscere:

  • Introduzione alla CNN
  • Cos’è una rete neurale convoluzionale?
  • Come fanno le CNN a riconoscere le immagini?
  • Layers in CNN
  • Impiego di casi d’uso con CNN

Introduzione a CNN

Yann LeCun, direttore del gruppo di ricerca AI di Facebook, è il pioniere delle reti neurali convoluzionali. Ha costruito la prima rete neurale convoluzionale chiamata LeNet nel 1988. LeNet è stata utilizzata per compiti di riconoscimento dei caratteri come la lettura di codici postali e cifre.

Vi siete mai chiesti come funziona il riconoscimento facciale sui social media, o come il rilevamento degli oggetti aiuta nella costruzione di auto a guida autonoma, o come il rilevamento delle malattie viene fatto utilizzando immagini visive nella sanità? È tutto possibile grazie alle reti neurali convoluzionali (CNN). Ecco un esempio di reti neurali convoluzionali che illustra come funzionano:

Immaginate che ci sia un’immagine di un uccello, e volete identificare se è davvero un uccello o qualche altro oggetto. La prima cosa da fare è fornire i pixel dell’immagine sotto forma di matrici allo strato di input della rete neurale (reti multistrato usate per classificare le cose). Gli strati nascosti eseguono l’estrazione delle caratteristiche eseguendo diversi calcoli e manipolazioni. Ci sono più strati nascosti come lo strato di convoluzione, lo strato ReLU e lo strato di pooling, che eseguono l’estrazione delle caratteristiche dall’immagine. Infine, c’è uno strato completamente connesso che identifica l’oggetto nell’immagine.

Rete Neurale Convoluzionale per identificare l'immagine di un uccello

Fig: Rete Neurale Convoluzionale per identificare l’immagine di un uccello

Corso di Deep Learning (con TensorFlow & Keras)

Padroneggiare i concetti di Deep Learning e il Corso ModelsView

Corso di Deep Learning (con TensorFlow Keras)

Cosa è la Rete Neurale Convoluzionale?

Una rete neurale convoluzionale è una rete neurale feed-forward che viene generalmente utilizzata per analizzare le immagini visive elaborando i dati con topologia a griglia. È anche conosciuta come ConvNet. Una rete neurale convoluzionale è usata per rilevare e classificare gli oggetti in un’immagine.

Di seguito una rete neurale che identifica due tipi di fiori: Orchidea e Rosa.

Nella CNN, ogni immagine è rappresentata sotto forma di un array di valori di pixel.

L’operazione di convoluzione costituisce la base di qualsiasi rete neurale convoluzionale. Comprendiamo l’operazione di convoluzione usando due matrici, a e b, di 1 dimensione.

a =

b =

Nell’operazione di convoluzione, le matrici sono moltiplicate per elementi, e il prodotto è sommato per creare una nuova matrice, che rappresenta a*b.

I primi tre elementi della matrice a sono moltiplicati con gli elementi della matrice b. Il prodotto viene sommato per ottenere il risultato.

I tre elementi successivi della matrice a vengono moltiplicati per gli elementi della matrice b, e il prodotto viene sommato.

Questo processo continua finché l’operazione di convoluzione è completa.

Come fa la CNN a riconoscere le immagini?

Considera le seguenti immagini:

Le caselle che sono colorate rappresentano un valore di pixel di 1, e 0 se non colorate.

Quando si preme backslash (\), l’immagine sottostante viene elaborata.

Quando si preme forward-slash (/), l’immagine sottostante viene elaborata:

Ecco un altro esempio di come la CNN riconosce un’immagine:

Come si può vedere dal diagramma precedente, si accendono solo i valori che hanno valore 1.

Strati in una rete neurale di convoluzione

Una rete neurale di convoluzione ha più strati nascosti che aiutano ad estrarre informazioni da un’immagine. I quattro strati importanti in CNN sono:

  1. Strato di convoluzione
  2. Strato di ReLU
  3. Strato di Pooling
  4. Strato completamente connesso

Strato di convoluzione

Questo è il primo passo nel processo di estrazione delle caratteristiche di valore da un’immagine. Uno strato di convoluzione ha diversi filtri che eseguono l’operazione di convoluzione. Ogni immagine è considerata come una matrice di valori di pixel.

Considera la seguente immagine 5×5 i cui valori di pixel sono 0 o 1. C’è anche una matrice di filtro con una dimensione di 3×3. Fai scorrere la matrice filtro sull’immagine e calcola il prodotto dei punti per ottenere la matrice delle caratteristiche convoluta.

Strato ReLU

ReLU sta per unità lineare rettificata. Una volta estratte le mappe delle caratteristiche, il passo successivo è quello di spostarle in un livello ReLU.

ReLU esegue un’operazione elementare e imposta tutti i pixel negativi a 0. Introduce la non linearità nella rete, e l’output generato è una feature map rettificata. Di seguito è riportato il grafico di una funzione ReLU:

L’immagine originale viene scansionata con convoluzioni multiple e strati ReLU per localizzare le caratteristiche.

Pooling Layer

Pooling è un’operazione di down-sampling che riduce la dimensionalità della feature map. La feature map rettificata passa ora attraverso un pooling layer per generare una pooled feature map.

Il pooling layer usa vari filtri per identificare diverse parti dell’immagine come bordi, angoli, corpo, piume, occhi e becco.

Ecco come appare finora la struttura della rete neurale di convoluzione:

Il prossimo passo del processo è chiamato flattening. L’appiattimento è usato per convertire tutte le matrici bidimensionali risultanti dalle mappe di caratteristiche raggruppate in un singolo vettore lineare lungo e continuo.

La matrice appiattita è data in input allo strato completamente connesso per classificare l’immagine.

Ecco come esattamente la CNN riconosce un uccello:

  • I pixel dell’immagine sono dati in pasto allo strato di convoluzione che esegue l’operazione di convoluzione
  • Il risultato è una mappa convoluta
  • La mappa convolta è applicata ad una funzione ReLU per generare una mappa di caratteristiche rettificata
  • L’immagine è elaborata con più convoluzioni e strati ReLU per localizzare le caratteristiche
  • Diversi strati di raggruppamento con vari filtri sono usati per identificare parti specifiche dell’immagine
  • La mappa delle caratteristiche raggruppate viene appiattita e alimentata ad uno strato completamente connesso per ottenere l’output finale

Corso GRATUITO di Machine Learning

Impara le abilità didomanda Competenze e strumenti di apprendimento automaticoInizia a imparare

Corso GRATUITO di apprendimento automatico

Implementazione di casi d’uso usando CNN

Utilizzeremo il dataset CIFAR-10 del Canadian Institute For Advanced Research per classificare le immagini in 10 categorie usando CNN.

1. Scaricare il set di dati:

2. Importare il set di dati CIFAR:

3. Leggere i nomi delle etichette:

4. Visualizzare le immagini usando matplotlib:

5. Utilizzare la funzione helper per gestire i dati:

6. Creare il modello:

7. Applicare le funzioni helper:

8. Creare i livelli per la convoluzione e il pooling:

9. Creare lo strato appiattito rimodellando lo strato di pooling:

10. Creare uno strato completamente connesso:

11. Impostare l’uscita sulla variabile y_pred:

12. Applicare la funzione di perdita:

13. Creare l’ottimizzatore:

14. Creare una variabile per inizializzare tutte le variabili globali:

15. Esegui il modello creando una sessione del grafico:

Costruisci modelli di deep learning in TensorFlow e impara il framework open-source TensorFlow con il corso Deep Learning (con Keras &TensorFlow). Iscriviti ora!

Impara di più su CNN e Deep Learning

Ecco come costruire una CNN con più strati nascosti e come identificare un uccello usando i suoi valori di pixel. Hai anche completato una demo per classificare le immagini in 10 categorie usando il dataset CIFAR.

Puoi anche iscriverti al Post Graduate Program in AI e Machine Learning con la Purdue University e in collaborazione con IBM, e trasformarti in un esperto di tecniche di deep learning utilizzando TensorFlow, la libreria software open-source progettata per condurre ricerche sull’apprendimento automatico e sulle reti neurali profonde. Questo programma in AI e Machine Learning copre Python, Machine Learning, Natural Language Processing, Speech Recognition, Advanced Deep Learning, Computer Vision e Reinforcement Learning. Vi preparerà per una delle frontiere tecnologiche più eccitanti del mondo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.