Reti neurali convoluzionali (CNN): un’introduzione

Le reti neurali convoluzionali offrono un modo più scalabile per il riconoscimento di oggetti e le attività di classificazione delle immagini.

Ci sono molti progressi che stanno accadendo nel mondo della tecnologia. L’intelligenza artificiale e l’apprendimento automatico sono alcuni di quelli comuni che potresti sentire frequentemente.

Attualmente, queste tecnologie sono utilizzate in quasi tutti i campi, dal marketing, all’eCommerce e allo sviluppo di software fino al settore bancario, finanziario e medico.

AI e ML sono campi vasti e si stanno compiendo sforzi per ampliare le loro applicazioni per risolvere molti problemi del mondo reale. Questo è il motivo per cui potresti vedere molti rami all’interno di queste tecnologie; ML è un sottoinsieme dell’IA stessa.

Le reti neurali convoluzionali sono uno dei rami dell’IA che stanno diventando popolari in questi giorni.

In questo articolo, discuterò cosa sono le CNN, come funzionano e la loro utilità nel mondo moderno.

Entriamo subito!

Che cos’è una rete neurale convoluzionale?

Una rete neurale convoluzionale (ConvNet o CNN) è una rete neurale artificiale (ANN) che utilizza algoritmi di deep learning per analizzare immagini, classificare elementi visivi ed eseguire attività di visione artificiale.

La CNN sfrutta i principi dell’algebra lineare, come la moltiplicazione di matrici, per rilevare i modelli in un’immagine. Poiché questi processi implicano calcoli complessi, richiedono unità di elaborazione grafica (GPU) per l’addestramento dei modelli.

In parole semplici, la CNN utilizza algoritmi di Deep Learning per acquisire dati di input come immagini e assegnare importanza sotto forma di pregiudizi e pesi apprendibili a diversi aspetti di quell’immagine. In questo modo, la CNN può differenziare le immagini o classificarle.

CNN: una breve storia

Poiché una rete neurale convoluzionale è una rete neurale artificiale, è importante reiterare le reti neurali.

Nel calcolo, una rete neurale fa parte del machine learning (ML) che utilizza algoritmi di deep learning. È analogo ai modelli di connettività seguiti dai neuroni nel cervello umano. Anche le reti neurali artificiali traggono ispirazione da come è organizzata la corteccia visiva.

Quindi, diversi tipi di reti neurali o reti neurali artificiali (ANN) vengono utilizzati per scopi diversi. Uno di questi è la CNN utilizzata per il rilevamento e la classificazione delle immagini e altro ancora. È stato introdotto da un ricercatore post-dottorato, Yann LeCun, negli anni ’80.

La prima versione della CNN – LeNet, dal nome di LeCun, era in grado di riconoscere le cifre scritte a mano. Quindi, è stato utilizzato nei servizi bancari e postali per leggere le cifre sugli assegni e i codici postali scritti sulle buste.

Tuttavia, questa prima versione mancava di ridimensionamento; quindi, le CNN non sono state utilizzate molto nell’intelligenza artificiale e nella visione artificiale. Inoltre, richiedeva risorse di calcolo e dati significativi per funzionare in modo più efficiente per immagini più grandi.

Inoltre, nel 2012, AlexNet ha rivisitato il deep learning che utilizza reti neurali costituite da più livelli. In questo periodo, la tecnologia è migliorata ed erano disponibili grandi set di dati e pesanti risorse informatiche per consentire la creazione di CNN complesse in grado di svolgere attività di visione artificiale in modo efficiente.

Strati in una CNN

Comprendiamo i diversi livelli in una CNN. L’aumento dei livelli in una CNN aumenterà la sua complessità e le consentirà di rilevare più aspetti o aree di un’immagine. Partendo da una funzione semplice, diventa in grado di rilevare caratteristiche complesse come la forma dell’oggetto e gli elementi più grandi fino a quando non può finalmente rilevare l’immagine.

Strato convoluzionale

Il primo strato di una CNN è lo strato convoluzionale. È l’elemento costitutivo principale della CNN in cui avviene la maggior parte dei calcoli. Ha bisogno di meno componenti, come dati di input, una mappa delle caratteristiche e un filtro.

