Guide d'utilisation du Movidius NCSDK pour l'inférence en deep learning en périphérie

Le Neural Compute Software Development Kit (NCSDK) d'Intel est un ensemble d'outils conçu pour faciliter le déploiement de modèles d'apprentissage profond sur les clés de calcul neuronal Movidius. Ce kit permet d'exécuter efficacement des réseaux de neurones sur des dispositifs périphériques à faible consommation d'énergie. Il intègre des interfaces de programmation et des utilitaires permettant de préparer, convertir et exécuter des modèles d'intelligence artificielle.

Installation et configuration initiale

Pour commencer, récupérez le dépôt officiel depuis GitHub :

git clone https://github.com/movidius/ncsdk.git

Accédez ensuite au répertoire et lancez la procédure d'installation :

cd ncsdk
make install

Premier programme de démonstration

Le kit inclut plusieurs exemples pratiques. Voici comment exécuter un exemple basique de classification d'images :

  1. Accédez au dossier des exemples : ``` cd examples/apps/hello_ncs_py
  2. Compilez le modèle graphique : ``` make
  3. Lancez le script Python : ``` python3 hello_ncs.py
    
    

Cas d'usage concrets

Classification d'images statiques

Le NCSDK est particulièrement adapté aux tâches de reconnaissance visuelle. En utilisant des architectures pré-entraînées comme SqueezeNet ou ResNet, il est possible d'obtenir rapidement des résultats de classification. Voici une implémentation personnalisée :

import numpy as np
import cv2
from mvnc import mvncapi as ncs

# Identification et ouverture du périphérique
liste_peripheriques = ncs.enumerate_devices()
cle_nerveuse = ncs.Device(liste_peripheriques[0])
cle_nerveuse.open()

# Chargement des poids du réseau
with open('modele_optimise.graph', 'rb') as fichier_graph:
    donnees_graphe = fichier_graph.read()

# Configuration du graphe d'inférence
reseau_neurones = ncs.Graph('classifieur')
fifo_entree, fifo_sortie = reseau_neurones.allocate_with_fifos(cle_nerveuse, donnees_graphe)

# Prétraitement de l'image d'entrée
img_source = cv2.imread('photo_test.jpg')
img_redimensionnee = cv2.resize(img_source, (224, 224))
tensor_entree = img_redimensionnee.astype(np.float32)

# Exécution de l'inférence
reseau_neurones.queue_inference_with_fifo_elem(fifo_entree, fifo_sortie, tensor_entree, 'objet_utilisateur')
resultat, metadata = fifo_sortie.read_elem()

# Exploitation des prédictions
# ...

# Libération des ressources
fifo_entree.destroy()
fifo_sortie.destroy()
reseau_neurones.destroy()
cle_nerveuse.close()
cle_nerveuse.destroy()

Analyse de flux vidéo en temps réel

Au-delà du traitement d'images fixes, le NCSDK peut traiter des flux vidéo en direct. En couplant une caméra USB avec la clé neuronale, on peut réaliser de la détection d'objets en continu avec une latence réduite.

Écosystème et intégrations

OpenVINO Toolkit

Le toolkit OpenVINO d'Intel complète le NCSDK en offrant un moteur d'inférence avancé et un optimiseur de modèles. Il assure la compatibilité avec plusieurs frameworks populaires comme Caffe, MXNet et TensorFlow, permettant ainsi d'améliorer les performances sur les architectures périphériques.

TensorFlow Lite

TensorFlow Lite propose un format de modèle compact adapté aux apparelis mobiles et embarqués. En convertissant un modèle TensorFlow vers ce format optimisé puis en le déployant via le NCSDK, on tire parti de l'accélération matérielle de la clé Movidius pour des inférences performantes en périphérie.

Étiquettes: Movidius NCSDK Intel Neural Compute Stick deep learning edge computing

Publié le 11 juillet à 07h53