Blog

Presentazione del Pacchetto Python API (pyvar) di Variscite

Monday, 03 Jan 2022  |  Diego Dorta

1. Panoramica

Lo scopo di questo articolo è presentare il pacchetto Python pyvar di Variscite e mostrare come iniziare a utilizzare le API di Machine Learning (ML) di pyvar. Queste API sono state progettate per aiutare gli utenti alle prime armi ad esplorare il campo del ML e a sviluppare le proprie applicazioni utilizzando telecamere, display e interfacce utente, focalizzandosi sui System on Module (SoM) dalla famiglia i.MX8.

 

Se è la prima volta che esplorate questo ambito, per familiarizzare con AI/ML e i suoi esempi di applicazione, vi suggeriamo di leggere il seguente articolo:

 

 

Prima di esplorare il pacchetto pyvar e acquisire maggiori informazioni sulla sua struttura e mostrare alcuni esempi, ci soffermeremo brevemente su alcuni importanti aspetti: l’acceleratore hardware di Artificial Intelligence (AI), la formazione e quantizzazione del modello. La comprensione di questi argomenti aiuta a comprendere come funziona il machine learning su sistemi embedded e probabilmente consentirà di ottenere le migliori performance di inferenza per le vostre applicazioni di machine learning.

 

Per quanto riguarda la famiglia dei SOC i.MX8 di NXP, l’i.MX8M Plus è dotato di un acceleratore AI dedicato, che gestisce in modo efficiente il processo di inferenza ML: questo motore computazionale è chiamato Neural Processing Unit (NPU). Il pacchetto pyvar non è strettamente legato alla NPU: con le API ML è possibile usare qualsiasi altro SoM della famiglia i.MX8; la differenza è che il processo di inferenza utilizza la GPU o la CPU, anziché la NPU, e questo potrebbe, probabilmente, implicare un tempo di inferenza più lungo.

 

La NPU gestisce operazioni a virgola fissa a 8 bit, il che si traduce nella possibilità di disporre di un modello ML con unità aritmetiche semplici e piccole, evitando calcoli con virgola mobile più grandi. Per utilizzare le capacità di calcolo della NPU e ottenere le migliori prestazioni di inferenza possibili, i modelli di rete a virgola mobile a 32 bit devono essere convertiti in modelli di reti a virgola fissa a 8 bit.

 

Questa conversione è nota come quantizzazione e sono disponibili due possibili approcci per quantizzare un modello affinchè funzioni correttamente con la NPU. Il primo consiste nell’addestrare il modello tenendo in considerazione la quantizazione (QAT) già in fase di addestramento. Il secondo, che è più semplice, consiste nell’utilizzare un metodo post-addestramento che converta solo un modello addestrato nel formato richiesto dalla NPU. Il processo di conversione sarà discusso nei prossimi post del blog.

 

Il pacchetto pyvar è in licenza ai sensi dei termini BSD-3-Clause, il che significa che il suo utilizzo è gratuito e che l’utente può modificarlo a suo piacimento, fintanto che conserva l’avviso di copyright. È importante menzionare che questo pacchetto è ancora in fase di sviluppo e che noi vi invitiamo a contribuire al progetto.

 

Variscite’s Python pyvar
VAR-SOM-MX8M-PLUS System on Module

 

2. Primi passi con Pyvar

 

2.1 Configurazione BSP

 

  1. Configurare l’ultima Release Yocto usando la distro fsl-imx-xwayland (con funzioni Wayland + X11) e creare l’immagine fsl-image-qt5 che include già i pacchetti ML; in alternativa, se si preferisce un’immagine più piccola come quella fsl-image-gui, allora per aggiungere i pacchetti ML basterà seguire le seguenti istruzioni:
    a. aggiungere i pacchetti Machine Learning al file conf:
OPENCV_PKGS_imxgpu = "  
       opencv-apps  
       opencv-samples  
       python3-opencv  
" 
IMAGE_INSTALL_append = "  
    packagegroup-imx-ml  
    ${OPENCV_PKGS}  
" 
  1. Avviare la scheda usando l’immagine create (ad esempio, scrivendola su una scheda SD).

2.2 Installazione del Pacchetto Python di Variscite

 

