#python #tensorflow #onnx
#python #tensorflow #onnx
Вопрос:
У меня есть несколько моделей для зоопарка моделей ONNX. Я хотел бы использовать модели отсюда в приложении TensorFlow Lite (Android), и у меня возникли проблемы с выяснением того, как преобразовать модели.
Из того, что я прочитал, процесс, которому мне нужно следовать, заключается в преобразовании модели ONNX в модель TensorFlow, затем преобразовать эту модель TensorFlow в модель TensorFlow Lite.
import onnx
from onnx_tf.backend import prepare
import tensorflow as tf
onnx_model = onnx.load('./some-model.onnx')
tf_rep = prepare(onnx_model)
tf_rep.export_graph("some-model.pb")
После выполнения вышеуказанного у меня есть файл some-model.pb, который, как я полагаю, содержит график зависания TensorFlow. Отсюда я не уверен, куда идти. При поиске я нахожу множество ответов, относящихся к TensorFlow 1.x (что я понимаю только после того, как найденные мной образцы не выполняются). Я пытаюсь использовать TensorFlow 2.x.
Если это имеет значение, то конкретная модель, с которой я начинаю, находится здесь.
Согласно ReadMe.md форма входных данных равна (1x3x416x416), а форма выходных данных равна (1x125x13x13).
Ответ №1:
Я получил свой ответ. Я смог использовать приведенный ниже код для завершения преобразования.
import tensorflow as tf
converter = tf.compat.v1.lite.TFLiteConverter.from_frozen_graph('model.pb', #TensorFlow freezegraph
input_arrays=['input.1'], # name of input
output_arrays=['218'] # name of output
)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS]
# tell converter which type of optimization techniques to use
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tf_lite_model = converter.convert()
open('model.tflite', 'wb').write(tf_lite_model)