Addestrare l’intelligenza artificiale per il riconoscimento delle immagini con 5 righe di codice

In questo articolo presenteremo brevemente il campo dell’intelligenza artificiale, in particolare della computer vision, le sfide che essa comporta, le soluzioni moderne esistenti per affrontarle e il modo in cui è possibile applicare queste soluzioni in modo pratico e semplice senza richiedere molto tempo e fatica.

L’intelligenza artificiale è da decenni un campo di ricerca in cui sia gli scienziati che gli ingegneri compiono sforzi intensi per svelare il mistero di far sì che le macchine e i computer percepiscano e comprendano il nostro mondo abbastanza bene da agire correttamente e servire l’umanità. Uno degli aspetti più importanti di questo lavoro di ricerca è la capacità dei computer di comprendere le informazioni visive (immagini e video) generate ogni giorno intorno a noi. Questo campo in cui i computer sono in grado di percepire e comprendere le informazioni visive è noto come computer vision.

Durante l’ascesa della ricerca sull’intelligenza artificiale tra gli anni ’50 e ’80, i computer ricevevano istruzioni manuali su come riconoscere le immagini, gli oggetti nelle immagini e le caratteristiche da osservare. Questo metodo è costituito da algoritmi tradizionali, chiamati Sistemi Esperti, che richiedono che l’uomo si prenda l’onere di identificare le caratteristiche di ogni singola scena o oggetto da riconoscere e di rappresentare queste caratteristiche in modelli matematici comprensibili al computer. Questo comporta un lavoro molto noioso, perché ci sono centinaia e migliaia di modi diversi in cui un oggetto può essere rappresentato e ci sono migliaia (o addirittura milioni) di scene e oggetti diversi che esistono in modo univoco, e quindi trovare i modelli matematici ottimizzati e accurati per rappresentare tutte le possibili caratteristiche di ogni oggetto o scena e per tutti i possibili oggetti o scene è un lavoro che durerà per sempre.

Poi, negli anni ’90, è stato introdotto il concetto di Machine Learning, che ha inaugurato un’era in cui, invece di dire ai computer cosa cercare per riconoscere scene e oggetti nelle immagini e nei video, possiamo progettare algoritmi che facciano sì che i computer imparino a riconoscere scene e oggetti nelle immagini da soli, proprio come un bambino impara a capire il suo ambiente esplorando. L’apprendimento automatico ha aperto la strada ai computer per imparare a riconoscere quasi tutte le scene e gli oggetti che vogliamo.

Con l’avvento di computer potenti come le GPU NVIDIA e di algoritmi di Deep Learning all’avanguardia per il riconoscimento delle immagini, come AlexNet del 2012 di Alex Krizhevsky et al, ResNet del 2015 di Kaeming He et al, SqueezeNet del 2016 di Forrest Landola et al, DenseNet del 2016 di Gao Huang et al, per citarne alcuni, è possibile mettere insieme un certo numero di immagini (più che altro libri di immagini per computer) e definire un modello di intelligenza artificiale che apprenda da solo le caratteristiche delle scene e degli oggetti presenti in queste immagini e utilizzi la conoscenza acquisita dal processo di apprendimento per riconoscere tutte le altre istanze del tipo di scena o di oggetti che incontrerà in seguito.

Per addestrare un modello di intelligenza artificiale in grado di riconoscere qualsiasi cosa si desideri nelle immagini, è tradizionalmente necessario disporre di molte competenze in matematica applicata e di librerie di Deep Learning, per non parlare della quantità di tempo e dello stress necessari per scrivere il codice dell’algoritmo e adattarlo alle immagini. È qui che abbiamo fornito le nostre soluzioni.

Il nostro team di AI Commons ha sviluppato una libreria python che consente di addestrare un modello di intelligenza artificiale in grado di riconoscere qualsiasi oggetto nelle immagini utilizzando solo 5 semplici righe di codice python. La libreria python è ImageAI, una libreria costruita per consentire a studenti, sviluppatori e ricercatori con tutti i livelli di competenza di costruire sistemi e applicazioni con capacità di computer vision all’avanguardia utilizzando da 5 a 15 semplici righe di codice. Ora vi spieghiamo come creare il vostro primo modello di intelligenza artificiale in grado di riconoscere qualsiasi cosa vogliate.