Il pacchetto pyvar è ospitato e disponibile nel repository PyPi (https://pypi.org), la quale consente all’utente di installare facilmente il pacchetto seguendo le seguenti istruzioni:

 

  1. Nella scheda target, installare il pacchetto pyvar usando lo strumentopip3:
# pip3 install pyvar 
  1. Per assicurarsi che il pacchetto sia installato, eseguire il seguente commando per controllare la versione:
# pip3 list | grep pyvar 

Per maggiori informazioni, visitare la pagina “pyvar – primi passi”.

 

3. PyVar API

 

Il pacchetto pyvar implementa le più comuni funzionalità di ML abilitate da eIQ® ML Software Development Environment di NXP. Inoltre, fornisce utili classi multimediali per aiutare gli sviluppatori ad implementare applicazioni ML e a rendere la creazione dei loro codici il più semplice possibile.

 

Ecco un paio di esempi di moduli pyvar:

 

  • ml.engines gestisce gli engine di inferenza come as TensorFlow Lite Arm NN:

 

1 from pyvar.ml.engines.tflite import TFLiteInterpreter 
2 engine = TFLiteInterpreter(model_file_path=”path_to_your_model”) 

Per maggiori informazioni, si prega di visitare la pagina “pyvar Machine Learning API”.

 

  • multimedia gestisce casi multimediali come file video, fotocamere e dispositivi:

 

1 from pyvar.multimedia.helper import Multimedia 
2 multimedia = Multimedia(source=”path_to_video_file_or_camera_device”) 

Per maggiori informazioni, si prega di visitare la pagina “pyvar Multimedia API”.

 

3.1 Brevi esempi scritti con PyVar

 

Gli esempi descritti in questo articolo usano modelli quantizzati addestrati di TensorFlow Lite. Questi esempi sono stati inseriti per aiutare l’utente a comprendere come si scrive un semplice codice esplorando più casi di utilizzo con moduli PyVar. Gli esempi possono essere scaricati ed eseguiti sul target.

 

L’esempio sottostante usa un modulo starter di TensorFlow e esegue l’inferenza su un’immagine usando TensorFlow Lite come engine di inferenza:

 

# curl -LJO  
https://github.com/varigit/pyvar/raw/master/examples/ml/detection/image_detection_tflite.py 
# python3 image_detection_tflite.py 

Altri comuni esempi di ML scritti usando pyvar:

 

 

Per maggiori informazioni, si prega di consultare la documentazione complete di Python API di Variscite, disponibile su python.variscite.com.

Ultimi post
Software releases
August 2025 Software Releases
Rimani aggiornato con gli aggiornamenti software: mantieni i tuoi SoM Variscite sempre al massimo delle loro prestazioni con le nostre ultime versioni software.
 
10.09.2025
Sala Stampa
Variscite and Memfault
Variscite ha stretto una partnership strategica con Memfault per rafforzare le funzionalità di gestione dei dispositivi in tutto il suo catalogo di System on Module (SoM), compresi i moduli basati su DART-MX95, VAR-SOM-MX93, DART-MX8M-PLUSe VAR-SOM-AM62P. Questa collaborazione fornirà agli ingegneri strumenti avanzati per il monitoraggio remoto, la risoluzione dei problemi e l’aggiornamento sicuro del software.
Monitoraggio avanzato e aggiornamenti over-the-air (OTA) per dispositivi embedded
L’integrazione con la piattaforma Memfault aggiunge funzionalità di diagnostica avanzata alle soluzioni Variscite. Gli sviluppatori avranno accesso a dati preziosi dei dispositivi finali, come metriche delle prestazioni, eventi di sistema e statistiche operative, senza bisogno di accesso fisico. Uno strumento di manutenzione proattiva che permetterà agli ingegneri di individuare e risolvere i problemi senza attendere il feedback dell’utente finale.
21.05.2025
Blog
VAR-SOM-MX8M-PLUS
Nell’attuale panorama fluido di sistemi embedded, la scelta del Linux giusto può fare la differenza per il tuo progetto. Esistono diverse opzioni per la creazione di sistemi operativi embedded, ma qui ci concentreremo su due teste di serie: Yocto e Debian. Comprendere le loro specifiche caratteristiche e capacità ti aiuterà a prendere una decisione informata e fare la scelta più adatta ai requisiti della sua applicazione.
30.07.2025