听说树莓派也能玩 tensorflow ?

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.png

修改这个Makefile就可以换编译的文件了,这里的example在~/Documents/tensorflow/tensorflow/contrib/lite/examples中。

大概1分钟左右,


编译完成.png

在这个文件夹中会生成两个文件
编译生成的两个文件.png

如果没有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中,如果下载失败的话,就需要自己先办法啦),运行看一下效果。

执行结果.png

出现这个,我们就成功的编译完成啦!运行的速度还是蛮不错的说。(~o ̄3 ̄)~

0x04 尾记

这里我所编译使用的是tensorflow官方提供的案例,如果我们需要自己写的话,目前好像只能用C++语言版本的说(PS: 什么时候才能支持Python呢??,虽然在跨平台开发的时候我还是会选择C++,啦啦啦~.~)

参考文档:

  1. TensorFlow Lite for Raspberry Pi on github.com
  2. List of Hosted Models
  3. TensorFlow Lite for Raspberry Pi on tensorflow.org

你可能感兴趣的:(听说树莓派也能玩 tensorflow ?)