Per addestrare il modello di intelligenza artificiale, è necessaria una raccolta di immagini chiamata dataset. Un set di dati contiene centinaia o migliaia di immagini campione di oggetti che si desidera far riconoscere al modello di intelligenza artificiale. Ma non c’è da preoccuparsi! Non vi chiediamo di scaricare subito migliaia di immagini solo per addestrare il vostro modello di intelligenza artificiale. Per questo tutorial, abbiamo fornito un set di dati chiamato IdenProf. IdenProf (Identifiable Professionals) è un set di dati che contiene 11.000 immagini di 10 diversi professionisti che gli esseri umani possono vedere e riconoscere il loro lavoro dal modo in cui si vestono. Le classi di professionisti le cui immagini sono presenti in questo dataset sono le seguenti:

– Chef

– Dottore

– Ingegnere

– Agricoltore

– Vigile del fuoco

– Giudice

– Meccanico

– Pilota

– Poliziotto

– Cameriere

Questo set di dati è suddiviso in 9000 (900 immagini per ogni professione) immagini per addestrare il modello di intelligenza artificiale e 2000 (200 immagini per ogni professione) immagini per testare le prestazioni del modello di intelligenza artificiale durante l’addestramento. IdenProf è stato opportunamente organizzato e predisposto per addestrare il modello di intelligenza artificiale a riconoscere i professionisti in base al loro modo di vestire. Come riferimento, se si utilizza un proprio set di immagini, è necessario raccogliere almeno 500 immagini per ogni oggetto o scena che si desidera far riconoscere al modello di intelligenza artificiale. Per addestrare un dataset di immagini raccolto da voi stessi con ImageAI, dovete organizzare le immagini in cartelle, come si vede nell’esempio seguente:

Ora che avete capito come preparare il vostro dataset di immagini per l’addestramento di modelli di intelligenza artificiale, procederemo con l’addestramento di un modello di intelligenza artificiale per riconoscere i professionisti utilizzando ImageAI.

Per prima cosa è necessario scaricare lo zip del dataset IdenProf tramite questo link. Inoltre, è possibile visualizzare tutti i dettagli e i risultati di esempio dei modelli di intelligenza artificiale addestrati per riconoscere le professioni nel repository GitHub di IdenProf, il cui link è riportato di seguito.

https://github.com/OlafenwaMoses/IdenProf

– Poiché l’addestramento di modelli di intelligenza artificiale richiede sistemi informatici ad alte prestazioni, consiglio vivamente di assicurarsi che il computer/laptop che si desidera utilizzare per questo addestramento abbia una GPU NVIDIA. In alternativa, è possibile utilizzare Google Colab per questo esperimento, che offre gratuitamente una GPU NVIDIA K80 per gli esperimenti.

– Quindi è necessario installare ImageAI e le sue dipendenze.

 

idenprof//train//chef// 900 images of chefsidenprof//train//doctor// 900 images of doctorsidenprof//train//engineer// 900 images of engineeridenprof//train//farmer// 900 images of farmersidenprof//train//firefighter// 900 images of firefightersidenprof//train//judge// 900 images of judgesidenprof//train//mechanic// 900 images of mechanicsidenprof//train//pilot// 900 images of pilotsidenprof//train//chef// 900 images of chefidenprof//train//police// 900 images of policeidenprof//train//waiter// 900 images of waitersidenprof//test//chef// 200 images of chefsidenprof//test//doctor// 200 images of doctorsidenprof//test//engineer// 200 images of engineeridenprof//test//farmer// 200 images of farmersidenprof//test//firefighter// 200 images of firefightersidenprof//test//judge// 200 images of judgesidenprof//test//mechanic// 200 images of mechanicsidenprof//test//pilot// 200 images of pilotsidenprof//test//chef// 200 images of chefidenprof//test//police// 200 images of policeidenprof//test//waiter// 200 images of waiters

Installare Python 3.7.6 e pip 

(Saltare questa sezione se si possiede già Python 3.7.6. Se invece siete alle prime armi con Python, vi consigliamo il nostro corso da cui potrete veramente partire dalle basi.)

Rilascio di Python Python 3.7.6

Data di rilascio: 18 dicembre 2019 Ci sono ora nuove versioni di Python 3.7 che sostituiscono la 3.7.6 e Python 3.8 è…

www.python.org

Installare ImageAI e le dipendenze

(Saltare le istruzioni di installazione di questa sezione se si ha già installato la libreria)

– Tensorflow

pip installare tensorflow==2.4.0

– Altri

pip install keras==2.4.3 numpy==1.19.3 pillow==7.0.0 scipy==1.4.1 h5py==2.10.0 matplotlib==3.3.2 opencv-python keras-resnet==0.2.0

Installare la libreria ImageAI

pip installare imageai –upgrade

– Creare un file python con un nome a piacere, ad esempio “FirstTraining.py”.

– Copiare lo zip del dataset IdenProf nella cartella in cui si trova il file Python. Quindi decomprimere il file nella stessa cartella.

– Quindi copiate il codice sottostante nel file python (ad esempio FirstTraining.py).

Ecco fatto! Questo è tutto il codice necessario per addestrare il modello di intelligenza artificiale. Prima di eseguire il codice per iniziare l’addestramento, spieghiamo il codice.

Nella prima riga, abbiamo importato la classe di addestramento del modello di ImageAI. Nella seconda riga abbiamo creato un’istanza della classe di addestramento del modello. Nella terza riga, abbiamo impostato il tipo di modello su ResNet50 (ci sono quattro tipi di modello disponibili: MobileNetv2, ResNet50, InceptionV3 e DenseNet121). Nella quarta riga, impostiamo la directory dei dati (directory del dataset) sulla cartella del file zip del dataset decompresso. Quindi, nella quinta riga, richiamiamo la funzione trainModel e specifichiamo i seguenti valori:

– numero_oggetti : Si riferisce al numero di diversi tipi di professionisti presenti nel dataset IdenProf.

– num_esperimenti : È il numero di volte in cui l’addestratore del modello studierà tutte le immagini del dataset IdenProf per ottenere la massima precisione.

– Enhance_data (opzionale) : Indica all’addestratore del modello di creare copie modificate delle immagini nel set di dati IdenProf per garantire la massima precisione.

– batch_size: Si riferisce al numero di immagini del set che l’addestratore di modelli studierà in una sola volta, fino a quando non avrà studiato tutte le immagini del set di dati IdenProf.

– Mostra_riassunto_rete (opzionale) : Serve a mostrare la struttura del tipo di modello che si sta usando per addestrare il modello di intelligenza artificiale.

Una volta iniziato l’allenamento, vedrete risultati come quello qui sotto:

=====================================

Totale parametri: 23.608.202

Parametri addestrabili: 23.555.082

Parametri non addestrabili: 53,120

______________________________________

Utilizzo della generazione avanzata di dati

Trovate 4000 immagini appartenenti a 4 classi.

Trovate 800 immagini appartenenti a 4 classi.

Mappatura JSON per le classi del modello salvata in C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json

Numero di esperimenti (poche) : 200 Epoca 1/100

1/280 [>………………………..] – ETA: 52s – perdita: 2.3026 – acc: 0.25002/280 [>………………………..] – ETA: 52s – perdita: 2.3026 – acc: 0.25003/280 [>………………………..] – ETA: 52s – perdita: 2.3026 – acc: 0.2500…………………………,

…………………………,

…………………………,279/280 [===========================>..] – ETA: 1s – perdita: 2.3097 – acc: 0.0625Epoch 00000: salvataggio del modello in C:\sers\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5

280/280 [==============================] – 51s – perdita: 2,3095 – acc: 0,0600 – val_loss: 2,3026 – val_acc: 0,1000

Spieghiamo i dettagli mostrati sopra:

  1. L’affermazione “JSON Mapping for the model classes saved to C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json” significa che l’addestratore di modelli ha salvato un file JSON per il set di dati idenprof che è possibile utilizzare per riconoscere altre immagini con la classe di predizione delle immagini personalizzata (la spiegazione è disponibile nel prosieguo della lettura).
  2. La riga Epoch 1/200 significa che la rete sta eseguendo il primo addestramento dell’obiettivo 200
  3. La riga 1/280 [>………………………..] – ETA: 52s – loss: 2.3026 – acc: 0.2500 rappresenta il numero di batch che sono stati addestrati nel presente esperimento.
  4. La riga Epoch 00000: salvataggio del modello in C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5 si riferisce al modello salvato dopo il presente addestramento. Il valore ex_000 rappresenta l’esperimento in questa fase, mentre i valori acc0.100000 e valacc: 0.1000 rappresentano l’accuratezza del modello sulle immagini di prova dopo l’esperimento in corso (il valore massimo dell’accuratezza è 1.0). Questo risultato aiuta a conoscere il modello più performante da utilizzare per la predizione di immagini personalizzate.

Una volta terminato l’addestramento del modello di intelligenza artificiale, è possibile utilizzare la classe “CustomImagePrediction” per eseguire la predizione delle immagini con il modello che ha ottenuto la massima accuratezza.

