Вы можете проверить спецификации некоторых моделей, выполнив эти команды в python Как преобразовать выходные данные отinterter.run в java Печать input_details приводит к:
[{'name': 'normalized_input_image_tensor', 'index': 306, 'shape': array([ 1, 320, 320, 3], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0)}]
форме массива [1, 320, 320, 3], поэтому вход должен быть изображением 320x320.Детали вывода:
[{'name': 'raw_outputs/box_encodings', 'index': 307, 'shape': array([ 1, 2034, 4], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0)}, {'name': 'raw_outputs/class_predictions', 'index': 308, 'shape': array([ 1, 2034, 91], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0)}]
У нас есть 2 выхода со следующей формой: [1, 2034, 4] и [1, 2034, 91]. Поэтому подготовьте 2 массива с точным размером, например, в java android
private float[][][] out1;
private float[][][] out2;
out1 = new float[1][2034][4];
out2 = new float[1][2034][91];
затем добавьте их на пример карты java:
private Map<Integer, Object> output_map = new TreeMap<>();
output_map.put(0, out1);
output_map.put(1, out2);
и запустите с:
tflite.runForMultipleInputsOutputs(input_data, output_map);
tflite - интерпретатор, input_data - преобразованное изображение
У вас будут данные в массивах.Я предполагаю, что в out1 будут ограничивающие прямоугольники, а в out2 классы / оценки?Вам нужно провести еще несколько тестов.
Пример кода https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/java/demo/app/src/main/java/com/example/android/tflitecamerademo Конечно, вам нужно внести некоторые изменения, чтобы он работал с моделью обнаружения объектов.