Una CNN può anche avere livelli convoluzionali aggiuntivi. Ciò rende la struttura della CNN gerarchica poiché i livelli successivi possono visualizzare i pixel all’interno dei campi ricettivi dei livelli precedenti. Successivamente, i livelli convoluzionali trasformano l’immagine data in valori numerici e consentono alla rete di comprendere ed estrarre modelli preziosi.

Livelli di pooling

I livelli di pooling vengono utilizzati per ridurre le dimensioni e sono chiamati downsampling. Riduce i parametri utilizzati nell’input. L’operazione di raggruppamento può spostare un filtro sull’input completo come lo strato convoluzionale ma manca di pesi. Qui, il filtro applica una funzione congiunta ai valori numerici nel campo ricettivo per popolare la matrice dei risultati.

Il pooling ha due tipi:

  • Raggruppamento medio: il valore medio viene calcolato nel campo ricettivo che il filer fa scorrere sull’input per trasmetterlo all’array di output.
  • Max pooling: sceglie il valore massimo di pixel e lo invia all’array di output mentre il filtro scorre sull’input. Il raggruppamento massimo viene utilizzato più del raggruppamento medio.

Sebbene i dati significativi vengano persi durante il pooling, offre comunque molti vantaggi alla CNN. Aiuta a ridurre i rischi e la complessità di overfitting migliorando al contempo l’efficienza. Migliora anche la stabilità della CNN.

Livello completamente connesso (FC).

Come suggerisce il nome, tutti i nodi in un livello di output sono direttamente collegati al nodo del livello precedente in un livello completamente connesso. Classifica un’immagine in base alle caratteristiche estratte tramite i livelli precedenti insieme ai relativi filtri.

Inoltre, i livelli FC utilizzano generalmente una funzione di attivazione softmax per classificare correttamente gli input anziché le funzioni ReLu (come nel caso dei livelli di pooling e convoluzionali). Questo aiuta a produrre una probabilità di 0 o 1.

Come funzionano le CNN?

Una rete neurale convoluzionale è composta da molti strati, anche centinaia. Questi livelli imparano a identificare le varie caratteristiche di una data immagine.

Sebbene le CNN siano reti neurali, la loro architettura è diversa da una normale ANN.

Quest’ultimo invia un input attraverso molti strati nascosti per trasformarlo, dove ogni strato viene creato con un insieme di neuroni artificiali ed è completamente connesso a ogni neurone nello stesso strato. Infine, c’è un livello completamente connesso o il livello di output per visualizzare il risultato.

D’altra parte, la CNN organizza i livelli in tre dimensioni: larghezza, profondità e altezza. Qui, uno strato del neurone si connette solo ai neuroni in una piccola regione invece di relazionarsi con ciascuno di essi nello strato successivo. Infine, il risultato finale è rappresentato da un unico vettore con un punteggio di probabilità e ha solo la dimensione della profondità.

Ora, potresti chiedere cosa sia la “convoluzione” in una CNN.

Bene, la convoluzione si riferisce a un’operazione matematica per unire due set di dati. Nella CNN, il concetto di convoluzione viene applicato ai dati di input per produrre una mappa delle caratteristiche filtrando le informazioni.

Questo ci porta ad alcuni dei concetti e delle terminologie importanti utilizzate nelle CNN.

  • Filtro: noto anche come rilevatore di funzionalità o kernel, un filtro può avere una certa dimensione, ad esempio 3×3. Passa su un’immagine di input per eseguire la moltiplicazione della matrice per ciascun elemento per applicare la convoluzione. L’applicazione di filtri a ogni immagine di addestramento a risoluzioni variabili più l’output dell’immagine convoluta funzionerà come input per il livello successivo.
  • Padding: viene utilizzato per espandere una matrice di input ai bordi della matrice inserendo pixel falsi. Viene fatto per contrastare il fatto che la convoluzione riduce le dimensioni della matrice. Ad esempio, una matrice 9×9 può trasformarsi in una matrice 3×3 dopo il filtraggio.
  • Striding: se desideri ottenere un output più piccolo del tuo input, puoi eseguire lo striding. Consente di saltare alcune aree mentre il filtro scorre sull’immagine. Saltando due o tre pixel, puoi produrre una rete più efficiente riducendo la risoluzione spaziale.
  • Pesi e bias: le CNN hanno pesi e bias nei loro neuroni. Un modello può apprendere quei valori durante l’allenamento e i valori rimangono gli stessi in un determinato livello per tutti i neuroni. Ciò implica che ogni neurone nascosto rileva le stesse caratteristiche in diverse aree di un’immagine. Di conseguenza, la rete diventa più tollerante mentre traduce gli oggetti in una determinata immagine.
  • ReLU: sta per Rectified Linear Unit (ReLu) e viene utilizzato per un allenamento più efficace e veloce. Mappa i valori negativi su 0 e mantiene i valori positivi. Si chiama anche attivazione, poiché la rete trasporta solo le caratteristiche dell’immagine attivate nel livello successivo.
  • Campo ricettivo: in una rete neurale, ogni neurone riceve input da posizioni diverse dal livello precedente. E negli strati convoluzionali, ogni neurone riceve input da un’area ristretta solo dello strato precedente, chiamato campo ricettivo del neurone. Nel caso dello strato FC, l’intero strato precedente è il campo ricettivo.

Nelle attività di calcolo del mondo reale, di solito, la convoluzione viene eseguita in un’immagine 3D che richiede un filtro 3D.

Tornando alla CNN, comprende diverse parti o livelli di nodi. Ogni livello di nodo ha una soglia e un peso ed è connesso a un altro. Al superamento del limite di soglia, i dati vengono inviati al livello successivo in questa rete.

Questi livelli possono eseguire operazioni per modificare i dati per apprendere funzionalità rilevanti. Inoltre, queste operazioni ripetono centinaia di livelli diversi che continuano ad imparare a rilevare altre caratteristiche di un’immagine.

Le parti di una CNN sono:

  • Un livello di input: qui è dove viene preso l’input, come un’immagine. Sarà un oggetto 3D con altezza, larghezza e profondità definite.
  • Uno/più livelli nascosti o fase di estrazione delle caratteristiche: questi livelli possono essere uno strato convoluzionale, uno strato di pool e uno strato completamente connesso.
  • Un livello di output: qui verrà visualizzato il risultato.

Il passaggio dell’immagine attraverso il livello di convoluzione viene trasformato in una mappa delle caratteristiche o in una mappa di attivazione. Dopo aver convertito l’input, i livelli trasformano l’immagine e passano il risultato al livello successivo.

La CNN eseguirà molte convoluzioni e tecniche di pooling per rilevare le caratteristiche durante la fase di estrazione delle caratteristiche. Ad esempio, se inserisci l’immagine di un gatto, la CNN riconoscerà le sue quattro zampe, il colore, i due occhi, ecc.

Successivamente, i livelli completamente connessi in una CNN agiranno da classificatore sulle funzionalità estratte. Sulla base di ciò che l’algoritmo di deep learning ha previsto sull’immagine, i livelli darebbero il risultato.

Vantaggi delle CNN

Maggiore precisione

Le CNN offrono una maggiore precisione rispetto alle normali reti neurali che non utilizzano la convoluzione. Le CNN sono utili, specialmente quando l’attività coinvolge molti dati, riconoscimento di video e immagini, ecc. Producono risultati e previsioni altamente precisi; pertanto, il loro utilizzo è in aumento in diversi settori.

Efficienza computazionale

Le CNN offrono un livello di efficienza computazionale più elevato rispetto ad altre normali reti neurali. Ciò è dovuto all’utilizzo del processo di convoluzione. Usano anche la riduzione della dimensionalità e la condivisione dei parametri per rendere i modelli più veloci e facili da implementare. Queste tecniche possono anche essere ottimizzate per funzionare su diversi dispositivi, che si tratti del tuo smartphone o laptop.

Estrazione di funzionalità

La CNN può facilmente apprendere le caratteristiche di un’immagine senza richiedere l’ingegneria manuale. Puoi sfruttare le CNN pre-addestrate e gestire i pesi fornendo loro i dati quando lavori su una nuova attività, e la CNN si adatterà ad essa senza problemi.

Applicazioni della CNN

Le CNN sono utilizzate in diversi settori per molti casi d’uso. Alcune delle applicazioni reali delle CNN includono:

Classificazione delle immagini

Le CNN sono ampiamente utilizzate nella classificazione delle immagini. Questi possono riconoscere caratteristiche preziose e identificare oggetti in una determinata immagine. Quindi, è utilizzato in settori come l’assistenza sanitaria, in particolare la risonanza magnetica. Inoltre, questa tecnologia viene utilizzata nel riconoscimento delle cifre scritte a mano, che è uno dei primi casi d’uso delle CNN nella visione artificiale.

