Una Breve Guida per Convolutional Neural Network(CNN)

INTRODUZIONE:

Manan Parekh
Manan Parekh

Seguire

il 16 Luglio, 2019 · 5 min a leggere

Convolutional Neural Network(CNN o ConvNet)è una classe di profonda reti neurali, che è in gran parte utilizzato per fare immagine, riconoscimento, classificazione di immagine, rilevamento di oggetti, etc.

I progressi nella visione artificiale con l’apprendimento profondo sono stati costruiti e perfezionati con il tempo, principalmente su un particolare algoritmo — una rete neurale convoluzionale.

Google utilizza per la ricerca di foto, Facebook per il loro tagging automatico algoritmi di Amazon per le loro raccomandazioni di prodotto, e la lista va avanti e avanti…

Con l’aiuto della CNN, si può fare un sacco di cose interessanti, come, L’ho fatto a mano in cifre riconoscimento modello che predice la cifra dell’immagine con 98.precisione dell ‘ 82%.

Bonus:

codice -> https://github.com/UPPERCASEGUY/CNN-implementation

Puoi anche creare i tuoi modelli fantastici con un piccolo aiuto nei concetti relativi alla CNN. Questo blog inizierà a costruire i tuoi concetti su CNNs e sei a posto!

RETI NEURALI CONVOLUZIONALI:

La classificazione delle immagini è il compito di prendere un’immagine di input e di emettere una classe o una probabilità di classi che meglio descrive l’immagine. In CNN, prendiamo un’immagine come input, assegniamo importanza ai suoi vari aspetti / caratteristiche nell’immagine ed essere in grado di differenziare l’uno dall’altro. La pre-elaborazione richiesta in CNN è molto minore rispetto ad altri algoritmi di classificazione.

Un classico della CNN classificare tra un cane e un gatto

ARCHITETTURA:

la matrice di rappresentazione di una foto.

I computer non possono vedere le cose come facciamo noi, per i computer l’immagine non è altro che una matrice.

Una CNN ha tipicamente tre livelli: uno strato convoluzionale, uno strato di pooling e uno strato completamente connesso.

Diversi strati in una CNN

Convolutional livello:

sono abbastanza sicuro che avete incontrato la parola “convoluzione” nella tua vita, prima e qui è il significato non cambia. Sì! hai ragione, questo livello è tutto su oggetti convolvendo l’uno sull’altro. Lo strato di convoluzione è il nucleo fondamentale della CNN. Trasporta la parte principale del carico computazionale della rete.

L’obiettivo principale della convoluzione è estrarre caratteristiche come bordi, colori, angoli dall’input. Mentre andiamo più in profondità all’interno della rete, la rete inizia a identificare caratteristiche più complesse come forme,cifre, parti del viso pure.

Avvitandosi 5x5x1 immagine con un 3x3x1 kernel, per ottenere un 3x3x1 convoluzione funzione

Questo strato esegue un dot prodotto tra due matrici una matrice(noto come filtro/kernel)è l’insieme di learnable parametri, e l’altra matrice è ristretta porzione dell’immagine.

Se l’immagine è RGB, il filtro avrà un’altezza e una larghezza inferiori rispetto all’immagine, ma avrà la stessa profondità(altezza x larghezza x 3) dell’immagine.

Per le immagini RGB, la convoluzione parte può essere visualizzata come segue:

Convoluzione operazione su un MxNx3 matrice dell’immagine con un 3x3x3 Kernel

Alla fine del processo di convoluzione, abbiamo una vetrina matrice che ha meno parametri(dimensioni) rispetto all’immagine reale così come più chiare caratteristiche di quello attuale. Quindi, ora lavoreremo con la nostra matrice in primo piano d’ora in poi.

Strato di pooling:

Questo livello serve esclusivamente a diminuire la potenza computazionale necessaria per elaborare i dati. È fatto diminuendo ancora di più le dimensioni della matrice in primo piano. In questo livello, cerchiamo di estrarre le caratteristiche dominanti da una quantità limitata di quartiere. Cerchiamo di chiarire facendo un esempio.

pooling layer

La matrice arancione è la nostra matrice in primo piano, quella marrone è un kernel di pooling e otteniamo la nostra matrice blu come output dopo il pooling. Quindi, qui quello che stiamo facendo è prendere il massimo tra tutti i numeri che si trovano nella regione di pooling e spostare la regione di pooling ogni volta per elaborare un altro quartiere della matrice.

Esistono due tipi di tecniche di pooling: MEDIA-pooling e MAX – pooling.

La differenza tra questi due è, nel pooling MEDIO, prendiamo la media di tutti i valori della regione di pooling e nel pooling MASSIMO, prendiamo solo il massimo tra tutti i valori che si trovano all’interno della regione di pooling.

Quindi, dopo aver messo in comune il livello, abbiamo una matrice contenente le caratteristiche principali dell’immagine e questa matrice ha dimensioni ancora minori, il che aiuterà molto nel passaggio successivo.

Livello completamente connesso:

Fino ad ora non abbiamo fatto nulla per classificare immagini diverse, quello che abbiamo fatto è evidenziato alcune caratteristiche in un’immagine e riduce drasticamente le dimensioni dell’immagine.

Strato completamente collegato all’interno CNN

Da qui in poi, stiamo effettivamente andando a fare il processo di classificazione.

Ora che abbiamo convertito la nostra immagine di input in una forma adatta per la nostra architettura multi-livello completamente connessa, appiattiremo l’immagine in un vettore di colonna. L’output appiattito viene alimentato a una rete neurale feed-forward e backpropagation applicata a ogni iterazione dell’allenamento. Nel corso di una serie di epoche, il modello può distinguere tra dominanti e alcune caratteristiche di basso livello nelle immagini e classificarle.

SOMMARIO:

  1. Fornire l’immagine di ingresso nel livello di convoluzione.
  2. Prendi la convoluzione con kernel/filtri in primo piano.
  3. Applica il livello di pooling per ridurre le dimensioni.
  4. Aggiungi questi livelli più volte.
  5. Appiattire l’uscita e alimentare in uno strato completamente collegato.
  6. Ora allena il modello con backpropagation usando la regressione logistica.

E hai creato la tua rete neurale convoluzionale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.