Raspberry Pi: AI per rilevare oggetti con TensorFlow

La board Raspberry Pi grazie al processore ARM permette di implementare sistema di intelligenza artificiale e rete neurale. Ma come è possibile implementare in modo semplice e con pochi passaggi un sistema di questo genere?

In questo articolo vedremo come creare un sistema di intelligenza artificiale che permette di individuare e identificare oggetti in feed, video o immagini della webcam in tempo reale utilizzando TensorFlow Lite.

In questo articolo vedremo passo dopo passo tutte le componenti da utilizzare e tutti i concetti che dobbiamo conoscere per capire almeno le basi di quello creeremo.

In questo articolo vedremo in breve:

  • Che cosa è l’intelligenza artificiale
  • Che cosa è TensorFlow Lite
  • Che cosa è il Machine Learning
  • Come implementare un sistema AI per rilevare gli oggetti con TensorFlow Lite su Raspberry

Che cosa è l’intelligenza Artificiale?

Per chi non lo sapesse l’intelligenza artificiale può essere spiegata in breve con una citazione di Elaine Rich:

“L’intelligenza artificiale è lo studio di come far fare ai computer cose che, al momento, le persone fanno meglio.”

L’intelligenza artificiale (IA) è l’abilità di una macchina di mostrare capacità umane quali il ragionamento, l’apprendimento, la pianificazione e la creatività.

L’intelligenza artificiale permette ai sistemi di capire il proprio ambiente, mettersi in relazione con quello che percepisce e risolvere problemi, e agire verso un obiettivo specifico. Il computer riceve i dati (già preparati o raccolti tramite sensori, come una videocamera), li processa e risponde.

I sistemi di IA sono capaci di adattare il proprio comportamento analizzando gli effetti delle azioni precedenti e lavorando in autonomia.

Che cosa è TensorFlow Lite?

Per rispondere a questa domanda, dobbiamo prima esaminare TensorFlow stesso. TensorFlow è una piattaforma di machine learning open source “end-to-end” (ovvero all-in-one) del team di Google Brain. TensorFlow è una libreria software open source che consente attività di machine learning.

Un’attività di apprendimento automatico è qualsiasi problema che richiede il riconoscimento di modelli, alimentato da algoritmi e grandi quantità di dati.

Un esempio di un’applicazione di machine learning è la visione artificiale. Consente ai computer di riconoscere gli oggetti in una foto o in un feed live della telecamera. Per fare ciò, il programma deve essere prima “addestrato” ottenendo migliaia di immagini di quell’oggetto. Il programma non comprende mai l’oggetto, ma impara a cercare determinati modelli di dati (cambiamenti di contrasto, determinati angoli o curve) che probabilmente corrispondono all’oggetto. Nel tempo, il programma diventa sempre più preciso nel riconoscere quell’oggetto. In questo articolo vedremo proprio questa applicazione.

Che cosa è il Machine Learning?

Il Machine Learning è un sottoinsieme dell’intelligenza artificiale (AI) che si occupa di creare sistemi che apprendono o migliorano le performance in base ai dati che utilizzano. Intelligenza artificiale è un termine generico e si riferisce a sistemi o macchine che imitano l’intelligenza umana. I termini apprendimento automatico e intelligenza artificiale vengono spesso utilizzati insieme e in modo interscambiabile, ma non hanno lo stesso significato. Un’importante distinzione è che sebbene tutto ciò che riguarda il machine learning rientra nell’intelligenza artificiale, l’intelligenza artificiale non include solo il machine learning.

Arriviamo dritto al sodo. Vediamo come implementare un sistema AI per rilevare gli oggetti con TensorFlow Lite su Raspberry

I componenti da utilizzare per implementare un sistema AI per rilevare gli oggetti con TensorFlow Lite su Raspberry sono:

Step 1 Apriamo il terminale

Step 2 effettuare update della board Raspberry Pi. La board Raspberry Pi deve essere completamente aggiornata. Digitiamo

L’aggiornamento potrebbe anche richiedere 1 ora di tempo.

Step 3 Assicuriamoci che l’interfaccia della fotocamera sia abilitata nel menu Raspi-Config, Per verificare se la fotocamera è abilitata clicca sulla icona del raspberry pi in alto a sinistra, poi andiamo su “preferenze”, poi su “configurazione Raspberry Pi”. In questo momento clicchiamo sulla voce “Interfacce” e verifica che la fotocomaera sia impostata su “abilitata” o su “enable”. In caso contrario clicca sulla voce “enable” o “abilita” e riavvia la board Raspberry.