Rilevamento di oggetti

La CNN può rilevare oggetti nelle immagini in tempo reale e anche etichettarli e classificarli. Pertanto, questa tecnica è ampiamente utilizzata nei veicoli automatizzati. Consente inoltre alle case intelligenti e ai pedoni di riconoscere il volto del proprietario del veicolo. Viene anche utilizzato nei sistemi di sorveglianza basati sull’intelligenza artificiale per rilevare e contrassegnare oggetti.

Corrispondenza audiovisiva

L’aiuto della CNN nella corrispondenza audiovisiva aiuta a migliorare le piattaforme di streaming video come Netflix, YouTube, ecc. Aiuta anche a soddisfare le richieste degli utenti come “canzoni d’amore di Elton John”.

Riconoscimento vocale

Oltre alle immagini, le CNN sono utili nell’elaborazione del linguaggio naturale (NLP) e nel riconoscimento vocale. Un esempio nel mondo reale potrebbe essere Google che utilizza le CNN nel suo sistema di riconoscimento vocale.

Ricostruzione di oggetti

Le CNN possono essere utilizzate nella modellazione 3D di un oggetto reale in un ambiente digitale. È anche possibile per i modelli CNN creare un modello di viso 3D utilizzando un’immagine. Inoltre, la CNN è utile nella costruzione di gemelli digitali in biotecnologia, produzione, biotecnologia e architettura.

L’utilizzo della CNN in diversi settori include:

  • Assistenza sanitaria: la visione artificiale può essere utilizzata in radiologia per aiutare i medici a rilevare i tumori cancerosi con una migliore efficienza in una persona.
  • Agricoltura: le reti possono utilizzare le immagini di satelliti artificiali come LSAT e sfruttare questi dati per classificare le terre fertili. Questo aiuta anche a prevedere i livelli di fertilità della terra ea sviluppare una strategia efficace per massimizzare la resa.
  • Marketing: le applicazioni dei social media possono suggerire una persona in un’immagine pubblicata sul profilo di qualcuno. Questo ti aiuta a taggare le persone nei tuoi album fotografici.
  • Vendita al dettaglio: le piattaforme di e-commerce possono utilizzare la ricerca visiva per aiutare i marchi a consigliare articoli pertinenti che i clienti target desiderano acquistare.
  • Automotive: la CNN trova impiego nelle automobili per migliorare la sicurezza di passeggeri e conducenti. Lo fa con l’aiuto di funzionalità come il rilevamento della linea di corsia, il rilevamento di oggetti, la classificazione delle immagini, ecc. Questo aiuta anche il mondo delle auto a guida autonoma a evolversi ulteriormente.

Risorse per imparare le CNN

Corso:

Coursera ha questo corso sulla CNN che puoi prendere in considerazione. Questo corso ti insegnerà come si è evoluta la visione artificiale nel corso degli anni e alcune applicazioni delle CNN nel mondo moderno.

Amazon:

Puoi leggere questi libri e conferenze per saperne di più sulla CNN:

  • Reti neurali e deep learning: copre modelli, algoritmi e la teoria del deep learning e delle reti neurali.
  • Una guida alle reti neurali convoluzionali per la visione artificiale: questo libro ti insegnerà le applicazioni delle CNN e i loro concetti.
  • Reti neurali convoluzionali pratiche con Tensorflow: puoi risolvere vari problemi di visione artificiale usando Python e TensorFlow con l’aiuto di questo libro.
  • Apprendimento profondo applicato avanzato: questo libro ti aiuterà a comprendere le CNN, il deep learning e le loro applicazioni avanzate, incluso il rilevamento di oggetti.
  • Reti neurali convoluzionali e reti neurali ricorrenti: questo libro ti insegnerà le CNN e le RNN e come costruire queste reti.

Conclusione

Le reti neurali convoluzionali sono uno dei campi emergenti dell’intelligenza artificiale, dell’apprendimento automatico e dell’apprendimento profondo. Ha varie applicazioni nel mondo di oggi in quasi tutti i settori. Considerando il suo crescente utilizzo, ci si aspetta che si espanda maggiormente e sia più utile nell’affrontare i problemi del mondo reale.