Nel caso in cui non sia possibile addestrare da soli il modello di intelligenza artificiale a causa della mancanza di accesso a una GPU NVIDIA, ai fini di questa esercitazione abbiamo fornito un modello di intelligenza artificiale addestrato sul set di dati IdenProf che è possibile utilizzare subito per prevedere nuove immagini di uno qualsiasi dei 10 professionisti presenti nel set di dati. Questo modello ha ottenuto un’accuratezza superiore al 79% dopo 61 esperimenti di addestramento. Fate clic su questo link per scaricare il modello. Inoltre, se non avete eseguito l’addestramento da soli, scaricate anche il file JSON del modello idenprof da questo link. Quindi, siete pronti per iniziare a riconoscere i professionisti utilizzando il modello di intelligenza artificiale addestrato. Seguite le istruzioni che seguono.

Quindi, create un altro file Python e dategli un nome, ad esempio FirstCustomImageRecognition.py . Copiate il modello di intelligenza artificiale scaricato in precedenza o quello addestrato che ha ottenuto la massima precisione e incollatelo nella cartella in cui si trova il nuovo file Python (ad esempio FirstCustomImageRecognition.py ). Copiare anche il file JSON scaricato o generato dall’addestramento e incollarlo nella stessa cartella del nuovo file python. Copiare una o più immagini campione di qualsiasi professionista che rientri nelle categorie del dataset IdenProf nella stessa cartella del nuovo file python.

Copiare quindi il codice sottostante e inserirlo nel nuovo file python.

Visualizzare l’immagine campione e il risultato qui sotto.

waiter : 99.99997615814209chef : 1.568847380895022e-05judge : 1.0255866556008186e-05

È stato facile! Ora spieghiamo il codice che ha prodotto questo risultato di predizione.

La prima e la seconda riga di codice importano la classe CustomImageClassification di ImageAI per la predizione e il riconoscimento delle immagini con modelli addestrati e la classe os di python. La terza riga di codice crea una variabile che contiene il riferimento al percorso che contiene il file python (in questo esempio, FirstCustomImageRecognition.py) e il file del modello ResNet50 che avete scaricato o addestrato voi stessi. Nel codice sopra riportato, nella quarta riga abbiamo creato un’istanza della classe CustomImageClassification(), poi abbiamo impostato il tipo di modello dell’oggetto predizione su ResNet50, richiamando il metodo .setModelTypeAsResNet50() nella quinta riga e quindi abbiamo impostato il percorso del modello dell’oggetto predizione sul percorso del file del modello di intelligenza artificiale (idenprof_061-0.7933.h5) che abbiamo copiato nella cartella del progetto nella sesta riga. Nella settima riga, abbiamo impostato il percorso del file JSON copiato nella cartella nella settima riga e caricato il modello nell’ottantesima riga. Infine, si esegue la predizione sull’immagine copiata nella cartella e si stampa il risultato sull’interfaccia a riga di comando.

Finora avete imparato a usare ImageAI per addestrare facilmente il vostro modello di intelligenza artificiale in grado di prevedere qualsiasi tipo di oggetto o insieme di oggetti in un’immagine.

Se volete sapere tutto su come funziona il riconoscimento delle immagini, con collegamenti a risorse più utili e pratiche, visitate la Guida al riconoscimento delle immagini collegata qui sotto.

Guida al riconoscimento delle immagini

Ora che sappiamo un po’ cos’è il riconoscimento delle immagini, le distinzioni tra i diversi tipi di riconoscimento delle immagini…

www.fritz.ai

È possibile trovare tutti i dettagli e la documentazione sull’uso di ImageAI per l’addestramento di modelli di intelligenza artificiale personalizzati, oltre ad altre funzionalità di computer vision contenute in ImageAI sul repository ufficiale GitHub.

OlafenwaMoses/ImageAI

Una libreria open-source in python creata per consentire agli sviluppatori di creare applicazioni e sistemi con Deep…

github.com

Se questo articolo vi è stato utile e vi è piaciuto, fate un applauso. Inoltre, sentitevi liberi di condividerlo con amici e colleghi.

Avete domande, suggerimenti o volete contattarmi? Inviatemi un’e-mail a guymodscientist@gmail.com . Sono disponibile anche su Twitter con il nickname @OlafenwaMoses e su Facebook con https://www.facebook.com/moses.olafenwa .

 

Articolo originale di Moses Olafenwa

Train Image Recognition AI with 5 lines of code | by Moses Olafenwa | Towards Data Science

Share:

Contenuti
Torna in alto