Una rete neurale convoluzionale (CNN o ConvNet) è un’architettura di rete per il Deep Learning che apprende direttamente dai dati.
Le CNN sono particolarmente utili per trovare dei pattern nelle immagini in modo tale da riconoscere oggetti, classi e categorie. Sono anche abbastanza efficaci nella classificazione di dati audio, segnali e serie storiche.
Come funzionano le CNN
Una rete neurale convoluzionale può avere decine o centinaia di layer, ciascuno dei quali impara a rilevare feature diverse di un’immagine. A ciascuna immagine di addestramento vengono applicati dei filtri a diverse risoluzioni e l’output di ogni immagine convoluta viene utilizzato come input per il layer successivo. I filtri possono iniziare con feature molto semplici, ad esempio la luminosità o i bordi, e diventare sempre più complessi fino a includere feature che definiscono in modo univoco l’oggetto.
Muovi i primi passi con degli esempi
Apprendimento delle feature, layer e classificazione
Una CNN è costituita da un layer di input, un layer di output e da molti layer nascosti nel mezzo.
Questi layer eseguono operazioni che alterano i dati al fine di apprendere le feature specifiche dei dati stessi. Tre dei layer più diffusi sono la convoluzione, l’attivazione o ReLU e il pooling.
- La convoluzione sottopone le immagini di input a una serie di filtri convoluzionali, ciascuno dei quali attiva determinate feature nelle immagini.
- L’unità lineare rettificata (ReLU) consente di procedere a un addestramento più rapido ed efficace mappando i valori negativi a zero e mantenendo quelli positivi. Questa operazione è talvolta definita attivazione, dal momento che solo le feature attivate vengono trasmesse al layer successivo.
- Il pooling semplifica l’output mediante l’esecuzione di un downsampling non lineare, riducendo in tal modo il numero di parametri che la rete deve apprendere.
Queste operazioni vengono reiterate su decine o centinaia di layer e ciascun layer impara a identificare feature diverse.
Bias e pesi condivisi
A differenza di una rete neurale tradizionale, una CNN possiede pesi e bias condivisi, uguali per tutti i neuroni nascosti in un determinato layer.
Ciò significa che tutti i neuroni nascosti rilevano la stessa feature, come un bordo o una macchia, in aree diverse dell’immagine. Ciò rende la rete tollerante alla traslazione di oggetti in un’immagine. Ad esempio, una rete addestrata a riconoscere automobili sarà in grado di farlo indipendentemente dalla posizione occupata dall’automobile nell’immagine.
Layer di classificazione
Dopo aver appreso le feature in più layer, l’architettura di una CNN passa alla classificazione.
Il penultimo layer è un layer completamente connesso che genera un vettore di dimensioni K (dove K è il numero di classi prevedibili) e che contiene le probabilità per ciascuna classe di qualsiasi immagine classificata.
L’ultimo layer dell’architettura della CNN utilizza un layer di classificazione per fornire l’output della classificazione finale.
Imaging medico: le CNN sono in grado di analizzare migliaia di esami istologici per rilevare visivamente l’eventuale presenza di cellule tumorali nelle immagini.
Elaborazione audio: il rilevamento di parole chiave può essere utilizzato in qualsiasi dispositivo dotato di microfono al fine di rilevare quando viene pronunciata una certa parola o frase (“Ehi Siri!”). Le CNN sono in grado di apprendere e rilevare con precisione le parole chiave tralasciando tutto il resto, indipendentemente dall’ambiente.
Rilevamento oggetti: la guida autonoma sfrutta le CNN per rilevare con precisione la presenza di un segnale o di altri oggetti e prendere decisioni in base all’output.
Generazione di dati sintetici: mediante l’utilizzo di reti generative avversarie (GAN) è possibile produrre nuove immagini da utilizzare in applicazioni di Deep Learning, tra cui il riconoscimento facciale e la guida autonoma.
Quando si dovrebbero usare le CNN?
Le CNN risultano particolarmente adatte quando si hanno grandi quantità di dati complessi (come i dati immagine). In più, le CNN possono essere utilizzate con i segnali e le serie storiche pre-elaborati/e per funzionare con la struttura della rete.
Ecco alcuni esempi per lavorare con segnali e CNN:
Uso di modelli pre-addestrati
Quando lavorano con le CNN, scienziati e ingegneri preferiscono partire da un modello pre-addestrato da utilizzare per apprendere e identificare le feature da un nuovo set di dati.
Modelli quali GoogLeNet, AlexNet e Inception offrono un punto di partenza per esplorare il Deep Learning, sfruttando architetture comprovate e realizzate da esperti.
Nuovi modelli ed esempi di Deep Learning
Consulta l’elenco di tutti i modelli disponibili e scopri quelli nuovi suddivisi per categoria.
Le CNN con MATLAB
Utilizzando MATLAB® con Deep Learning Toolbox™ è possibile progettare, addestrare e distribuire CNN.
Progettazione e addestramento di reti
Con Deep Network Designer è possibile importare modelli pre-addestrati o costruirne di nuovi partendo da zero.
È inoltre possibile addestrare le reti direttamente nell’app e monitorarne l’addestramento attraverso grafici di precisione, perdita e metriche di convalida.
Uso dei modelli pre-addestrati per il Transfer Learning
L’ottimizzazione di una rete pre-addestrata mediante Transfer Learning è in genere una soluzione molto più rapida e semplice rispetto all’addestramento da zero. La quantità di dati e le risorse computazionali richieste sono minime. Il Transfer Learning utilizza le conoscenze derivanti da un tipo di problema per risolvere problemi simili. Si inizia con una rete pre-addestrata, che viene utilizzata per apprendere una nuova attività. Un vantaggio del Transfer Learning è che la rete pre-addestrata ha già appreso un ampio set di feature. Ad esempio, è possibile prendere una rete addestrata su milioni di immagini e riaddestrarla per una nuova classificazione di oggetti utilizzando solo centinaia di immagini.
Accelerazione hardware con le GPU
Una rete neurale convoluzionale è addestrata su centinaia, migliaia o addirittura milioni di immagini. Quando si lavora con grandi quantità di dati e con architetture di rete complesse, le GPU possono accelerare notevolmente il tempo di elaborazione necessario per addestrare un modello.
MATLAB per il Deep Learning
Ulteriori informazioni sul supporto MATLAB per il Deep Learning.
Tutorial ed esempi
Familiarizza con MATLAB per il Machine Learning.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)