Step 4 Scaricare repository e creare un ambiente virtuale. Il repository contiene gli script che utilizzeremo per eseguire TensorFlow Lite, oltre a uno script di shell che semplificherà l’installazione. Digitiamo:

Il tutto sarà scaricato in una cartella chiamata “TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi”. Il nome è lungo e potrebbe creare problemi durante la digitazione dei comandi su terminale, consiglio di rinominare la cartella in “title1”. Per rinominare da terminale ed entrare nella cartella digitiamo:

Lavoreremo sempre all’interno di questa cartella.

Step 5 Creare ambiente virtuale

Utilizzare un ambiente virtuale potrebbe far prevenire eventuali conflitti tra le varie possibili versioni delle librerie e pacchetti che potrebbero essere installate sulla board Raspberry di TensorFlow.

Per installare un ambiente di sviluppo virtuale digita:

Ora crea l’ambiente virtuale “tflite1-env” digitando:

Questo comando creerà una cartella chiamata tflite1-env all’interno della directory tflite1. La cartella tflite1-env conterrà tutte le librerie e pacchetti per questo ambiente.

Ora attiviamo l’ambiente di sviluppo virtuale digitando:

Per capire se siamo lavorando all’interno dell’ambiente di sviluppo virtuale dobbiamo semplicemente controllare se all’inizio di ogni stringa compare il nome (in questo caso) “tflite-env1”, che si riferisce al nome della cartella riguardante l’ambiente virtuale.

Per controllare cosa c’è dentro alla cartella “tflite1” digitiamo il comando “ls”.

Step 6 Installa le dipendenze di TensorFlow Lite e OpenCV

Successivamente, installeremo TensorFlow, OpenCV e tutte le dipendenze necessarie per entrambi i pacchetti. OpenCV non è necessario per eseguire TensorFlow Lite, ma gli script di rilevamento degli oggetti in questo repository lo utilizzano per acquisire immagini e far comparire il risultato del rilevamento.

Per semplificare il lavoro nella cartella “tflite1” è presente uno script contente diverse stringhe che permette di scaricare e installare automaticamente tutti i pacchetti e le dipendenze con un solo comando. Digitiamo:

Saranno impiegati diversi minuti affinché l’installazione termini.

lo script installa automaticamente l’ultima versione di TensorFlow.

Le stringhe contenute nello script:

Step 7 Configurare modello di rilevamento oggetti con TensorFlow Lite

Ora Imposteremo il modello di rilevamento che verrà utilizzato con TensorFlow Lite.

A un modello di rilevamento di un oggetto sono associati due file: un file detect.tflite (contiene grafico di rilevamento per il modello) e un file labelmap.txt (che fornisce una labelmap per il modello e fornisce le varie etichette da associare agli oggetti rilevati). Il mio modo preferito per organizzare i file è creare una cartella (come “BirdSquirrelRaccoon_TFLite_model”) e mantenere ambedue i file all’interno di questa cartella.

Google fornisce un modello di rilevamento di oggetti SSDLite-MobileNet-v2 che viene addestrato dal database MSCOCO e convertito per essere eseguito su TensorFlow Lite. Può rilevare e identificare 80 diversi oggetti comuni, come persone, automobili, tazze, e così via.

SCARICA IL MODELLO DA QUI, DOVRAI POI ESTRARLO IN UNA DETERMINATA CARTELLA.

Decomprimilo in una cartella chiamata “Sample_TFLite_model” digitando (questo comando crea automaticamente la cartella):

Step 8 Esegui il modello di rilevamento degli oggetti con TensorFlow Lite

È ora di vedere in azione il modello di rilevamento degli oggetti TFLite! Innanzitutto, libera memoria RAM e numero di task per il processore chiudendo tutte le applicazioni che non stai utilizzando. Inoltre, assicurati di avere la webcam o la Picamera collegata.

Lo script TFLite_detection_webcam.py funzionerà con una Picamera o una webcam USB.

Esegui lo script di rilevamento della webcam in tempo reale emettendo il seguente comando (se non già fatto)

Per avviare il modello che permette di rilevare gli oggetti digita:

Dopo alcuni istanti apparirà una finestra che mostra il feed della webcam. Gli oggetti rilevati avranno riquadri verdi ed etichette che si riferiscono agli oggetti circostanti visualizzati in tempo reale.

Errore più frequente: la cartella contente i file labelmap.txt e detect.tflite deve essere chiamata Sample_TFLite_model, chiamata in altra maniera non fa avviare lo script per rilevare gli oggetti.

Ecco qui vari risultati

TensorFlow

TensorFlow TensorFlow TensorFlow

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.