我刚刚回顾了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.
我是否应该更改其他设置才能使其正常工作?
答案 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