0
votes

I have been trying to put my keras model .tflite file into the google's Tflitecamera demo. But i am getting an allocation error(Cannot convert between a TensorFlowLite buffer with 12288 bytes and a ByteBuffer with 1072812 bytes. at ). I assume it is because of wrong bytebuffer allocation.

ByteBuffer.allocate( DIM_BATCH_SIZE * getImageSizeX() * getImageSizeY() * DIM_PIXEL_SIZE * getNumBytesPerChannel());

Could anyone shed some light on this. I am a newbie to TensorFlow.

Following is the log

08-10 11:56:28.905 28066-28066/android.example.com.tflitecamerademo E/MultiWindowProxy: getServiceInstance failed! 08-10 11:56:35.675 28066-28092/android.example.com.tflitecamerademo E/AndroidRuntime: FATAL EXCEPTION: CameraBackground Process: android.example.com.tflitecamerademo, PID: 28066 java.lang.IllegalArgumentException: Cannot convert between a TensorFlowLite buffer with 12288 bytes and a ByteBuffer with 1072812 bytes. at org.tensorflow.lite.Tensor.throwExceptionIfTypeIsIncompatible(Tensor.java:175) at org.tensorflow.lite.Tensor.setTo(Tensor.java:65) at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:126) at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:168) at org.tensorflow.lite.Interpreter.run(Interpreter.java:145) at com.example.android.tflitecamerademo.ImageClassifierFloatInception.runInference(ImageClassifierFloatInception.java:103) at com.example.android.tflitecamerademo.ImageClassifier.classifyFrame(ImageClassifier.java:136) at com.example.android.tflitecamerademo.Camera2BasicFragment.classifyFrame(Camera2BasicFragment.java:702) at com.example.android.tflitecamerademo.Camera2BasicFragment.-wrap0(Camera2BasicFragment.java) at com.example.android.tflitecamerademo.Camera2BasicFragment$4.run(Camera2BasicFragment.java:597) at android.os.Handler.handleCallback(Handler.java:822) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.os.HandlerThread.run(HandlerThread.java:61)

1

1 Answers

0
votes

You can find the reason of this error in the following link :

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/java/src/main/java/org/tensorflow/lite/Tensor.java

As you see in line 170 to 181, if Capacity of the output buffer is not equal to the number of Bytes then this error will happen.