lattepanda-mu-ultra-npu-inference-onnx-6.ino

LattePanda Mu Ultra : Module de calcul x86 pour l'IA embarquée · Fichier : lattepanda-mu-ultra-npu-inference-onnx-6.ino · Langage : python · Usage : Exécuter une inférence d'image avec OpenVINO sur le NPU Intel de la carte LattePanda Mu Ultra.

Utilise la bibliothèque Intel OpenVINO pour accélérer un modèle ONNX sur l'unité NPU (Neural Processing Unit) intégrée, exploitant les 115 TOPS de la carte.

Matériel : LattePanda Mu Ultra (Lunar Lake). Logiciel : Ubuntu 24.04+, Python 3.10+, paquet 'intel-openvino-dev'. Prérequis : Convertir un modèle ONNX vers le format IR OpenVINO avec 'ovc'. Exécution : python script.py. Le pilote NPU doit être actif.

lattepanda-mu-ultra-npu-inference-onnx-6.ino

import cv2
import numpy as np
from openvino.runtime import Core

# Initialiser le noyau OpenVINO
ov_core = Core()
print("Available devices:", ov_core.available_devices)

# Charger un modèle ONNX pré-entraîné (ex: resnet50)
# Assurez-vous d'avoir un fichier model.xml et model.bin ou .onnx converti
model_path = "resnet50.xml"

def load_model_and_infer():
    try:
        # Charger le modèle sur le NPU (device='NPU')
        compiled_model = ov_core.compile_model(model_path, "NPU")
        
        # Récupérer les entrées
        input_layer = compiled_model.input(0)
        output_layer = compiled_model.output(0)
        
        # Préparer les données d'entrée (image dummy 224x224 pour démonstration)
        input_shape = input_layer.shape
        # Adapter la forme selon le modèle, souvent NHWC ou NCHW
        if len(input_shape) == 4:
            input_data = np.random.rand(*input_shape).astype(np.float32)
        else:
            raise ValueError("Shape unexpected")

        print("Running inference on NPU...")
        import time
        start_time = time.time()
        
        # Exécuter l'inférence
        results = compiled_model(input_data, output_layer)
        
        end_time = time.time()
        print(f"Inference completed in {end_time - start_time:.4f} seconds")
        print(f"Output shape: {list(output_layer.shape)}")
        
    except Exception as e:
        print(f"Error: {e}")
        print("Please ensure you have installed intel-openvino-dev and converted a model to IR format.")

if __name__ == "__main__":
    load_model_and_infer()

← Retour à la fiche