Collegamento dell'AI di bordo con il rilevamento del volto sull'OrangePi 5

Ari Mahpour
|  Creato: novembre 27, 2024  |  Aggiornato: gennaio 17, 2025
Collegamento dell'AI di bordo con il rilevamento del volto sull'OrangePi 5

Gli engine di inferenza AI stanno diventando sempre più popolari ai margini della rete. Troviamo algoritmi di machine learning e persino grandi modelli linguistici che vengono trasferiti su sistemi embedded sia nell'ambito hobbistico che commerciale. In questo progetto, costruiremo un rilevatore di volti in tempo reale utilizzando un Orange Pi 5 alimentato dal processore Rockchip 3588. Ciò significa che rileveremo, in tempo reale, i volti umani dal flusso video della nostra webcam.

Configurazione del Progetto

Per iniziare, useremo un Orange Pi 5, una webcam USB e il codice nel mio repository pubblico. Puoi fare riferimento a Introduzione a Orange Pi 5 e al processore Rockchip RK3588 su come configurare il tuo Orange Pi 5. La bellezza di questo esempio è che può anche funzionare su un PC o su qualsiasi altro dispositivo embedded ad alta potenza che esegue Linux (ad esempio, Raspberry Pi 5). Dopo aver configurato e avviato il tuo Orange Pi 5 (o altro dispositivo), dovremo installare alcune librerie. Questo esempio è progettato intorno a Linux (specificamente su Ubuntu), quindi assumeremo che tu abbia accesso al gestore di pacchetti Debian. Da un terminale, esegui il seguente comando:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

Questo installerà tutti i pacchetti necessari per eseguire la demo. Installa anche il pacchetto Python OpenCV utilizzando pip:

pip3 install opencv-python

Puoi anche consultare il README per ulteriori passaggi per validare la tua configurazione.

CPU vs. GPU vs. FPGA

In AI Vision con il Kria KV260 Vision AI Starter Kit, abbiamo dimostrato come costruire un motore di inferenza AI per il riconoscimento facciale utilizzando un FPGA, ma il livello di complessità era estremamente alto. In questo esempio, esploreremo un modo significativamente più semplice di fare la stessa cosa. Questo è più semplice perché scarichiamo la complessità su CPU o GPU, entrambe le quali esploreremo in questo articolo. La vera bellezza è quanto bene OpenCV sia ottimizzato per i nostri computer. Utilizzare la libreria astrae completamente tutte le complessità dell'apprendimento automatico che abbiamo sperimentato nel tentativo di costruire la nostra rete neurale su un FPGA.

Panoramica del Codice e Esecuzione del Progetto

Il codice è abbastanza semplice. Possiamo suddividerlo in alcuni passaggi:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Configura OpenCL (ad esempio, determina se viene utilizzata una GPU).
  2. Carica il Classificatore a Cascata
  3. Cattura il flusso video e impostalo in scala di grigi
  4. Esegui il Classificatore a Cascata con OpenCV
  5. Se viene rilevato un volto, disegna un riquadro blu intorno ad esso
  6. Ripeti i passaggi dal 3 al 5 in un ciclo fino a quando non viene soddisfatta la condizione di "terminazione" (ad esempio, premendo "q" o chiudendo la finestra popup)

La vera magia qui risiede nel "Classificatore a Cascata" che stiamo sfruttando con OpenCV. Si tratta di uno strumento basato sull'apprendimento automatico per il rilevamento di oggetti che funziona attraverso una serie di fasi progressivamente complesse (simili al concetto di rete neurale). Pensalo come una linea di assemblaggio finemente regolata, dove ogni fase ha un compito specifico: rilevare caratteristiche specifiche come bordi, angoli o forme. Se una regione dell'immagine supera tutti questi checkpoint di ispezione, allora viene contrassegnata come un oggetto rilevato. In caso contrario, viene scartata in anticipo per risparmiare tempo ed energia di elaborazione.

Un classificatore a cascata riguarda velocità ed efficienza. Utilizza caratteristiche predefinite (ad esempio, modelli come bordi o contrasti) e le elabora per fasi, rendendolo perfetto per compiti in tempo reale su dispositivi con capacità di elaborazione limitate. Le reti neurali, d'altra parte, giocano in un'altra lega. Imparano automaticamente le caratteristiche direttamente dai dati, quindi possono gestire scenari più complessi e variati. Questa potenza, tuttavia, ha un prezzo: le reti neurali richiedono molte più risorse computazionali e tempo. I classificatori a cascata sono veloci e leggeri ma meno flessibili, mentre le reti neurali sono robuste ma esigenti in termini di risorse. Si tratta di scegliere lo strumento giusto per il lavoro.

Nel nostro caso, abbiamo la possibilità di utilizzare un modello pre-addestrato, il Rilevatore di Volto Frontale Haar (sotto forma di file XML), che sa esattamente cosa cercare in un volto e cosa filtrare. Praticamente parlando, questo è sufficientemente buono come semplice esempio che abbiamo esplorato. Come accennato sopra, non sarà preciso come un sistema più avanzato ma è ancora sufficientemente buono per la maggior parte degli esempi semplici di rilevamento del volto.

Per eseguire il codice, tutto ciò che devi fare è:

python3 face_detection.py --use-gpu

O salta il flag --use-gpu se non hai una GPU sul tuo dispositivo (ad esempio, se non stai usando un Orange Pi 5). A questo punto, dovrebbe apparire una piccola finestra e un riquadro blu dovrebbe comparire sopra il tuo volto. Nel mio caso, è apparso immediatamente:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
Figura 1: Rilevamento del volto in tempo reale utilizzando OpenCV e una Webcam

Conclusione

Questo progetto dimostra quanto la rilevazione facciale in tempo reale sia diventata accessibile con strumenti come OpenCV e dispositivi come l'Orange Pi 5. Sfruttando il classificatore a cascata leggero ed efficiente (attraverso il caricamento di un file XML pre-addestrato), abbiamo costruito un esempio funzionale senza le complessità delle reti neurali o della programmazione FPGA. Sebbene questo approccio abbia le sue limitazioni, come la gestione di illuminazione variabile o angolazioni diverse, è un punto di partenza perfetto per sperimentare con l'AI edge.

Con solo alcune librerie e una configurazione minima, puoi replicare questo progetto su un dispositivo embedded o anche su un PC standard. Man mano che i motori di inferenza AI continuano a migliorare, aspettati di vedere modelli più sofisticati funzionare su dispositivi con risorse limitate, rendendo l'IA avanzata più accessibile a tutti. Per visualizzare il repository che contiene tutto il codice per iniziare, visita https://gitlab.com/ai-examples/orange-pi-face-detection.

Sull'Autore

Sull'Autore

Ari è un ingegnere con una solida esperienza nei campi di progettazione, produzione, collaudo e integrazione di sistemi elettrici, meccanici e software. Ama riunire gli ingegneri addetti alla progettazione, alla verifica e al collaudo e farli lavorare insieme come un'unità affiatata.

Risorse correlate

Documentazione Tecnica Correlata

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.