Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TFLite-对象检测-自定义模型-无法从具有*字节的Java缓冲区复制到具有*字节的TensorFlowLite tensorwith_Android_Tensorflow_Object Detection_Tensorflow Lite_Object Detection Api - Fatal编程技术网

Android TFLite-对象检测-自定义模型-无法从具有*字节的Java缓冲区复制到具有*字节的TensorFlowLite tensorwith

Android TFLite-对象检测-自定义模型-无法从具有*字节的Java缓冲区复制到具有*字节的TensorFlowLite tensorwith,android,tensorflow,object-detection,tensorflow-lite,object-detection-api,Android,Tensorflow,Object Detection,Tensorflow Lite,Object Detection Api,我正在尝试创建一个模型来识别绘制的形状,但我对Tensorflow非常陌生,无法让它工作 我能够按照这些步骤创建我的模型(与CodeLab tensorflow-for-Poeters-2几乎相同) 我得到了我的定制的_model.tflite 我在图像分类示例()和wohoo中测试了我的模型!它工作得很好 但是现在我想在对象检测示例中使用我的模型,这样我就可以知道形状的位置并将它们装箱。我从这里下载了示例,并将我的自定义_model.tflite粘贴到资产文件夹中。 另外,我将attribu

我正在尝试创建一个模型来识别绘制的形状,但我对Tensorflow非常陌生,无法让它工作

我能够按照这些步骤创建我的模型(与CodeLab tensorflow-for-Poeters-2几乎相同) 我得到了我的定制的_model.tflite

我在图像分类示例()和wohoo中测试了我的模型!它工作得很好

但是现在我想在对象检测示例中使用我的模型,这样我就可以知道形状的位置并将它们装箱。我从这里下载了示例,并将我的自定义_model.tflite粘贴到资产文件夹中。
另外,我将attributeteTF\u OD\u API\u被量化更改为false,将其更改为“DetectorActivity”类

当我运行代码时,我得到了这个错误

2020-06-25 22:42:46.594 11515-11591/org.tensorflow.lite.examples.detection E/AndroidRuntime: FATAL EXCEPTION: inference
    Process: org.tensorflow.lite.examples.detection, PID: 11515
    java.lang.IllegalArgumentException: Cannot copy to a TensorFlowLite tensor (normalized_input_image_tensor) with 270000 bytes from a Java Buffer with 1080000 bytes.
        at org.tensorflow.lite.Tensor.throwIfSrcShapeIsIncompatible(Tensor.java:423)
        at org.tensorflow.lite.Tensor.setTo(Tensor.java:189)
        at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:154)
        at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:343)
        at org.tensorflow.lite.examples.detection.tflite.TFLiteObjectDetectionAPIModel.recognizeImage(TFLiteObjectDetectionAPIModel.java:196)
        at org.tensorflow.lite.examples.detection.DetectorActivity$2.run(DetectorActivity.java:181)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.os.HandlerThread.run(HandlerThread.java:67)
我想可能是模型出了问题,所以我从谷歌云平台API创建了一个新的模型,但我得到了相同的结果


如果您需要更多信息,请告诉我。

这对我很有用。希望它也能对你有用

尝试从以下行更改:

d.imgData = ByteBuffer.allocateDirect(1 * d.inputSize * d.inputSize * 3 * numBytesPerChannel);
致:


的演示应用程序也做了同样的事情。

看来规范化的\u输入\u图像\u张量的维度或数据类型与您的图像不匹配。例如,张量元素的类型可以是byte,而您尝试将包含32位元素的rgb图像复制到其中。我希望它能以这种方式工作!我可以创建一个用于图像分类的文件,并将其粘贴到每个Tensorflow官方github repo中…:)当然,您必须专门为对象检测创建一个新文件。一个新的数据集、新的训练、新的输入等等。我认为在对象检测报告中有使用您自己的数据集的说明。。。快乐编码
d.imgData = ByteBuffer.allocateDirect(4 * d.inputSize * d.inputSize * 3 * numBytesPerChannel);