使用 CMake 安装 Tensorflow Lite

Installing Tensorflow Lite with CMake

我正在尝试在 Raspberry Pi 零 W 上安装 Tensorflow Lite。我按照官方网站 (https://www.tensorflow.org/lite/guide/build_cmake_arm) 中的步骤操作。但是我收到以下错误消息:

-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Check for working C compiler: /home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc

-- Check for working C compiler: /home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc -- broken

CMake Error at /usr/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake:60 (message):

The C compiler

"/home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_ed1a3/fast && /usr/bin/make -f CMakeFiles/cmTC_ed1a3.dir/build.make CMakeFiles/cmTC_ed1a3.dir/build
make[1]: Entering directory '/home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_ed1a3.dir/testCCompiler.c.o
/home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc   -march=armv6 -mfpu=vfp -funsafe-math-optimizations    -o CMakeFiles/cmTC_ed1a3.dir/testCCompiler.c.o   -c /home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeTmp/testCCompiler.c
/home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc: 1: /home/pi/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc: Syntax error: ")" unexpected
make[1]: *** [CMakeFiles/cmTC_ed1a3.dir/build.make:66: CMakeFiles/cmTC_ed1a3.dir/testCCompiler.c.o] Error 2
make[1]: Leaving directory '/home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeTmp'
make: *** [Makefile:121: cmTC_ed1a3/fast] Error 2

CMake will not be able to correctly generate this project.

Call Stack (most recent call first):

CMakeLists.txt:44 (project)

Configuring incomplete, errors occurred!
See also "/home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeOutput.log".
See also "/home/pi/Project/cmake-3.16.0/CMakeFiles/CMakeError.log".

有谁知道如何解决这个问题?

我运行遇到了和你一样的问题! https://www.tensorflow.org/lite/guide/build_cmake_arm?hl=en 处给出的指令不打算在 Raspberry Pi 上执行(至少是最后一个)。 让我分享一下,我会想出什么。

简答: 您正在尝试 运行 cross-compile 的 TensorFlow Lite for ARM 为 ARM 系统上的 x86 平台制作(您的 Raspberry Pi)。您尝试做的事情实际上需要在 x86 平台上完成。 (在教程页面的顶部有一个提示:“以下说明已在 Ubuntu 16.04.3 64 位 PC (AMD64) 上进行了测试”,这表明这些命令已在 x86 上 运行)

一些细节: 消息“语法错误:”(“意外”可能来自 shell。为什么 shell 试图执行你的二进制文件?因为内核尝试并放弃了。为什么内核无法 运行 程序?因为可执行文件的格式不受支持 -> 意味着在 x86 上是 运行 但在 ARM 上执行。 https://unix.stackexchange.com/questions/336436/syntax-error-unexpected-when-execute-a-compiled-c-program

使用较早的 TensorFlow 版本,可以通过 Raspberry Pi 本身编译 TF lite ./tensorflow-2.4.1/tensorflow/lite/tools/make/download_dependencies.sh / 和 build_aarch64_lib.sh 脚本。 然而,这个脚本在 2.8 版本中被删除了(甚至在之前的更早版本中)。请参阅 Git 的自述文件中的注释:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/tools/make/README.md

使用Python进行推理
不幸的是,我没有真正的解决方案如何在 Raspberry 本身上编译/构建 TensorFlow Lite。我个人最终使用 Python (只需要推理)并遵循本教程: https://qengineering.eu/install-tensorflow-2.7-on-raspberry-64-os.html