Tensorflow lite task library in action

This article uses Tensorflow lite task library for end-side inference, mainly referring to the official website and the following code:

 Official website API:

Integrated Image Segmenter | TensorFlow Lite 

Online case:

https://github.com/khanhlvg/tflite-task-library-demo

The reason why online cases are given is that friends who are new to tf may only refer to the official website and may not be able to implement specific examples, so this example is used to illustrate:

When executing this code, the following error will appear on the mobile phone interface, which can be solved as follows:

Let’s put down the successfully executed interface first. There are two functions: IMAGESEGMENTER and OBJECTDETECTOR:

Error 1:

Execution failed for task ':app:stripDebugDebugSymbols'.

> No version of NDK matched the requested version 21.0.6113669. Versions available locally: 25.1.8937393

Add the following code to the Gradle Scripts->build.gradle android section:

ndkVersion "25.1.8937393"

 

Error 2:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.khanhlvg.taskapidemo, PID: 2730
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/tensorflow/lite/support/image/ColorSpaceType;
        at org.tensorflow.lite.task.vision.segmenter.OutputType$1.createMasksFromBuffer(OutputType.java:74)
        at org.tensorflow.lite.task.vision.segmenter.ImageSegmenter.segment(ImageSegmenter.java:224)
        at org.tensorflow.lite.task.vision.segmenter.ImageSegmenter.segment(ImageSegmenter.java:176)
        at com.khanhlvg.taskapidemo.ImageSegmenterActivity.onCreate(ImageSegmenterActivity.java:42)
        at android.app.Activity.performCreate(Activity.java:6975)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.tensorflow.lite.support.image.ColorSpaceType" on path: DexPathList[[zip file "/data/app/com.khanhlvg.taskapidemo-yEwPKlVcydWFgmJJsp6FuQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.khanhlvg.taskapidemo-yEwPKlVcydWFgmJJsp6FuQ==/lib/x86, /data/app/com.khanhlvg.taskapidemo-yEwPKlVcydWFgmJJsp6FuQ==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.tensorflow.lite.task.vision.segmenter.OutputType$1.createMasksFromBuffer(OutputType.java:74) 
        at org.tensorflow.lite.task.vision.segmenter.ImageSegmenter.segment(ImageSegmenter.java:224) 
        at org.tensorflow.lite.task.vision.segmenter.ImageSegmenter.segment(ImageSegmenter.java:176) 
        at com.khanhlvg.taskapidemo.ImageSegmenterActivity.onCreate(ImageSegmenterActivity.java:42) 
        at android.app.Activity.performCreate(Activity.java:6975) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6541) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

As shown below:

In Gradle Scripts->build.gradle, in the dependencies section, modify the tensorflow-lite-task-vision and tensorflow-lite-task-text versions to solve the problem. The modified version must first be queried in the following warehouse and select Appropriate versions, select versions 0.3.1 and 0.4.2 here respectively:

Maven Central Repository Search

//    implementation('org.tensorflow:tensorflow-lite-task-vision:0.0.0-nightly') { changing = true}
//    implementation('org.tensorflow:tensorflow-lite-task-text:0.0.0-nightly') { changing = true}
    implementation('org.tensorflow:tensorflow-lite-task-vision:0.3.1') { changing = true}
    implementation('org.tensorflow:tensorflow-lite-task-text:0.4.2') { changing = true}

Guess you like

Origin blog.csdn.net/qq_18256855/article/details/127353811