当我试图打电话给
/// runs and transforms the data 🤖
this._interpreter.run(input, output);
。_interpreter = await Interpreter.fromAsset('mobilefacenet.tflite',选择:interpreterOptions);
得到这个错误
加载动态库libtensorflowlite_c失败。libtensorflowlite_c.so"没有找到
Windows用户:
-
在记事本上复制所有这些行:
@echo off setlocal enableextensions cd %~dp0 set TF_VERSION=2.5 set URL=https://github.com/am15h/tflite_flutter_plugin/releases/download/ set TAG=tf_%TF_VERSION% set ANDROID_DIR=androidappsrcmainjniLibs set ANDROID_LIB=libtensorflowlite_c.so set ARM_DELEGATE=libtensorflowlite_c_arm_delegate.so set ARM_64_DELEGATE=libtensorflowlite_c_arm64_delegate.so set ARM=libtensorflowlite_c_arm.so set ARM_64=libtensorflowlite_c_arm64.so set X86=libtensorflowlite_c_x86_delegate.so set X86_64=libtensorflowlite_c_x86_64_delegate.so SET /A d = 0 :GETOPT if /I "%1"=="-d" SET /A d = 1 SETLOCAL if %d%==1 CALL :Download %ARM_DELEGATE% armeabi-v7a if %d%==1 CALL :Download %ARM_64_DELEGATE% arm64-v8a if %d%==0 CALL :Download %ARM% armeabi-v7a if %d%==0 CALL :Download %ARM_64% arm64-v8a CALL :Download %X86% x86 CALL :Download %X86_64% x86_64 EXIT /B %ERRORLEVEL% :Download curl -L -o %~1 %URL%%TAG%/%~1 mkdir %ANDROID_DIR%%~2 move /-Y %~1 %ANDROID_DIR%%~2%ANDROID_LIB% EXIT /B 0
-
另存为
install.bat
,放到项目根目录下。 -
在资源管理器中打开命令窗口。
-
输入
install.bat
,按输入。如果您希望使用GpuDelegateV2
和NnApiDelegate
,请使用install.bat -d
(Windows)。
对于Linux/Mac用户:
-
在记事本上复制所有这些行
#!/usr/bin/env bash cd "$(dirname "$(readlink -f "$0")")" # Available versions # 2.5, 2.4.1 TF_VERSION=2.5 URL="https://github.com/am15h/tflite_flutter_plugin/releases/download/" TAG="tf_$TF_VERSION" ANDROID_DIR="android/app/src/main/jniLibs/" ANDROID_LIB="libtensorflowlite_c.so" ARM_DELEGATE="libtensorflowlite_c_arm_delegate.so" ARM_64_DELEGATE="libtensorflowlite_c_arm64_delegate.so" ARM="libtensorflowlite_c_arm.so" ARM_64="libtensorflowlite_c_arm64.so" X86="libtensorflowlite_c_x86_delegate.so" X86_64="libtensorflowlite_c_x86_64_delegate.so" delegate=0 while getopts "d" OPTION do case $OPTION in d) delegate=1;; esac done download () { wget "${URL}${TAG}/$1" -O "$1" mkdir -p "${ANDROID_DIR}$2/" mv $1 "${ANDROID_DIR}$2/${ANDROID_LIB}" } if [ ${delegate} -eq 1 ] then download ${ARM_DELEGATE} "armeabi-v7a" download ${ARM_64_DELEGATE} "arm64-v8a" else download ${ARM} "armeabi-v7a" download ${ARM_64} "arm64-v8a" fi download ${X86} "x86" download ${X86_64} "x86_64"
-
另存为install.sh文件名,并将文件放在项目根目录下。
-
打开命令窗口。
-
输入
sh install.sh
,按输入。如果您希望使用GpuDelegateV2
和NnApiDelegate
,请使用sh install.sh -d
。
我也有同样的错误。希望这是有用的人。
使用install.sh
文件后,该错误显示(仅在Android上,iOS工作良好)。但是我在安装文件中将wget
更改为curl
,它已经下载了一个重定向html页面。
对我来说有效的替换是:
# wget "${URL}${TAG}/$1" -O "$1" # Replaced with the below line
curl -L "${URL}${TAG}/$1" -o "$1"
尝试确认您下载的文件是否正确。您可以在<projectdirectory>/android/app/src/main/jniLibs
中检查这些文件。它们应该是以^?ELF
开头的二进制文件,而不是像我这样的html文件。
你需要在应用的根目录下添加一个文件tflite_flutter包中。tflite_flutter。你也可以在这里找到它。只需下载该文件并将其放入应用程序的根目录中,然后双击即可安装所需信息。(Windows)
Android平台:
将脚本install.sh
(Linux/Mac)或install.bat
(Windows)放在项目的根目录
执行。sh:
install.sh <= (Linux/Mac)
install.bat <= (Windows)文件,以自动下载二进制文件并将其放置在适当的文件夹中。
注意:安装的二进制文件将不包括对GpuDelegateV2和NnApiDelegate的支持,但InterpreterOptions().useNnApiForAndroid
仍然可以使用。
如何使用.sh
Linux/Mac
install.sh -d
Windows
install.bat -d
如果你想使用这些GpuDelegateV2和NnApiDelegate。
阅读更多:https://pub.dev/packages/tflite_flutter