美文网首页神经网络
IOT设备AI搭建1:Linux上构建Tensorflow Li

IOT设备AI搭建1:Linux上构建Tensorflow Li

作者: 古风子 | 来源:发表于2020-04-16 21:44 被阅读0次

系列目录:

IOT设备AI搭建1:Linux上构建Tensorflow Lite
IOT设备AI搭建2:树莓派部署TF Lite(图片分类实例)
IOT设备AI搭建3:TF Lite构建过程解析
IOT设备AI搭建4:MakeFile基础语法

前言:

TF Lite只支持模型推导,不能进行模型训练;适合在服务器完成模型训练,在端设备应用模型的场景

测试环境:

1:电脑环境,VirtualBox虚拟机,LinuxMint 19.3
2:基于Tf稳定版分支r2.2,master分支会有各种问题

获取分支代码

到GitHub仓库下载稳定版TF 2.X 全部代码:(53.88M)

wget https://codeload.github.com/tensorflow/tensorflow/zip/r2.2
unzip master.zip

交叉编译

交叉编译是在一个平台上生成另一个平台上的可执行代码

要使用 TensorFlow Lite 交叉编译功能,应先安装工具链和相关的库。

sudo apt-get update
#安装后占用空间大小 15.4kb
sudo apt-get install crossbuild-essential-armhf

构建

运行以下命令,安装依赖包

./tensorflow/lite/tools/make/download_dependencies.sh

编译TensorFlow Lite,我是在本地虚拟机的Ubuntu验证

#在树莓派上
./tensorflow/lite/tools/make/build_rpi_lib.sh

# 在ARM64上运行,例如andorid 手机
bash ./tensorflow/lite/tools/make/build_aarch64_lib.sh

# 在普通Ubuntu上运行:
bash ./tensorflow/lite/tools/make/build_lib.sh

以构建普通Linux的静态包为例

运行批处理脚本:

# 在普通Ubuntu上运行:
bash ./tensorflow/lite/tools/make/build_lib.sh

脚本文件实际调用的是/tensorflow/lite/tools/make/Makefile文件;每种运行脚本对应一个配置文件(tensorflow/lite/tools/make/targets中),里面配置了不同目标平台的编译参数,配置文件是在Makefile文件中加载的

运行Makefile成功后,这将编译一个静态库,它位于:

tensorflow/lite/tools/make/gen/linux_x86_64/lib/libtensorflow-lite.a

静态库文件使我们所需要的的最重要的文件,我们可以使用它生成各种场景的可执行文件;相对对应的动态库也就是so文件

同样也会在/tensorflow/lite/tools/make/gen/linux_x86_64/bin生成minimal可执行文件

minimal文件是一个模型加载和模型推导可执行文件,相当于一个AI场景;
如果你需要其他AI场景,你需要根据具体的模型文件编写模型加载程序,并生成类似与minimal的可执行文件

运行可执行文件
在/tensorflow/lite/tools/make/gen/linux_x86_64/bin运行minimal命令

./minimal mobilenet_v1_0.25_128_quant.tflite 

如果能够读取模型内容,输出以下结果表示成功:

=== Pre-invoke Interpreter State ===
Interpreter has 90 tensors and 31 nodes
Inputs: 88
Outputs: 87
...

Tensor  87 MobilenetV1/Predictions/Reshape_1 kTfLiteUInt8  kTfLiteArenaRw       1001 bytes ( 0.0 MB)  1 1001
Tensor  88 input                kTfLiteUInt8  kTfLiteArenaRw      49152 bytes ( 0.0 MB)  1 128 128 3
Tensor  89 (null)               kTfLiteUInt8  kTfLiteArenaRw     110592 bytes ( 0.1 MB)  1 64 64 27
...

Node  28 Operator Builtin Code   3 CONV_2D
  Inputs: 0 3 2
  Outputs: 1
Node  29 Operator Builtin Code  22 RESHAPE
  Inputs: 1 5
  Outputs: 4
Node  30 Operator Builtin Code  25 SOFTMAX
  Inputs: 4
  Outputs: 87


TF Lite 移植到其他Linux平台

将上述编译好的minimal文件和对应的模型文件tflite移植到其他Linux平台(同处理器架构),不需要移植Tensorflow其他包,
这样,我们可以使用在移动端Linux环境环境中,不需要很多的存储空间,就可以运行我们的AI场景

~/tensorflow/linux_x86_64/bin$ ls
minimal  mobilenet_v1_0.25_128_quant.tflite

运行:

~/tensorflow/linux_x86_64/bin$ ./minimal mobilenet_v1_0.25_128_quant.tflite 
=== Pre-invoke Interpreter State ===
Interpreter has 90 tensors and 31 nodes
Inputs: 88
Outputs: 87

...

表示运行成功,可以根据实际项目需要,编译你的可执行程序;

同样的操作方式,可以将TF_LITE交叉编译后的可执行文件,在树莓派,IOS上运行

总结

通过在电脑端交叉编译各个Linux版本的TF_LITE,可以将TF_LITE一直到各个移动端设备

移植的文件 名称 暂用空间大小
静态库文件 libtensorflow-lite.a 5.7M
可执行文件 minimal 3.4M
模型文件 tflite 497kb

文件空间占用情况如上边,根据不同的场景,可执行文件大小变化不大;不同的场景,模型文件会差异比较大,官方80个物体监测的模型文件为3.3M

相关文章

网友评论

    本文标题:IOT设备AI搭建1:Linux上构建Tensorflow Li

    本文链接:https://www.haomeiwen.com/subject/dcdjvhtx.html