Blog.

VGG-16 CNN Networks | Deep Learning Engineer Italia


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
AI, machine-learning

vgg-16-deep-learning-machine-learning-backpropagation-forwardpass-architectrure-italia-google-colab

VGG-16 è un’architettura di rete neurale progettata da Visual Geometry Group, il dipartimento di scienze ingegneristiche dell’Università di Oxford, con 13 convolutional layers e 3 fully connected layers per task di classification e detection (classificazione e identificazione)

Sempre presente poi la ReLU ereditata da AlexNet.

Dunque, dopo aver studiato la struttura della LeNet-5 e l’AlexNet vediamo ora quella della VGG-16 nel nostro percorso sulle CNN Network.

Un Deep Learning Engineer mastica backpropagation e cost function a colazione, progettando CNN Networks a colpo d’occhio.

Questa frase, ormai un mantra, ci introduce alla scoperta delle meraviglie nascoste di questi sistemi.

Procediamo.

VGG-16 CNN Network

L’immagine d’input ha dimensioni 224x224x3, permettendoci anche in questo caso di processare immagini a colori (tre canali, RGB).

Come avrai modo di notare a breve, tra le particolarità di questa architettura troviamo l’impiego di filtri convoluzionali (ricettivi) molto piccoli. (small receptive field)

Dimensione? 3×3, la minore per catturare la nozione di destra / sinistra, sopra/sotto centro.

Ce ne sono anche altri da 2×2, e addirittura 1×1 che può essere visto come trasformazione lineare dei canali d’input, a cui è associata una non-linear transformation.

Padding e stride sono tarati in modo tale che la risoluzione spaziale rimanga costante dopo l’applicazione del filtro.

Come fatto per le architetture passate, ti esorto anche questa volta ad accostare l’immagine sottostante alla descrizione testuale della struttura, in modo che possa fungere da commento e aiutarti nella comprensione.

Primo Stack

Iniziamo.

Applichiamo 64 kernels, filtri convoluzionali bidimensionali di 3×3 con stride 1 e padding 1.

All’output di 224x224x64 applichiamo poi un altro filtro convoluzionale bidimensionale identico al precedente.

L’output, dimensionalmente inalterato, subisce una trasformazione con la sovrapposizione di un max pooling layer bidimensionale che produce un volume finale per il primo layer della VGG-16 di 112x112x64.

Secondo Stack

Il numero di kernel raddoppia: 128 filtri convoluzionali bidimensionali, sempre da 3×3 producono un volume iniziale di 112x112x128, a cui applichiamo un altro filtro convoluzionale e infine un max pooling layer che produce un output finale di 56x56x128.

Terzo Stack

Preleviamo l’input del layer precedente applicando 256 kernel di dimensioni 3×3, bidimensionali.

Lo facciamo 3 volte.

Al risultato, sovrapponiamo un max pooling layer per ottenere un output di 14x14x256 che finisce dritto al quarto layer.

Quarto Stack

Per 3 volte in successione, 512 kernels 3×3 manipolano i dati e in seguito all’applicazione di un max pooling otteniamo un volume finale di 14x14x512.

Quinto Stack

Simile al quarto: 3 layer convoluzionali e 1 di max pooling, che produce un output di 7x7x512.

Sesto Stack

Inizia la rete neurale profonda.

Un primo layer appiattisce il volume di 7x7x512 attraverso 25088 neuroni fully connected a un dense layer di 4096 neuroni a loro volta connessi a un dropout layer di altrettanti neuron.

Settimo Stack

Primo dense layer di 4096 neuroni e secondo dropout layer di altrettanti neuroni.

Ottavo Stack

Completa l’architettura l’output layer tipo dense con 1000 neuroni, tante le classi da prevedere.

VGG Neural Networks

Le reti VGG sono state utili nella definizione di nuove loss function quali il perpertual loss e il texture loss.

Infine, è stata progettata una variante più profonda della VGG-16: la VGG-19.

Qui la pubblicazione ufficiale della VGG-16

Le domande frequenti sulle reti VGG

Ho raccolto per te alcune domande frequenti sulle reti neurali VGG: le risposte sono utili per fissare i concetti e chiarire eventuali dubbi.

Per il momento è tutto.

Per aspera, ad astra.

Un caldo abbraccio, Andrea

Taggeddeep learningmachine learningneural network


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum