首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TfLiteGpuDelegate调用: GpuDelegate必须在初始化它的线程上运行

TfLiteGpuDelegate调用: GpuDelegate必须在初始化它的线程上运行
EN

Stack Overflow用户
提问于 2020-07-04 09:09:49
回答 1查看 668关注 0票数 2

我正在尝试运行一个自定义的Tflie模型,以便在Android中进行分割。它在CPU上运行良好,但在使用GPU委托时,它崩溃时出现以下错误:

代码语言:javascript
运行
复制
E/AndroidRuntime(30867): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(30867): Process: com.apptec.scansdk, PID: 30867
E/AndroidRuntime(30867): java.lang.RuntimeException: An error occurred while executing doInBackground()
E/AndroidRuntime(30867):    at android.os.AsyncTask$3.done(AsyncTask.java:309)
E/AndroidRuntime(30867):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
E/AndroidRuntime(30867):    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
E/AndroidRuntime(30867):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(30867):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
E/AndroidRuntime(30867):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
E/AndroidRuntime(30867):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
E/AndroidRuntime(30867):    at java.lang.Thread.run(Thread.java:818)
E/AndroidRuntime(30867): Caused by: java.lang.IllegalArgumentException: Internal error: Failed to run on the given Interpreter: TensorDescriptor don't have selector with name - Slice
E/AndroidRuntime(30867): Falling back to OpenGL
E/AndroidRuntime(30867): TfLiteGpuDelegate Invoke: GpuDelegate must run on the same thread where it was initialized.
E/AndroidRuntime(30867): Node number 105 (TfLiteGpuDelegateV2) failed to invoke.
E/AndroidRuntime(30867): 
E/AndroidRuntime(30867):    at org.tensorflow.lite.NativeInterpreterWrapper.run(Native Method)
E/AndroidRuntime(30867):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:158)
E/AndroidRuntime(30867):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:343)
E/AndroidRuntime(30867):    at org.tensorflow.lite.Interpreter.run(Interpreter.java:304)
E/AndroidRuntime(30867):    at com.apptec.scansdk.MainActivity$RunSegmentationOnBinary.runTflite(MainActivity.java:237)
E/AndroidRuntime(30867):    at com.apptec.scansdk.MainActivity$TfliteTask.doInBackground(MainActivity.java:310)
E/AndroidRuntime(30867):    at com.apptec.scansdk.MainActivity$TfliteTask.doInBackground(MainActivity.java:284)
E/AndroidRuntime(30867):    at android.os.AsyncTask$2.call(AsyncTask.java:295)
E/AndroidRuntime(30867):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(30867):    ... 4 more

下面是加载模型的代码

代码语言:javascript
运行
复制
MappedByteBuffer buffer = null;
        buffer = FileUtil.loadMappedFile(context, "docScan.tflite");
int numThreads = 4;

boolean useGpuDelegate = true;
final Interpreter.Options tfliteOptions = new Interpreter.Options();

tfliteOptions.setNumThreads(numThreads);
if (useGpuDelegate){
    GpuDelegate delegate = new GpuDelegate();
    tfliteOptions.addDelegate(delegate);
}
tfLite = new Interpreter(buffer, tfliteOptions);

奇怪的是,它在MI/Redmi/OPPO等手机上工作,只在三星上崩溃。请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2022-07-15 21:09:44

向AndroidManifest.xml添加以下行:

AndroidManifestGpu.xml:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/java/AndroidManifestGpu.xml链接

代码语言:javascript
运行
复制
<application  

    <uses-native-library
        android:name="libOpenCL.so"
        android:required="false" />

    <uses-native-library
        android:name="libOpenCL-car.so"
        android:required="false" />

    <uses-native-library
        android:name="libOpenCL-pixel.so"
        android:required="false" />

</application>

将这些依赖项添加到build.gradle中:

代码语言:javascript
运行
复制
implementation 'org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2'
implementation 'org.tensorflow:tensorflow-lite-gpu:2.8.0'
implementation 'org.tensorflow:tensorflow-lite-support:0.1.0'
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.1.0'
implementation 'org.tensorflow:tensorflow-lite-task-text:0.1.0'
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62727313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档