Face Mask Recognition: 2 metodologie a confronto, qual è l’approccio low budget migliore?

Team R&D Research and Development

Face Mask Recognition

A differenza del primo articolo, in questa seconda parte vedremo meglio le tecnologie utilizzate per la realizzazione dell’esperimento di IoT, Machine Learning e Cloud Computing per il Face Mask Recognition, portato a termine all’interno del programma di Ricerca e Sviluppo interno a Plansoft.

L’esperimento di Face Mask Recognition

L’esperimento aveva come obiettivo quello di rilevare, da un stream video fornito da una camera montata sulla board Raspberry PI 3, la presenza di persone che indossano o meno la mascherina.

L’evoluzione dell’esperimento in sé ha portato, come spiegato nell’articolo di Andrea Amico, a diverse metodologie in base ai contesti reali nel quale l’esperimento poteva avere applicazione.

In questo articolo metteremo il focus sull’architettura e sul software dell’intera applicazione.

Software

Python è la tecnologia utilizzata per lo sviluppo software: dall’implementazione su Raspberry alle API sul cloud di AWS. È stata scelta questa tecnologia perché ci ha permesso di ottenere un’ottima velocità di sviluppo, grazie anche alla perfetta compatibilità con l’SDK delle API AWS (boto3) e al supporto sul servizio AWS Lambda per la computazione Serverless.

L’input della camera, connessa al Raspberry, viene gestito tramite OpenCV per avere ottime performance e poca latenza. Lo scopo di utilizzare OpenCV è quello di inviare all’endpoint d’inferenza solo lo stream video dove è realmente presente almeno un volto, altrimenti si effettuerebbero delle richieste senza cognizione di causa.

L’endpoint dedicato all’inferenza in tempo reale analizza lo stream video frame per frame (con una frequenza settabile dall’applicazione) e applica il modello addestrato in precedenza sul cloud AWS. In risposta avremo un JSON contenente una lista di oggetti che riportano le coordinate del volto e della mascherina (se presente) sul frame analizzato.

Questa risposta (con un delay minimo e dipendente dalla tipologia d’istanza AWS utilizzata) ci permette di fornire un feedback visivo istantaneo, come riportato in figura (sample video):

Feed back visivo di allarme 

Lo scambio dati tra l’edge e il cloud avviene tramite credenziali memorizzate in ambiente. Le immagini da inserire nel corpo della richiesta all’endpoint di inferenza possono essere codificate in base64 oppure possono essere caricate su un bucket apposito S3, per poi inserire, nel corpo della richiesta, la locazione in S3 (o l’url, se pubblico).

Lo scenario finale propone la soluzione in cloud; l’utilizzo dell’edge computing prevede l’addestramento sulla macchina locale e la creazione di un endpoint di inferenza, che agisce sul modello locale sfruttando la eGPU Google Colab per aumentare le prestazioni.

Per avere un risultato sfruttabile a livello commerciale, si preferisce sfruttare la potenza e la scalabilità del cloud computing.

"AWS è sicuramente un tool molto potente e necessario per una moltitudine di progetti, non solo IoT o Deep Learning."

Cloud AWS

In questo scenario il cloud computing si è rivelata una risorsa indispensabile, poiché le esigenze dell’esperimento richiedevano alte prestazioni per una analisi video in realtime.

I servizi di AWS forniscono scalabilità, versatilità, alta disponibilità e alte prestazioni che soddisfano ogni tipo di situazione / requisiti.

Nella nostra applicazione abbiamo utilizzato servizi dedicati al Deep Learning (come Sagemaker), servizi dedicati alla computazione Serverless (come Lambda), servizi dedicati allo storage in cloud (come S3), e infine servizi di gestione dati stream come Kinesis e API Gateway per esporre delle API. Tutti questi servizi sono gestiti tramite dei ruoli definiti nel servizio di management IAM.

Il processo di addestramento del modello avviene in cloud tramite un notebook, che riesce a istruire il modello, utilizzando i dati caricati su S3, per poi salvarlo nel bucket definito in configurazione. In questo modo possiamo avere più versioni del modello.

Da tale modello sarà poi possibile effettuare il deploy di un endpoint di inferenza che, in seguito, verrà utilizzato per applicare il modello predefinito e ricevere i risultati in output.

I file relativi al notebook di addestramento, di deploy e creazione endpoint sono stati rilasciati sotto licenza open source su Github. All’interno della repository Github è possibile trovare anche gli script per l’implementazione dell’architettura commerciale, che troverete andando avanti con l’articolo.

Una volta terminato l’addestramento e il deploy dell’endpoint Sagemaker per l’inferenza in realtime, abbiamo costruito un layer API Restful tramite API Gateway e Lambda, che ci permette di astrarre l’endpoint Sagemaker di un livello.

Da Raspberry (o qualsiasi altro dispositivo) possiamo intervistare l’endpoint, tramite le credenziali AWS, esposto da Amazon API Gateway per ricevere i risultati dell’inferenza.

Le prestazioni sono veramente ottime e la latenza è praticamente assente se non per il protocollo http. Tutto questo grazie anche alla facilità di deploy verso qualsiasi tipologia di istanza: con GPU, senza, più ram, più GPU etc.

L’architettura finale della nostra applicazione è raffigurata nella figura seguente:

Architettura
Architettura dell’applicazione 

L’architettura può essere migliorata a tal punto da avere più video stream centralizzati in cloud AWS, sui quali possono essere eseguite delle pipeline di Sagemaker per avere in risposta uno stream di dati. Di seguito l’architettura:

Architettura development

Nell’esempio in figura dovremo affidarci al servizio Kinesis per poter gestire correttamente il carico dei video stream e la mole di dati.

Conclusioni

Lo sviluppo del progetto tramite il cloud computing ha facilitato notevolmente il lavoro, sia la parte di addestramento e inferenza, sia la parte relativa alle API o recupero dati in realtime tramite kinesis.

AWS è sicuramente un tool molto potente e necessario per una moltitudine di progetti, non solo IoT o Deep Learning.

Il costo di questo progetto è veramente basso, se guardiamo alle tecnologie utilizzate e al risultato finale. Non superiamo i 5$ di attivazione e addestramento, più gli 8$ mensili con un utilizzo giornaliero da più di 200 richieste (supponendo come caso reale l’azienda Plansoft, posizionando l’esperimento all’ingresso della sede). Un vero e proprio low budget project.

Scopri la divisione Plansoft Research

Social Sharing

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *