現状
AndroidStuidioに自分で転移学習したTensorflowLiteを動かしたいが、Tensorflow 1.xでいろいろ試してだめだったため、Tenosrflow2で動かしたところ異なる部分でつまづいてしまった。
環境
windows 10
Android Studio 4.01
Tensorflow 2.4.0rc0
Tensorflowモデル ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8
エラーの内容
作成したtfliteファイルをAndroidStudioで動かしたときのエラー
java.lang.IllegalArgumentException: Cannot copy to a TensorFlowLite tensor (normalized_input_image_tensor) with 4 bytes from a Java Buffer with 1080000 bytes.
以前Tensorflow1.15で試したときは以下のように出た。
java.lang.IllegalArgumentException: Cannot copy to a TensorFlowLite tensor (normalized_input_image_tensor) with 270000 bytes from a Java Buffer with 1080000 bytes.
このときはconfigファイルでinput_shapeを変え何とかなったがあまりに数値が違うためtfliteファイルのconvertの時点で間違っていると考えた。TFLiteConverter.from_saved_modelの公式の記事よりこの変換方法ではshape を指定するオプションを持たないそうなのでこれが原因だと思い
model = tf.saved_model.load(export_dir) concrete_func = model.signatures[ tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY] concrete_func.inputs[0].set_shape([1, 256, 256, 3]) converter = TFLiteConverter.from_concrete_functions([concrete_func])
こちらのコードを実行したところconcrete_func.inputs[0].set_shape([1, 256, 256, 3])の部分で以下のエラーが発生しこれ以上分からなくなってしまった。
ValueError: Shapes must be equal rank, but are 2 and 4
さいごに
AndroidStudioでTFliteを動かすためいろいろと試していますがどれも上手くいきません。
もしこの方法でも異なる方法でもできた方、どんなことでもいいので意見を頂けるととても助かります。よろしくお願いいたします。
あなたの回答
tips
プレビュー