Преобразовать модель Mask-RCNN для android с tflite - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь развернуть эту модель 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). Подробно в этом выпуске тензорного потока

...