在树莓派上用python运行tflite模型效果一般,觉得应该没go快,c开发难度又大,所以需要在树莓派上使用tensorflow go的动态链接库,在树莓派上编译显然时间太长,所以得用交叉编译。本文构建的主要适用于树莓派64位系统(arm64)
为 arm64 构建 TensorFlow 库
交叉编译环境
Bazel v4.2.1
TensorFlow v2.8.0
Python v3.9
安装构建工具
sudo apt-get update && sudo apt-get install -y zip build-essential
下载安装 Bazel
bazel
是 TensorFlow 的构建系统,它的版本严格依赖于特定版本的 TensorFlow。
2.8.0 的目前文档还没更新对应的 Bazel,但如果不知道版本也可以先安装一个版本,配置的时候会报错显示让安装对应版本的 bazel 即可(别问我怎么知道的 TT)
wget https://github.com/bazelbuild/bazel/releases/download/4.2.1/bazel-4.2.1-installer-linux-x86_64.sh
chmod 755 bazel-4.2.1-installer-linux-x86_64.sh
sudo ./bazel-4.2.1-installer-linux-x86_64.sh
bazel
下载安装 Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
chmod 755 Anaconda3-2021.11-Linux-x86_64.sh
./Anaconda3-2021.05-Linux-x86_64.sh
exit # 并再次登录
此时 python 已设置好,但可能没有激活,所以最好退出并重新登录并确认版本
python --version
下载 TensorFlow 代码
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout tags/v2.8.0
配置构建参数
根据提示选择对应配置即可,也可以全部回车(默认值)
./configure
启动构建
bazel build -c opt --config=elinux_aarch64 //tensorflow/tools/lib_package:libtensorflow
需要一些时间, 生成的动态链接库在:bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz
在树莓派上安装动态库
sudo tar -C /usr/local -xzf libtensorflow.tar.gz
sudo ldconfig
export LD_LIBRARY_PATH="/usr/local/lib"
在树莓派上运行 tensorflow go 官方例子
安装 Protocol Buffers 库和编译器
安装协议缓冲区库和编译器。在安装 Go 绑定期间,需要库中的编译器和众所周知的原型文件。
Linux,使用 aptor apt-get,例如:
apt install libprotobuf-dev protobuf-compiler
安装 tensorflow go api
由于 tensorflow go api 不支持 2.0 使用 go get 安装,所以需要手动安装
首先,记下 Go 工作区的位置。其余的安装步骤必须在您的 Go 工作区中执行。
go env GOPATH
克隆 TensorFlow 源存储库,将 Go 工作区的位置替换为/go 以下命令。
git clone --branch v2.8.0 https://github.com/tensorflow/tensorflow.git /go/src/github.com/tensorflow/tensorflow
将工作目录更改为克隆的 TensorFlow 存储库的基础,/go 在下面的命令中替换您的 Go 工作区的位置。
cd /go/src/github.com/tensorflow/tensorflow
将所需的补丁应用到 TensorFlow 源代码。
git cherry-pick --strategy-option=no-renames --no-commit 65a5434
初始化一个新的 go.mod 文件。
go mod init github.com/tensorflow/tensorflow
生成包装器和协议缓冲区。
(cd tensorflow/go/op && go generate)
添加缺少的模块。
go mod tidy
测试安装。
go test ./...
© 版权声明
THE END
暂无评论内容