Dotenv

Computer Vision: un nuovo software di Object Detection

Analisi del contesto

In DotEnv diamo ampio spazio alle idee innovative dei nostri collaboratori. Da una semplice ipotesi può nascere qualcosa di veramente complesso e tecnologicamente avanzato. Proprio seguendo questo iter, ha preso forma tra le mura della nostra azienda, un innovativo software di Computer Vision basato su Object Detection. L’obiettivo è individuare in una o più sezioni di un video live o registrato qualsiasi oggetto. In questo modo, l'utente utilizzatore del software può scegliere precise aree in cui attuare un controllo diversificato applicando la rilevazione (o detection).

Sviluppo software

Il team di sviluppo ha realizzato un’applicazione web con client in React (un framework di Javascript) che si appoggia su un backend in Flask (framework di Python per applicazioni web). Per quanto riguarda la libreria per la Computer Vision, si è scelto di utilizzare openCV di Python, mentre come algoritmo per il riconoscimento degli oggetti la preferenza è caduta su YOLO.

Per la parte di Machine Learning che riguarda l'addestramento della rete neurale che riconosce gli oggetti, è stato utilizzato il Deep Learning, una tecnologia che si basa su un set di dati forniti in partenza, e non durante il suo utilizzo. Nello specifico, per sfruttare l’Object Detection occorre utilizzare gruppi di immagini che contengono più oggetti sui quali si vuole allenare il modello. A questo punto si è passati alla fase di Labeling ossia identificare gli oggetti all’interno delle immagini, indicando al modello le loro dimensioni e le loro posizioni. Questa operazione viene svolta direttamente dall'utente poiché per ciascuna immagine è necessario indicare l’oggetto in questione da individuare.

Infine, è seguita la fase di Training, durante la quale vengono caricate tutte le immagini precedentemente sottoposte a Labeling, in modo che la rete neurale inizi a comprendere realmente qual è l’oggetto in esame.

Per trasparenza totale nel nostro lavoro, ci piace condividere tutti gli aspetti dello sviluppo software, anche i più complessi. A tal proposito, in fase di Training del modello, è stata necessaria un'importante capacità di calcolo da parte dell’hardware poiché i dati da analizzare erano moltissimi. Per superare il problema, l’Università degli Studi di Ferrara ha messo a disposizione del nostro team Coka, un cluster con una grande potenza di calcolo.

Un'ulteriore complessità ha riguardato il Labeling e il Training. La lunghezza e la laboriosità della fase di Labeling sono dipese dalle immagini utilizzate per allenare il modello; per il Training invece, tutto è dipeso dalla quantità di immagini o video da analizzare affinché il modello apprendesse e, quindi, riuscisse a riconoscere un determinato oggetto.
Infine, la terza complessità è stata l'inferenza su video: il valore standard per un'analisi accurata è dai 30 fps ai 60 fps (fotogrammi per secondo / frame per second). Per eseguire tale procedura, la macchina impiega fino a 20 volte in più della durata del video, poiché, l'analisi di ogni singolo frame richiede diverso tempo.

Tramite Hook il software può integrarsi facilmente con applicativi terzi per inviare notifiche live di ciò che sta avvenendo, per permettere un'azione di qualsiasi genere.

Nonostante queste difficoltà, il nostro team DotEnv è riuscito brillantemente a portare al termine lo sviluppo di questo nuovo software di Computer Vision, ottenendo la registrazione alla SIAE prima di immetterlo sul mercato.

Un esempio di applicazione del software di Computer Vision

Le applicazioni di questo software sono numerose. Un esempio è rappresentato dal contesto industriale: pensiamo a un magazzino logistico dotato di rulli che trasportano pacchi assolutamente identici. Come è possibile controllare che siano tutti esenti da difetti? È possibile con l’Object Detection, ovvero addestrando il sistema a identifica una differenza tra i pacchi e inviare un alert ogni volta che l'intelligenza artificiale riconosce l'anomalia, all'interno della sezione di video prestabilita. E se ci fossero più tipologie di pacchi diversi da controllare? Grazie la fase di Training, è possibile istruire il software a identificare oggetti diversi tra loro.

Cerchi un sostenitore
delle tue idee?
Noi ci siamo.