pubspec.yaml
tflite_flutter: ^0.9.1
还需要配置一些包和环境,请看下面步骤
安卓
安卓直接使用tflite会出现如下提示
[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'libtensorflowlite_c.so': dlopen failed: library "libtensorflowlite_c.so" not found
我们只需要一个脚本,就可以自动下载so依赖文件到项目目录<projectdirectory>/android/app/src/main/jniLibs下
#!/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"
#download to <projectdirectory>/android/app/src/main/jniLibs
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


安卓好简单吧,自动化脚本,这样app就可以直接运行tflite推理拉。
- 如果您希望使用这些
GpuDelegateV2
和NnApiDelegate
,使用'sh install.sh -d'
ios
编译详情请查看 https://www.jianshu.com/p/02fcd124973d
把自己编译的TensorFlowLiteC.framework或下载TensorFlowLiteC.framework
放到目录~/develop/flutter/.pub-cache/hosted/pub.flutter-io.cn/tflite_flutter-0.9.1/ios 下。
如果是ios模拟器运行,则需要自己编译为适合自己mac cpu的版本,我编译了一个x86_64版本的TensorFlowLiteC.framework
编译请看:https://www.jianshu.com/p/02fcd124973d
这样flutter就可以直接在模拟器运行app试试了

网友评论