Crea una Rete Neurale Convoluzionale da zero utilizzando Numpy

Crea una Rete Neurale Convoluzionale da zero utilizzando Numpy Guida dettagliata

Diventa un esperto di visione artificiale costruendo una CNN da zero

Queste finestre colorate mi ricordano gli strati delle CNN e i loro filtri. Fonte immagine: unsplash.com.

Ora che le applicazioni di Computer Vision sono presenti ovunque nella nostra vita quotidiana, è fondamentale che ogni professionista della Scienza dei Dati comprenda i principi di funzionamento e si familiarizzi con essi.

In questo articolo, ho costruito una Deep Neural Network senza fare affidamento alle popolari librerie di deep learning moderne come Tensorflow, Pytorch e Keras. Successivamente, ho classificato immagini di cifre scritte a mano con essa. Sebbene i risultati ottenuti non abbiano raggiunto livelli all’avanguardia, sono comunque stati soddisfacenti. Ora, voglio compiere un ulteriore passo avanti nello sviluppo di una Convolutional Neural Network (CNN) utilizzando solo la libreria Python Numpy.

Le librerie Python di deep learning, come quelle menzionate in precedenza, sono strumenti estremamente potenti. Tuttavia, come aspetto negativo, esse distolgono i professionisti della Scienza dei Dati dalla comprensione dei principi di funzionamento a basso livello delle Reti Neurali. Ciò è particolarmente vero per le CNN, poiché i loro processi sono meno intuitivi rispetto alle classiche reti totalmente connesse. L’unico modo per affrontare questo problema è sporcarci le mani e implementare le CNN noi stessi: questa è la motivazione dietro questo compito.

Questo articolo è pensato come una guida pratica, pratica più che come una guida esaustiva dei principi di funzionamento delle CNN. Di conseguenza, la parte teorica è concisa e serve principalmente per comprendere la sezione pratica. Per questo motivo, troverai una lista esaustiva di risorse alla fine di questo post. Ti invito calorosamente a darci un’occhiata!

Reti neurali convoluzionali

Le reti neurali convoluzionali utilizzano un’architettura e operazioni specifiche che le rendono adatte ai compiti legati alle immagini, come la classificazione delle immagini, la localizzazione degli oggetti, la segmentazione delle immagini e altro ancora. Il loro design riflette approssimativamente la corteccia visiva umana, dove ogni neurone biologico risponde solo a una piccola parte del campo visivo. Inoltre, neuroni di livello superiore reagiscono agli output dei neuroni di livello inferiore.

Anche se le classiche reti totalmente connesse possono gestire compiti legati alle immagini, la loro efficacia si degrada significativamente quando applicate a…