Riconoscimento facciale con Raspberry e integrazione in Home Assistant
L'angolo dei lettori
Scritto da Vincenzo Caputo
Benvenuti nella rubrica "l'angolo dei lettori". Questo spazio è una sezione del blog che permette a chiunque di scrivere un articolo o realizzare un video, effettuare prove e test che riguardano il mondo della tecnologia e proporne la pubblicazione su queste pagine.
Oggi Nicola Bertelli (che ringraziamo per questa splendida guida) ci mostra come sia possibile eseguire un riconoscimento facciale di tutti i componenti della nostra famiglia (e non solo) e, di conseguenza, creare dei sensori relativi alla persona riconosciuta da poter inserire in automazioni o script di Home Assistant.
ATTENZIONE: CONSIGLIO LA LETTURA SOLO A CHI VUOLE SERIAMENTE STUPIRE AMICI E PARENTI!
Gestirò il face-recognition utilizzando Python, versione minima 3.5, facendomi aiutare da alcune librerie appositamente create per questo scopo.
Lista della spesa:
-
1 raspeberry Pi3 o Pi3+, relativo alimentatore e microsd acquistabile al seguente link: https://amzn.to/2Sw7WgD
-
1 modulo camera per raspberry, io ho utilizzato quello ufficiale ma probabilmente anche quello di AZdelivery funziona ugualmente bene Raspi-cam, acquistabile al seguente link: https://amzn.to/2SuA6bY. Non fatevi attirare dalla risoluzione, noi utilizzeremo una definizione molto bassa, ci vorrebbe troppo tempo per elaborare le immagini ad alta risuluzione con il Raspberry.
Fase 1: Collegamento Pi-camera e installazione pacchetti Raspberry
Prima di collegare all’alimentazione il nostro Raspberry, colleghiamo la nostra Pi-camera, avendo l’accortezza di tenere la parte colorata di blu rivolta verso lo slot per la connessione di rete
Dopodichè vi rimando a questa guida dove spiego approfonditamente come accedere da remoto e come modificare i file e le cartelle del Raspberry: GUIDA
Da terminale richiamiamo il menù di configurazione del Raspberry:
-
sudo raspi-config
scegliamo Interfacing options quindi camera, confermiamo
Ora dovremo andare ad installare tutta una serie di pacchetti lanciando i comandi che vi elenco sotto:
-
sudo apt-get install cmake git python3 python3-pip
-
sudo pip3 install --upgrade picamera[array]
-
sudo pip3 install dlib
-
sudo apt-get install libgtk2.0-dev libatlas3-base libopenjp2-7
-
sudo pip3 install pyyaml paho-mqtt
-
sudo pip3 install face_recognition
Ora scarichiamo i file necessari dalla mia repository Github e spostiamo la cartella di nostro interesse nella home:
-
git clone --single-branch https://github.com/nicola-bertelli/face-ha.git
-
cp -R face-ha/riconoscimento ~/
-
sudo rm -r face-ha
Fase 2: Configurazione del sistema e creazione delle immagini campione
Ora possiamo procedere eseguendo lo script fotografia.py che andrà a scattare una fotografia appunto e la salverà nella cartella corrente:
cd riconoscimento
python3 fotografia.py
Se l’immagine non è orientata correttamente, possiamo entrare nel file di configurazione che ho creato (config.yaml), per modificare il valore dei gradi, sotto a rotazione
ripetiamo lo script fino a che l’orientamento è corretto e soprattutto otteniamo una buona inquadratura del nostro viso.
Vi consiglio di posizionare la camera in un luogo abbastanza luminoso, e magari a sfondo chiaro, non sarebbe male anche ritagliare un minimo l’immagine in modo da ottenere un file più leggero e quindi veloce da elaborare.
L’immagine ottenuta andrà rinominata a piacere, visto che verrà accostata ad una persona di cui vogliamo eseguire il riconoscimento come andremo a dichiarere proseguendo la compilazione del config.yaml:
Nella sezione “persone_conosciute” mettiamo il nome della persona, il file di riferimento e il topic_sensore, cioè il topic dove andremo a pubblicare un messaggio MQTT, necessario per la creazione del sensore in Home Assistant.
Non dimentichiamoci di mettere l’indirizzo ip del server MQTT.
Fase 3: Avvio dello script confronto.py
Bene, ora è il momento di testare se tutto va per il meglio:
Lanciamo lo script:
python3 confronto.py
Vi avverto che l’avvio non è velocissimo (circa un minuto), ma una volta che tutto si è inizializzato senza errori, l’elaborazione è sufficientemente veloce.
Ora non ci resta che lanciare al boot del sistema il file avvio.sh:
-
sudo crontab -e
andiamo in fondo al file e aggiungiamo:
@reboot sh /home/pi/avvio.sh
usciamo e riavviamo.
Fase 4: Creazione sensore Home Assistant
Ora dovremo creare un sensore per ogni persona seguendo l’esempio sotto:
Da notare che dopo 10 secondi il sensore torna allo stato iniziale, quando qualcuno viene riconosciuto lo stato è “presente”
Ringraziamo ancora Nicola Bertelli per questa utilissima guida e godiamoci il video di fine articolo dove potremo osservare il sistama di Nicola in funzione. Buona visione!
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.