【问题标题】:Tensorflow Lite GPU Support on object detector对象检测器上的 Tensorflow Lite GPU 支持
【发布时间】:2019-01-29 14:49:01
【问题描述】:

我已阅读页面https://www.tensorflow.org/lite/performance/gpu 我想知道是否有人可以帮助我弄清楚如何将我的输入塑造成“MobileNet SSD 对象检测”。你只会得到一个文件:“mobile_ssd_v2_float_coco.tflite”

我尝试了 320x320*3*4,因为如果我尝试了 300x300 的“旧”图像分辨率,我会收到错误消息,指出数组大小不匹配,而新大小与 320x320 匹配。

但是现在当我调用 run(input, output) 时,该方法永远不会返回...没有错误或任何东西:(

有没有人有什么建议,因为我现在真的在抓稻草。

提前谢谢你。

【问题讨论】:

  • 您是否找到了使用 gpu 在 android 上运行此模型的解决方案?
  • 另外runForMultipleInputsOutputs通常用于对象检测示例
  • 不,如果我禁用 GPU 委托,它就会半工作。但只是为了从张量中获取输出。检测器的 GPU 版本删除了最后一步,因此在他们的示例中它不是替代品。你懂我的意思吗? :)
  • @SteffenVangsgaard 我也遇到了完全相同的问题。我改成320x320quantized=false,现在报错Cannot copy between a TensorFlowLite tensor with shape [1, 2034, 4] and a Java object with shape [1, 10, 4].你能解决这个问题吗?

标签: android tensorflow-lite


【解决方案1】:

您可以通过在 python How to convert output from interpreter.run in 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 当然,您需要进行一些更改,以便它可以与对象检测模型一起使用。

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2019-11-14
    • 2021-01-26
    • 1970-01-01
    • 2019-11-12
    • 2021-10-05
    • 2021-06-08
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多