我是靠谱客的博主 激昂唇膏,最近开发中收集的这篇文章主要介绍基于Win 10_Linux子系统的Tensorflowlite(.tflite模型)转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基于Win 10_Linux子系统的Tensorflowlite(.tflite模型)转换

一、前言
本篇文章是通过在windows平台下的Linux子系统实现tflite模型的转换,执行后面操作的前提是,你已经在win10平台拥有了完整的tensorflow运行和训练的环境,win10平台的tensorflow的配置和训练不在本篇文章的介绍范围,如果有问题,欢迎在评论区留言。
另:目前tflite模型仅支持ssd模型的转换,所以在训练和转换的过程中请选择ssd_mobilenet模型得出的.ckpt模型文件。

二、配置
1、平台参数

  • 系统:win10 20H2
  • 子系统:Ubuntu 20.04 LTS
  • CPU:I7-8750H
  • GPU:GTX1070 Max-q
  • 内存:16GB

2、软件环境
win 10平台

  • 环境管理:Anaconda 3 64-bit
  • Python版本:3.6.12
  • Protobuf版本:3.13.0
  • C++平台:Visual Studio 2019 专业版
  • CUDA版本:10.0
  • cudnn版本:7.6.0
  • Tensorflow:Tensorflow_gpu 1.15.0

注:关于软件环境系各版本的选择可以参考我之前写的文章。

Ubuntu平台

  • 环境管理:Anaconda 3
  • Python版本:3.6.12
  • Protobuf版本:3.10.0
  • bazel版本:3.7.2

三、子系统安装
1、在控制面板中开启子系统选项

在这里插入图片描述

在这里插入图片描述
勾选完成后,需要重启系统。

2、在windows商店搜素Linux,选择需要的linux版本,我这里选择的是Ubuntu 20.04 LTS。
在这里插入图片描述
注:在安装之前需要确保电脑系统盘有足够的空余。子系统是安装在系统盘中的,接下来所有在子系统中安装的组件均会占用系统盘空间。初步估计要有至少30GB左右的空余。

3、设置Linux

在这里插入图片描述
第一次启动子系统需要等待一段时间。
初次设置完成后,就可以设置子系统的的用户名和密码,就像完整版的Linux一样的设置。
在这里插入图片描述
在这里插入图片描述
设置完用户名和密码之后,需要重置一下root密码,运行以下命令进行重置

sudo passwd root

四、安装Anaconda (可选)
这一步是可选的,我是为了更方便对python环境进行管理,所以在子系统中安装了Anaconda。
(1) 下载Linux平台的Anaconda
在这里插入图片描述

在win 10中下载安装包,在子系统中访问该目录进行安装。
注:在子系统中进入/mnt/目录下,即可看到对应的windows 平台的盘符,然后进入安装包的下载位置,运行命令进行安装。
(2)安装
默认的安装位置是/root/anaconda3。
注:在安装最后一步,anaconda默认是no,这块要输入yes,不然后面会出现问题。安装完成后,重启子系统窗口,这个时候在用户名最最前面会出现‘(base)’。
(3)创建环境
运行以下命令在子系统中创建环境。

conda create --name <env_name> <package_names>

例如:conda create –-name tf python==3.6.10
注:在子系统命令提示版的复制和粘贴的快捷键是

ctrl+shift+c ##复制
ctrl+shift+v ##粘贴

子系统支持与主系统的复制和粘贴的操作。

(4)激活环境
运行以下命令,激活环境。

source activate <env_name>

五、安装tensorflow
通过pip install 命令进行安装。这里推荐使用tensorflow 1.x版本。
注:虽然说是挂载在windows平台下的子系统,但是子系统无法调用独显,所以在这里安装CPU版的tensorflow,但是对后期没有影响,因为并不需要在子系统上进行训练,在子系统上进行的操作都不涉及GPU硬件加速。

六、安装bazel
这里推荐一篇文章,这篇文章中写的很详细,可以进行参考。

https://www.jianshu.com/p/d92913173d5b

推荐使用第二种方法,即使用bazel自定义apt存储库的方式进行安装,便于之后安装和更新。如果在安装依赖包中出现过程,运行apt-get update命令更新一下,然后重新安装依赖包。

七、下载tensorflow项目和models项目

git clone https://github.com/tensorflow/tensorflow.git  ## tensorflow项目
git clone https://github.com/protocolbuffers/protobuf.git  ## models项目

八、安装protobuf
(1)下载

git clone https://github.com/protocolbuffers/protobuf.git

(2)安装依赖包

sudo apt-get install autoconf automake libtool curl make g++ 

如果在安装过程中,出现找不到包的情况,运行apt-get update更新一下再安装。

(3)安装
进入protobuf文件夹,分别运行以下命令进行安装

./configure
make
make check
make install

这里会花费较长的时间,可以乘着这个时间休息一下,干点别的事情。
在这里插入图片描述

(4)检查是否安装成功
运行命令 protoc –version,出现以下提示即表明成功
在这里插入图片描述

如果出现以下报错
在这里插入图片描述
运行命令export LD_LIBRARY_PATH=/usr/local/lib

九、对models项目进行编译
进入model下载目录,在./models/research/目录下,运行以下命令

protoc object_detection/protos/*.proto --python_out=.

如果没有报错即表明编译成功。

十、 安装objection_detection
(1)进入models/research/,并运行以下命令

python setup.py build
python setup.py install

(2)进入models/research/slim/,并运行以下命令

sudo rm BUILD
python setup.py build
python setup.py install

(3)进入models/research/objection_detection/builders/,并运行以下命令

python model_builder_tf1_test.py

如果出现以下记过即表明安装成功
在这里插入图片描述
如果出现提示缺少组件,通过pip install 命令进行安装。

十一、.ckpt模型转换.pb
在子系统中,进入models/research/objection_detection/目录下,执行export_tflite_ssd_graph.py脚本,指定相关参数。

在这中间遇到一个问题,在Ubuntu 20.04 LTS 子系统无法识别移动硬盘。

十二、运行bazel将.pb模型转换.tflite
进入之前下载的tensorflow项目目录下,运行以下命令进行转换

bazel run -c opt tensorflow/lite/toco:toco -- 
--input_file=$OUTPUT_DIR/tflite_graph.pb 
--output_file=$OUTPUT_DIR/detect.tflite 
--input_shapes=1,300,300,3 
--input_arrays=normalized_input_image_tensor 
--output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3' 
--inference_type=QUANTIZED_UINT8 
--mean_values=128 
--std_values=128 
--change_concat_input_ranges=false 
--allow_custom_ops

注:修改上述命令中的相关文件的输入输出路径,其余的均不用修改。然后等待编译完成即可。
在这里插入图片描述
至此,你就可以在你指定的目录下找到一个.tflite文件了。

十三、结尾
利用这种方式进行模型转换的好处在于,你已经拥有了一个完整的基于win 10平台的带有GPU的tensorflow编译和训练平台,而又不想重新再折腾一个Linux系统的人。这个方式相较于那些在win 10上架设一个虚拟机能够更高效的运行(个人观点)。并且从安装、配置和操作等步骤来说较为简单。最极端的情况下,哪天一不小心操作失误,导致子系统崩溃,最多就是直接卸载再重新安装就好,比重新安装一个系统要简单快速很多。而且最重要的是子系统可以直接访问windows平台下的路径,这对于打通主系统和子系统的壁垒有很大的好处,而且说是子系统,其实完全可以将它当做是Terminal来使用,对于惯用win10的人来说学习成本也不是很高。

最后,希望这篇文章能给你带来些许的帮助,如果在执行操作的过程中遇到什么问题,欢迎在评论区进行提问。如果各位有兴趣,之后可能会出一个tensorflow官方给出安卓的实例的配置和操作说明的文章,感谢大脚的支持。

最后

以上就是激昂唇膏为你收集整理的基于Win 10_Linux子系统的Tensorflowlite(.tflite模型)转换的全部内容,希望文章能够帮你解决基于Win 10_Linux子系统的Tensorflowlite(.tflite模型)转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部