在Android Studio上使用tflite获取大图像

时间:2018-04-11 00:35:58

标签: android-studio tensorflow

我刚刚回顾了poets 2的tflite版本的tensorflow,并使用提供的示例应用程序,对图像分类过程进行了反向设计,以便将其功能添加到我的应用中。但是,我发现在尝试对图像进行分类时,如果它的分辨率高于224px宽或高,则会发出“indexoutofbounds”错误。

我正在从手机摄像头捕获图像,将其存储在本地,将其内容读取到位图变量,然后使用ImageClassifier中的classifyFrame函数(来自Google在教程中提供的应用程序)来获取结果。仅在我将位图数据调整为224x224时有效。

我尝试将DIM_IMG_SIZE_X和DIM_IMG_SIZE_Y变量更改为ImageClassifier类中的更高维度,但它不起作用。还试图将ImageClassifier初始化程序中分配的内存(4 * DIM_BATCH_SIZE * DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y * DIM_PIXEL_SIZE);)放到8x和16x,但这也发出了一个错误,说实际上Y的大小应为X.

我是否应该更改其他设置才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

也许您遇到了同样的问题,因为它已将.tflite文件中的输入形状定义为224x224,因此您应该使用新的img大小重建新的.tflite文件。例如,mobilenet:

bazel-bin/tensorflow/contrib/lite/toco/toco \
  --input_file=$(pwd)/mobilenet_v1_1.0_224/frozen_graph.pb \
  --input_format=TENSORFLOW_GRAPHDEF \
  --output_format=TFLITE \
  --output_file=/tmp/mobilenet_v1_1.0_224.tflite \
  --inference_type=FLOAT \
  --input_type=FLOAT \
  --input_arrays=input \
  --output_arrays=MobilenetV1/Predictions/Reshape_1 \
  --input_shapes=1,300,300,3