IA sul dispositivo invece che nel cloud: elaborazione delle immagini su hardware embedded

Wärmebild eines Kopfes in Falschfarben, das erkannte Gesicht ist mit einer Ellipse markiert

IA e machine learning

Un dispositivo deve analizzare da sé le immagini – sul campo, in laboratorio o sulla macchina. Il cloud sarebbe comodo, ma tempi di risposta, protezione dei dati e assenza di connessione di rete spesso lo sconsigliano. Allora l'elaborazione delle immagini deve girare su hardware limitato, ed è proprio lì che falliscono molti approcci che sul PC dello sviluppatore sembravano funzionare bene.

Perché sul dispositivo?

  • Tempi di risposta: le decisioni alla cadenza della macchina non tollerano una deviazione attraverso la rete.
  • Disponibilità: il dispositivo funziona anche senza connessione a Internet.
  • Protezione dei dati: le immagini di persone o di campioni di pazienti non lasciano il dispositivo.
  • Costi correnti: nessuna tariffa per immagine e nessuna dipendenza da un fornitore cloud.

Il cloud resta utile per l'addestramento, le analisi su molti dispositivi e gli aggiornamenti. Spesso si è dimostrata valida questa suddivisione: apprendere nel data center, decidere sul dispositivo.

Cloud o dispositivo?

CriterioCloudHardware embedded
Tempi di risposta dipendenti dalla rete pianificabili, in cadenza
Potenza di calcolo scalabile praticamente a piacere limitata, il modello deve adattarsi
Protezione dei dati le immagini lasciano il dispositivo le immagini restano in locale
Funzionamento senza rete non possibile possibile
Aggiornamento del modello centrale e semplice tramite il processo di aggiornamento del dispositivo
Costi correnti, in base all'uso una tantum per hardware e ottimizzazione

È l'hardware a determinare il metodo

Le piattaforme embedded vanno dal microcontrollore ai processori ARM fino a moduli con GPU propria o acceleratore IA. Ogni classe ha limiti diversi di memoria, potenza di calcolo ed energia. Per questo l'hardware di destinazione va definito all'inizio del progetto, non alla fine. Una rete che gira in modo fluido su una scheda grafica può essere molte volte troppo lenta su un piccolo processore ARM.

Rendere snelli i modelli

  • Scegliere architetture di rete più piccole, sviluppate per dispositivi mobili.
  • Ridurre le immagini in ingresso o analizzare solo la porzione di immagine rilevante.
  • Quantizzare: convertire i pesi da numeri in virgola mobile a 32 bit in interi a 8 bit. Secondo la documentazione di LiteRT di Google (in precedenza TensorFlow Lite), un modello diventa così circa quattro volte più piccolo e gira sulla CPU in modo nettamente più veloce. La perdita di precisione è per lo più ridotta, ma va verificata con immagini reali.
  • Usare un ambiente di runtime adatto all'hardware, ad esempio ONNX Runtime, LiteRT o gli strumenti del produttore del chip.
  • Anteporre una pre-elaborazione classica, in modo che la rete debba valutare solo i casi difficili.

Misurare i tempi di esecuzione – sul dispositivo reale

Misuri il tempo di inferenza sempre sull'hardware di destinazione e non solo come valore medio. Per la cadenza contano anche i valori anomali. Un semplice script di misura con ONNX Runtime:

import statistics

import time



import numpy as np

import onnxruntime as ort



sitzung = ort.InferenceSession("modell_int8.onnx", providers=["CPUExecutionProvider"])

eingang = sitzung.get_inputs()[0]

form = [d if isinstance(d, int) else 1 for d in eingang.shape]

daten = np.random.rand(*form).astype(np.float32)  # ingresso ipotizzato come float32



for _ in range(10):  # riscaldamento

    sitzung.run(None, {eingang.name: daten})



zeiten_ms = []

for _ in range(200):

    start = time.perf_counter()

    sitzung.run(None, {eingang.name: daten})

    zeiten_ms.append((time.perf_counter() - start) * 1000)



p95 = statistics.quantiles(zeiten_ms, n=20)[-1]

print(f"Median {statistics.median(zeiten_ms):.1f} ms, 95 %: {p95:.1f} ms")

A ciò si aggiungono acquisizione dell'immagine, pre-elaborazione e trasmissione del risultato. Solo la somma mostra se la cadenza viene rispettata.

Dalla pratica: trovare volti senza un'IA ad alto consumo di calcolo

Un produttore di termocamere voleva misurare la temperatura corporea delle persone. Per farlo la telecamera doveva prima trovare la posizione dei volti nell'immagine – non l'identità delle persone. Il software girava su un sistema embedded con potenza di calcolo fortemente limitata, e lampade e altre fonti di calore disturbavano il riconoscimento. Abbiamo esaminato algoritmi e reti neurali in termini di velocità e qualità di riconoscimento. Il risultato sono stati metodi propri e snelli, che distinguono in modo affidabile i volti da altre fonti di calore e girano in tempo reale sull'hardware embedded. La lezione: intelligenza sul dispositivo non significa automaticamente rete neurale sul dispositivo.

Errori tipici

  • Sviluppare un modello sul PC e portarlo sull'hardware di destinazione solo alla fine.
  • Misurare solo l'inferenza, non l'intera catena dall'acquisizione al risultato.
  • Quantizzare senza verificare di nuovo la precisione con immagini reali.
  • Trascurare il fabbisogno di memoria e lo sviluppo di calore nel funzionamento continuo.
  • Non prevedere un modo per aggiornare i modelli sul campo.
  • Impiegare reti neurali dove un metodo classico snello sarebbe più veloce e più robusto.

Come La aiutiamo

  • Studio di fattibilità per l'elaborazione delle immagini: verifichiamo quale metodo gira sul Suo hardware di destinazione alla cadenza richiesta – con misure dei tempi di esecuzione sul dispositivo reale.
  • Realizzazione: elaborazione delle immagini per sistemi embedded in C++, C# e Python, dal collegamento di telecamera e driver fino alla consegna con documentazione e codice sorgente.
  • Il Suo progetto: Richieda un progetto o fissi un primo colloquio
  • Caso di studio: Termocamere: trovare volti con hardware limitato

Dai nostri progetti: riconoscimento facciale su termocamere con hardware embedded, driver in tempo reale per termocamere. Fonti specialistiche: LiteRT – quantizzazione post-addestramento, ONNX Runtime – quantizzazione.

CONTACT

Seleziona la tua lingua

Primo colloquiofissare oraPrimo colloquiofissare ora