Una guida per principianti alla classificazione di immagini attraverso modelli di Deep Learning
Articolo in lingua originale di Sukhendra Singh
Introduzione
La classificazione delle immagini è un task fondamentale della computer vision che prevede di categorizzare un’immagine in una delle diverse classi predefinite. Ha un’ampia gamma di applicazioni, dall’identificazione di oggetti nelle immagini alla diagnosi medica e alla sorveglianza della sicurezza. Grazie ai recenti progressi del deep learning, è ora possibile ottenere un’elevata precisione nei compiti di classificazione delle immagini utilizzando le reti neurali convoluzionali (CNN), un tipo di modello di deep learning specificamente progettato per l’elaborazione delle immagini. In questo articolo esploreremo le basi della classificazione delle immagini utilizzando modelli di deep learning.
Preparazione dei dati
Uno dei fattori chiave che influenzano l’accuratezza di un modello di classificazione delle immagini è la qualità e la quantità dei dati utilizzati per l’addestramento. Prima di iniziare a costruire il modello, è necessario preparare i dati mediante una serie di tecniche di preelaborazione e di ampliamento. Le tecniche di pre-elaborazione prevedono il ridimensionamento delle immagini a una dimensione standard, la normalizzazione dei valori dei pixel e la conversione delle immagini in scala di grigi, se necessario. Le tecniche di incremento dei dati prevedono la generazione di nuove immagini applicando trasformazioni casuali come la rotazione, la traslazione e il capovolgimento. Queste tecniche contribuiscono ad aumentare la variabilità dei dati e a ridurre l’overfitting, che si verifica quando il modello funziona bene sui dati di addestramento ma male sui dati di test.
Costruzione del modello
Una volta preparati i dati, possiamo iniziare a costruire il modello di deep learning per la classificazione delle immagini. Un’architettura comune per la classificazione delle immagini è la rete neurale convoluzionale (CNN), che consiste in più livelli convoluzionali seguiti da livelli di pooling e da livelli completamente connessi (fully connected). Gli strati convoluzionali estraggono le caratteristiche dalle immagini applicando filtri ai dati di ingresso, gli strati di pooling, invece, riducono la dimensionalità dei dati mediante down-sampling. Infine, gli strati completamente connessi prendono l’output degli strati convoluzionali e ne ricavano la predizione finale dell’etichetta della classe.
Il transfer learning è una tecnica popolare nel deep learning per ottenere un’elevata precisione con dati limitati. Nel transfer learning, si parte da una CNN pre-addestrata su un grande set di dati, come ImageNet, e poi si mette a punto il modello sul proprio set di dati. Questo ci permette di sfruttare le caratteristiche apprese dal modello pre-addestrato e di adattarle al nostro compito specifico.
Addestrare e valutare il modello
Una volta costruito il modello, è necessario addestrarlo sul set di dati preparato. Durante il processo di addestramento, il modello regola i suoi parametri per minimizzare la funzione di perdita, che misura la differenza tra le probabilità di classe previste e le etichette della classe vera. Possiamo regolare gli iperparametri del modello, come il learning rate, il numero di epoche e la dimensione del batch, per ottimizzare le sue prestazioni. L’Early Stopping è una tecnica per prevenire l’overfitting, consiste nell’interrompere il processo di addestramento quando la funzione di perdita del validation set smette di migliorare.
Per valutare le prestazioni del modello, utilizziamo un set di dati di test separato che il modello non ha mai visto prima. Per misurare le prestazioni del modello si possono calcolare varie metriche, come l’accuratezza, la precisione, il recall e l’F1-score. È importante valutare attentamente le prestazioni del modello per assicurarsi che generalizzi bene anche con nuovi dati mai visti prima.
Applicazioni nel mondo reale
La classificazione delle immagini mediante modelli di deep learning ha molte applicazioni nel mondo reale. Ad esempio, nella diagnosi medica, i modelli di deep learning possono essere utilizzati per identificare le cellule cancerose dalle immagini mediche con un’elevata precisione. Nelle auto a guida autonoma, i modelli di deep learning possono essere utilizzati per identificare pedoni, segnali stradali e altri oggetti sulla strada. Nella sorveglianza della sicurezza, i modelli di deep learning possono essere utilizzati per rilevare comportamenti sospetti e avvisare il personale di sicurezza.
Conclusione
In questo articolo abbiamo esplorato le basi della classificazione delle immagini utilizzando modelli di deep learning. Abbiamo discusso l’importanza della preparazione e dell’ampliamento dei dati, i componenti di una CNN e le tecniche di addestramento e valutazione del modello. Abbiamo anche evidenziato alcune applicazioni reali della classificazione delle immagini con modelli di deep learning.
Per articoli più approfonditi rimanete aggiornati tramite il nostro sito. Se volete approfondire questi argomenti iscrivetevi ai nostri corsi Deep Learning Italia!
Riferimenti
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097–1105).
- Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.
- Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S., … & Berg, A. C. (2015). ImageNet large scale visual recognition challenge. International journal of computer vision, 115(3), 211–252.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning (Vol. 1). MIT press.
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436–444.
- Chollet, F. (2017). Deep learning with Python. Manning Publications.
- Brownlee, J. (2021). How to Develop a Convolutional Neural Network to Classify Photos of Dogs and Cats. Machine Learning Mastery. Retrieved from https://machinelearningmastery.com/how-to-develop-a-convolutional-neural-network-to-classify-photos-of-dogs-and-cats/
- Géron, A. (2017). Hands-On Machine Learning with Scikit-Learn and TensorFlow. O’Reilly Media.
- Litjens, G., Kooi, T., Bejnordi, B. E., Setio, A. A. A., Ciompi, F., Ghafoorian, M., … & Sánchez, C. I. (2017). A survey on deep learning in medical image analysis. Medical image analysis, 42, 60–88.
- Ge, Y., Lu, C., & Feng, J. (2019). Deep Learning for Pedestrian Detection: A Comprehensive Review. IEEE Transactions on Intelligent Transportation Systems, 21(12), 5038–5057.