加载动态库“libtensorflowlite_c.so”失败:dlopen 失败:找不到库“libtensorflowlite_c.so”

问题描述 投票:0回答:4

当我试图打电话

 /// runs and transforms the data 🤖
  this._interpreter.run(input, output);

this._interpreter = await Interpreter.fromAsset('mobilefacenet.tflite', 选项:解释器选项);

得到这个错误

加载动态库“libtensorflowlite_c.so”失败:dlopen 失败:找不到库“libtensorflowlite_c.so”

flutter machine-learning tensorflow-lite face-detection
4个回答
3
投票

对于 Windows 用户:

  1. 在记事本上复制所有这些行:

    @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=android\app\src\main\jniLibs\
    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
    
  2. 将文件保存为

    install.bat
    ,并将文件放在项目的根目录中。

  3. 在资源管理器中打开并在那里打开一个命令窗口。

  4. 键入

    install.bat
    并按Enter。如果您想使用
    install.bat -d
    GpuDelegateV2
    ,请改用
    NnApiDelegate
    (Windows)。


对于 Linux/Mac 用户:

  1. 在记事本上复制所有这些行

    #!/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"
    
  2. 将文件保存为install.sh名称,并将文件放在项目的根目录中。

  3. 在那里打开一个命令窗口。

  4. 键入

    sh install.sh
    并按Enter。如果您想使用
    sh install.sh -d
    GpuDelegateV2
    ,请使用
    NnApiDelegate


1
投票

我有同样的错误。希望这对某人有帮助。

使用

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 文件。


0
投票

你需要在找到的应用程序的根目录下添加一个文件 tflite_flutter 包。 tflite_flutter。你也可以在这里找到它。 只需下载文件并将其放入应用程序的根目录中,然后双击即可安装所需的信息。 (适用于 Windows)


0
投票

安卓:

将脚本 install.sh (Linux/Mac) 或 install.bat (Windows) 放在项目的根目录下。

执行 sh install.sh(https://github.com/am15h/tflite_flutter_plugin/blob/master/install.sh) (Linux) / install.bat(https://github.com/am15h/tflite_flutter_plugin/ blob/master/install.bat) (Windows) 在项目的根目录下,自动下载二进制文件并将其放置在适当的文件夹中。

注意:安装的二进制文件将不包括对 GpuDelegateV2 和 NnApiDelegate 的支持,但是 InterpreterOptions().useNnApiForAndroid 仍然可以使用。

如果您想使用这些 GpuDelegateV2 和 NnApiDelegate,请改用 sh install.sh -d (Linux) 或 install.bat -d (Windows)。 阅读更多:https://pub.dev/packages/tflite_flutter

© www.soinside.com 2019 - 2024. All rights reserved.