Je développe une application intégrée Tensorflow utilisant TF lite sur le Raspberry Pi 3b, exécutant Raspbian Stretch. J'ai converti le graphique au format flatbuffer (lite) et j'ai construit la bibliothèque statique TFLite nativement sur le Pi. Jusqu'ici tout va bien. Mais l'application est Python et il ne semble pas y avoir de liaison Python disponible. Le guide de développement de Tensorflow Lite ( https: //www.tensorflow .org/mobile/tflite/devguide ) indique "Il existe des plans pour Python liaisons et une application de démonstration." Pourtant, il y a du code wrapper dans/tensorflow/contrib/lite/python/interpreter_wrapper qui possède toutes les méthodes d'interpréteur nécessaires. Pourtant, appeler cela depuis Python m'échappe.
J'ai généré un wrapper SWIG mais l'étape de construction échoue avec de nombreuses erreurs. Il n'y a pas de fichier readme.md décrivant l'état de l'interpréteur_wrapper. Donc, je me demande si le wrapper a fonctionné pour les autres et je dois persister ou est-il fondamentalement cassé et je dois chercher ailleurs (PyTorch)? Quelqu'un a-t-il trouvé un chemin vers les liaisons TFLite Python pour le Pi3?
J'ai pu écrire python scripts pour faire la classification 1 , détection d'objet (testé avec SSD MobilenetV {1,2}) 2 , et la segmentation sémantique de l'image sur un x86 exécutant Ubuntu et une carte ARM64 exécutant Debian.
Concernant l'utilisation de l'interpréteur TensorFlow Lite de Python, l'exemple ci-dessous est copié à partir de documentation . Le code est disponible sur la branche master
de TensorFlow GitHub .
L'exemple suivant montre comment utiliser l'interpréteur TensorFlow Lite Python lorsqu'il est fourni un fichier FlatBuffer TensorFlow Lite. L'exemple montre également comment exécuter l'inférence sur des données d'entrée aléatoires. Exécuter help(tf.contrib.lite.Interpreter)
dans le terminal Python pour obtenir une documentation détaillée sur l'interpréteur.
import numpy as np
import tensorflow as tf
# Load TFLite model and allocate tensors.
interpreter = tf.contrib.lite.Interpreter(model_path="converted_model.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)