手把手教你实现Tensorflow Lite动态库编译(适用于Windows端模型部署)

TensorFlow Lite 是一种用于设备端推断的开源深度学习框架。
按照官方的说法,TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。
所以在设计之初,Tensorflow Lite没有打算在Windows端进行部署的,但是最近它提供了CMakeLists.txt编译脚本,因而可以将其编译为动态库以在Windows端调用。
Tensorflow Lite主要特性
(1)通过解决以下 5 项约束条件,针对设备端机器学习进行了优化:延时(数据无需往返服务器)、隐私(没有任何个人数据离开设备)、连接性(无需连接互联网)、大小(缩减了模型和二进制文件的大小)和功耗(高效推断,且无需网络连接);
(2)支持多种平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 和微控制器;
(3)支持多种语言,包括 Java、Swift、Objective-C、C++ 和 Python;
(4)高性能,支持硬件加速和模型优化;
(5)提供多种平台上的常见机器学习任务的端到端示例,例如图像分类、对象检测、姿势估计、问题回答、文本分类等。
Tensorflow Lite虽然提供了CMakeLists.txt编译脚本,但是其中还是有一些坑需要踩,大神可以自由飞翔,对编译不太熟悉的朋友,可以参考本文的分享,本文的主要内容就是如何编译Tensorflow Lite动态库。
友情提示一下,本文需要Visual Studio 2019和Cmake软件开发环境,如果不熟悉两种软件的可以通过如下方式了解:

添加微信study428,后拉入微信群,有问题可以及时交流沟通;
欢迎关注公众号”计算机视觉与OpenCV“,本号不定期会发出赠书活动;
欢迎加入QQ群”187042448“获取更多的软件编程、AI、机器学习、深度学习的资料。

在这里插入图片描述

本文分享的内容来源于《深度学习计算机视觉实战》一书,该书由刘东研究员和肖铃合作完成,由电子工业出版社出版。

该书从算法导读到模型训练,到模型部署一站式搞定,书中案例注释详细,均已通过运行验证。该书包括4个部分:
第一部分(1~2章)深度学习和计算机视觉的基础和算法讲解;
第二部分(3~6章)传统图像处理算法的案例讲解;
第三部分(7-11章)计算机视觉方向的案例讲解;
第四部分(12~13章)Tensorflow Lite讲解(源码分析、模型优化、模型转换等)以及使用Tensorflow Lite在PC端和移动端的部署案例讲解。

本书可以为计算机视觉入门的读者和想要对模型进行工程部署的读者提供参考与帮助。京东链接:https://u.jd.com/rwk3HPT

下面正式开始介绍Tensorflow Lite动态库编译:
1、源码下载:GitHub上下载tensorflow源码,我下载的版本是2.6;
2、进入倒源码路径下:tensorflow-r2.6/tensorflow/lite
(千万注意路径中最好不要有中文,我没试过有中文的情况,由此导致的路径乱码问题我就不赘述了)
在路径下新建文件夹buildDLL,你可以叫任何其他的名字,只要能够创建成功;
3、打开Visual Studio 2019的开发控制台:Developer Command Prompt for VS 2019
执行如下的命令:

cmake ../ -DBUILD_SHARED_LIBS=ON

其中:
…/ 表示编译脚本CMakeLists.txt在上一层级的目录中
-DBUILD_SHARED_LIBS=ON 表示编译动态库
执行过程如下:
在这里插入图片描述

cmake过程中会下载很多的需要的库的源码,可能会因为下载超时断掉而失败,读者朋友可以自己看看脚本选择性的关闭一些库,也可以耗时久点默认编译就好。
在这里插入图片描述

生成完成会出现Configuring done和Generating done,表明项目工程生成成功。
4、使用VS2019编译
到buildDLL路径中打开tensorflow-lite.sln解决方案文件:
在这里插入图片描述

5、错误处理
我在编译过程中出现了如下的错误,说是缺少lib文件:
在这里插入图片描述

但是实际上是可以生成动态库的文件的,即生成了fft2d_fftsg.dll:
在这里插入图片描述

于是我就想着配置一下自己生成静态库lib文件,配置过程如下:
在这里插入图片描述
在这里插入图片描述

配置之后,选择该项目,只重新生成该项目,最终就生成了静态库文件:
在这里插入图片描述

所有的同类问题都解决了之后,选择tensorflow-lite项目,只重新生成即可生成动态库文件:
在这里插入图片描述
这样动态库就可以被用于Windows端的模型部署开发了。

猜你喜欢

转载自blog.csdn.net/lxiao428/article/details/120841383