【问题标题】:Fail to deploy custom image classification model (TFLITE)未能部署自定义图像分类模型 (TFLITE)
【发布时间】:2020-06-18 23:12:13
【问题描述】:

我刚刚使用 Google AutoML 训练了一个单标签图像分类模型,但未能在 Android 手机中使用它。我根据https://cloud.google.com/vision/automl/docs/tflite-android-tutorial修改了代码并将我的自定义模型从https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/android替换为示例TensorFlow模型。但是,该应用继续崩溃并显示它已过期。

以下是 logcat 中的错误:

8472-8483/? E/flitecameradem: Unable to peek into adb socket due to error. Closing socket.: Connection reset by peer
8472-8472/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8472/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8472/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8496/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8472/android.example.com.tflitecamerademo E/libc: Access denied finding property "persist.vendor.camera.privapp.list"
8472-8714/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.hal1.packagelist"
8472-8496/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8496/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8472/android.example.com.tflitecamerademo E/libc: Access denied finding property "vendor.camera.aux.packagelist"
8472-8762/android.example.com.tflitecamerademo E/libc: Access denied finding property "persist.camera.legacy_perf"
8472-8713/android.example.com.tflitecamerademo E/AndroidRuntime: FATAL EXCEPTION: CameraBackground
Process: android.example.com.tflitecamerademo, PID: 8472
java.nio.BufferOverflowException
    at java.nio.Buffer.nextPutIndex(Buffer.java:542)
    at java.nio.DirectByteBuffer.putFloat(DirectByteBuffer.java:802)
    at com.example.android.tflitecamerademo.ImageClassifier.convertBitmapToByteBuffer(ImageClassifier.java:195)
    at com.example.android.tflitecamerademo.ImageClassifier.classifyFrame(ImageClassifier.java:113)
    at com.example.android.tflitecamerademo.Camera2BasicFragment.classifyFrame(Camera2BasicFragment.java:663)
    at com.example.android.tflitecamerademo.Camera2BasicFragment.access$900(Camera2BasicFragment.java:69)
    at com.example.android.tflitecamerademo.Camera2BasicFragment$5.run(Camera2BasicFragment.java:558)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:224)
    at android.os.HandlerThread.run(HandlerThread.java:65)

【问题讨论】:

    标签: android tensorflow image-processing


    【解决方案1】:

    要修复BufferOverflowException 错误,您还必须更改将值放入imgData 缓冲区的方式。 由于我们将imgData 更改为包含字节而不是浮点数,因此我们还需要在方法convertBitmapToByteBuffer(Bitmap bitmap) 中将putFloat 替换为put

    imgData.put((byte) ((((val >> 16) & 0xFF)-IMAGE_MEAN)/IMAGE_STD));
    imgData.put((byte) ((((val >> 8) & 0xFF)-IMAGE_MEAN)/IMAGE_STD));
    imgData.put((byte) ((((val) & 0xFF)-IMAGE_MEAN)/IMAGE_STD));
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      相关资源
      最近更新 更多