0x00 前言
有幸从公司拿了一个树莓派,听说 tensorflow lite 可以轻松在树莓派这样的配置上运行。本次吾将在树莓派上尝试一下如何编译其并运行,体验一把乐趣。
本次实验环境清单:
树莓派 B3+
Ubuntu 16.04 (可不需要)
这里我使用了 Ubuntu 进行了交叉编译,当然我们也可以不使用(可以跳过0x01,直接看0x02 章节),如果你能接受较长的编译时间。(PS: 我才不会告诉你我在树莓派上直接编译遇到了多少麻烦~) (lll¬ω¬)
0x01 用 Ubuntu 交叉编译一下
安装 Ubuntu 16.04 64位,在 Document 文件夹中克隆一下tensorflow仓库。
$ git clone https://github.com/tensorflow/tensorflow.git
之后安装一下arm板的交叉编译环境,只需要执行一句(PS: 超简单的说,比我之前做交叉编译真的简单好多,以前做arm开发的时候,配环境超头大的说(*  ̄︿ ̄))
$ sudo apt install crossbuild-essential-armhf
OK,我们再下载一会儿编译所需要的文件。只需要执行一下这个脚本
$ ./tensorflow/contrib/lite/tools/make/download_dependencies.sh
文件都下载到了这里。(⚠️: 这个只需要执行一次)
之后,只需要执行一下下面这个脚本,就可以编译啦 ( ̄︶ ̄)↗。
$ ./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh
(~ ̄▽ ̄)~ 悄咪咪的告诉你,上面的脚本其实是调用
修改这个
Makefile
就可以换编译的文件了,这里的example在~/Documents/tensorflow/tensorflow/contrib/lite/examples
中。
大概1分钟左右,
在这个文件夹中会生成两个文件
如果没有Ubuntu的话,就按照下面的这个方案来尝试吧。
0x02 为啥非要直接编译呢?
唔,没事,标题就是用来吐槽的。我还是会“好好地”来给你演示怎么编译。
首先,我们将 tensorflow 克隆到 ~
中。同样,我们需要下载一会儿编译需要的文件,我们只需要执行一下
$ ./tensorflow/contrib/lite/tools/make/download_dependencies.sh
之后,只需要执行一下下面这个脚本,就可以编译啦 ( ̄︶ ̄)↗。
$ ./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh
我是绝对不会说这个编译用了好长时间 ╥﹏╥...
同样也会在~/tensorflow/tensorflow/contrib/lite/tools/make/gen/rpi_armv7l/bin
生成两个文件。
0x03 运行看一下
把这两个文件移到树莓派中,再顺便添加一个tflite文件(可以从这里下载一下,不过好像文件都是在Google driver中,如果下载失败的话,就需要自己先办法啦),运行看一下效果。
出现这个,我们就成功的编译完成啦!运行的速度还是蛮不错的说。(~o ̄3 ̄)~
0x04 尾记
这里我所编译使用的是tensorflow官方提供的案例,如果我们需要自己写的话,目前好像只能用C++语言版本的说(PS: 什么时候才能支持Python呢??,虽然在跨平台开发的时候我还是会选择C++,啦啦啦~.~)
参考文档: