Sol*_*ety 4 android google-cloud-platform tensorflow tensorflow-lite
我正在尝试运行我自己的自定义模型来进行对象检测。我从 Google Cloud - Vision ( https://console.cloud.google.com/vision/ )创建了我的数据集(我对图像进行了装箱和标记),它看起来像这样:
训练模型后,我从这里下载了 TFLite 文件(labelmap.txt、model.tflite 和一个 json 文件):
然后,我将它们添加到 Android 对象检测示例 ( https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android )。
但是当我运行该项目时,它崩溃了:
2020-07-12 18:03:05.160 14845-14883/? E/AndroidRuntime: FATAL EXCEPTION: inference
Process: org.tensorflow.lite.examples.detection, PID: 14845
java.lang.IllegalArgumentException: Cannot copy to a TensorFlowLite tensor (normalized_input_image_tensor) with 307200 bytes from a Java Buffer with 4320000 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:197)
at org.tensorflow.lite.examples.detection.DetectorActivity$2.run(DetectorActivity.java:182)
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)
Run Code Online (Sandbox Code Playgroud)
我尝试将参数TF_OD_API_IS_QUANTIZED更改为 false 并将labelOffset 更改为 0,并且我还将这一行从 TFLiteObjectDetectionAPIModel.java 修改为 d.imgData = ByteBuffer.allocateDirect(_4_ * d.inputSize * d.inputSize * 3 * numBytesPerChannel);(我将 1 替换为 4)
我是新手,如果有人能帮助我理解和解决错误,我将不胜感激。谢谢!
更新:这里是 tflite 文件:https ://drive.google.com/drive/folders/11QT8CgaYF2EseORgGCceh4DT80_pMiFM?usp = sharing (我不在乎模型是否正确识别正方形和圆形,我只想检查它是否在android应用程序上编译,然后我会改进它)
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |