linux虚拟机tensorflow,IOT设备AI搭建1:Linux上构建Tensorflow Lite

460490127eca

系列目录:

前言:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值