Riconoscimento facciale con Raspberry e integrazione in Home Assistant

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

di Vincenzo Caputo

15 Febbraio 2019

L'angolo dei lettori

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

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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:

  • 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

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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:

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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.

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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:

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

Da notare che dopo 10 secondi il sensore torna allo stato iniziale, quando qualcuno viene riconosciuto lo stato è “presente”

Riconoscimento facciale con Raspberry e integrazione in Home Assistant

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.

Vincenzo Caputo

Vincenzo Caputo

Nato a Matera, il 1° novembre 1977. Sono da sempre appassionato di tecnologia e ho un'esperienza lavorativa ventennale nel settore IT. Mi piace sperimentare e cercare sempre nuove soluzioni e soprattutto mi piace comunicare le mie esperienze agli altri.

Disqus loading...