In questo articolo, esamineremo da vicino uno degli approcci al riconoscimento automatico del testo scritto a mano: PyLaia. Si tratta del successore di Laia, realizzato nel 2018 da Joan Puigcerver e Carlos Mocholí. Nella descrizione più semplificata, prende in input un'immagine di testo e genera in output i caratteri corrispondenti. Al centro di questo algoritmo si trova una rete neurale profonda, ma i suoi componenti sono leggermente più sofisticati di quelli di un semplice perceptron (vedi la nostra introduzione alle reti neurali qui). L'intera architettura del modello è riassunta nell'immagine sottostante, ma per comprenderla dobbiamo prima dare un'occhiata più da vicino ad alcuni dei maggiori progressi nel deep learning degli ultimi dieci anni.
Reti convoluzionali
Il primo stadio consiste nei cosiddetti Conv. Blocks, o blocchi convoluzionali. Abbiamo già parlato di questi in un altro articoloma diamo un'occhiata più da vicino a ciò che accade in realtà. In uno strato convoluzionale, l'immagine in ingresso viene convoluta con un kernel, che è essenzialmente una matrice di numeri. Poiché anche i dati grezzi dell'immagine possono essere considerati una matrice di valori numerici dei pixel, l'intera operazione di convoluzione si riduce a un numero enorme di moltiplicazioni matriciali, in cui il kernel scorre sull'intera immagine - colonna per colonna e riga per riga - per produrre una nuova serie di valori dei pixel. Ai vecchi tempi dell'elaborazione delle immagini, si progettavano manualmente questi kernel per ottenere compiti specifici, ad esempio il rilevamento dei bordi. Il kernel qui sotto fa esattamente questo: rileva i bordi verticali passando in rassegna tutte le sotto-immagini di 3×3 pixel contenute nell'immagine originale. Tradizionalmente, questo potrebbe essere il primo passo di un complicato algoritmo codificato manualmente che cerca di trovare gli oggetti in un'immagine. In passato, tuttavia, questa operazione era così difficile che anche gli algoritmi più sofisticati non riuscivano a trovare in modo affidabile gli oggetti in un'immagine. differenziare le immagini di cani e gatti.
Fonte dell'immagine: Wikimedia
Poi, circa 10 anni fa, tutto è cambiato. Il progetto ImageNet, che gestisce uno dei più grandi concorsi di riconoscimento delle immagini, ha improvvisamente registrato enormi progressi tra i suoi principali concorrenti. In questo concorso, gli algoritmi devono individuare diverse migliaia di classi di oggetti in un set di dati che comprende milioni di immagini etichettate a mano. Uno dei vincitori più famosi, AlexNetè una rete neurale profonda che fornisce stime di probabilità per ogni singola classe. È riuscita notoriamente a classificare correttamente 63% di tutte le immagini (cioè a dare alla classe corretta la massima probabilità) e per quasi 85% di tutte le immagini, la classe vera era almeno tra le prime 5 delle previsioni di AlexNet. Numeri del genere erano considerati del tutto impossibili solo pochi anni prima. Come è stato possibile? Si è scoperto che è possibile designare i kernel come parametri regolabili all'interno di una rete neurale, consentendo essenzialmente al modello di apprendere le matrici giuste quando gli vengono forniti dati di addestramento sufficienti.
Utilizzando il calcolo accelerato dalle GPU, questi tipi di reti neurali potevano improvvisamente imparare in poche ore ciò che gli esseri umani non erano riusciti a capire in molti decenni. Nei due anni successivi, le architetture di convnet sono state sempre più perfezionate. Una parte importante è stata l'introduzione delle cosiddette residuo in cui le uscite degli strati a volte bypassavano gli strati per poi essere reinserite in un secondo momento. Ciò ha migliorato notevolmente l'efficienza dell'addestramento, in quanto le reti sono diventate sempre più profonde per comprendere livelli di astrazione più elevati. Alla fine, questi sviluppi hanno dato vita a modelli in grado di battere l'uomo medio in un'ampia gamma di compiti di riconoscimento delle immagini. Oggi, una classificazione accurata delle immagini utilizzando reti convoluzionali sta diventando quasi banale. Grazie alle moderne librerie software e ai fornitori di GPU, la classificazione delle immagini può essere considerata un problema quasi risolto. Inoltre, grazie a concetti come il fine-tuning e l'apprendimento per trasferimento, è possibile risolvere i problemi con quantità relativamente piccole di dati di addestramento. Cosa stiamo ancora cercando di ottenere quando si tratta di riconoscimento del testo? Se avessimo a che fare solo con immagini di singole lettere o numeri, la nostra storia finirebbe qui. Etichettarli correttamente è infatti banale. Ma il testo scritto a mano è più complicato. Innanzitutto, esistono quasi infiniti stili di scrittura e i modelli di solito non si trasferiscono bene tra testi di autori diversi. Inoltre, anche per l'occhio umano allenato alcuni caratteri possono avere senso solo nel contesto di una parola o forse di un'intera frase. Pertanto, per ottenere previsioni HTR più accurate, dobbiamo andare oltre la semplice classificazione delle immagini e considerare anche l'elaborazione del linguaggio naturale. Nella seconda parte di questa serie, daremo un'occhiata più da vicino agli altri grandi progressi del deep learning: reti neurali ricorrenti.