Я пытаюсь развернуть эту модель mask-rcnn в android. Я смог загрузить вес кераса, заморозить модель и преобразовать ее в модель .tflite, используя toflite 1.13 toco, используя этот скрипт .
Кажется, что эта модель использует некоторые tf_ops, которые не поддерживаются в тфлите. Таким образом, мне пришлось использовать
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,tf.lite.OpsSet.SELECT_TF_OPS]
для преобразования модели. Теперь, когда я пытаюсь вывести эту модель, используя интерпретатор python, я получаю ошибку сегментации в interpreter.invoke () и происходит сбой сценария python.
def run_tf_model(model_path="mask_rcnn_coco.tflite"):
interpreter = tf.lite.Interpreter(model_path)
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()[0]
output_details = interpreter.get_output_details()[0]
print(" input_details", input_details)
print("output_details",output_details)
# Test model on random input data.
input_shape = input_details['shape']
print("input_shape tflite",input_shape)
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details['index'])
print(output_data)
Таким образом, я не могу определить, преобразованная модель была преобразована правильно или нет.
PS Я планирую использовать эту модель в android, но у меня мало опыта с android (java или kotlin) tflite api. Если кто-то может указать какие-либо ресурсы для изучения этого, это также будет полезно.
Редактировать: Я также попытался выполнить логический вывод на android с java api. Но получите следующую ошибку tensorflow/lite/kernels/gather.cc:80 0 <= axis && axis < NumDimensions(input).
Подробно в этом выпуске тензорного потока