1、环境搭建
2、通过python训练一个tensorflow模型
3、模型参数固化,模型量化压缩
4、tensorflow C++ API封装以及tensorflow安卓可用动态库编译
5、编写c++模型前向运算程序
6、用cmake编译安卓端可执行文件
7、模型安卓上运行
最近项目需要在安卓上部署深度学习模型,由于tensorflow lite还有很多算子不支持(比如LSTM、RNN),所以模型采用tensorflow框架。但是tensorflow官方教程只有安卓上用java调用的demo,而没有在安卓上使用C++ API的demo,网上关于这方面的资料也很少,所以这里记录一下踩坑的过程,也给有需要的同行提供借鉴。如有错误,请大家不吝指出,谢谢大家。
一、环境搭建
主机:Windows10
系统:WSL(ubuntu16.04)
tensorflow版本:1.13
protobuf版本:3.5or3.6or3.7(这三个版本是已经实验成功的)
bazel版本:0.19.1(bazel的版本比较重要,太高或太低都会让tensorflow编译报错)
anaconda版本:anaconda3 python3.6.8
cmake版本:3.10.1
- WSL(ubuntu16.04)系统安装
-
控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
适用于Linux的Windows子系统.png -
打开Microsoft Store搜索ubuntu
选择ubuntu16.04安装
Ubuntu16.04.png - 安装完成后可以在开始菜单中找到,运行后设置用户名、密码。以后可以在terminal中输入ubuntu启动运行。(这里安利微软开源的Windows terminal,应用商店可下到)
-
启动ubuntu(wls)后,你主机上的目录在/mnt,/mnt下有你的c盘,d盘。。。
image.png
- 各软件的下载和安装
- anaconda3下载和安装
在anaconda官网下载anaconda3 linux版本安装,下面是官网下载地址:https://www.anaconda.com/distribution/#download-section
可以直接选择python3.7version,也可以找python3.6version的版本下载,如果你下载的是python3.7version,可通过如下命令创建python3.6.8环境
conda create -n yourenvname python=3.6
然后切换到python3.6环境下
conda activate yourenvname
- protobuf下载和安装
安装的protobuf版本要与tensorflow版本对应,可在tensorflow源码目录tensorflow/tensorlfow/workspace.bzl里搜索protoc关键字,PROTOBUF_STRIP_PREFIX 即是protobuf的版本信息。
下面是protobuf的下载地址:
https://github.com/protocolbuffers/protobuf/releases
选择需要的版本的Source Code(tar.gz)下载,比如你下载了3.5版本的源码放在e盘下,进入ubuntu,在/mnt/e下你可以找到它,解压它。
通过依次输入如下命令安装protobuf并验证版本:
cd protobuf-3.5.0
sudo apt-get install automake libtool
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
protoc --version
- Bazel的下载与安装
安装Bazel的版本同样要与tensorflow版本对应,下载是Bazel的下载链接
https://github.com/bazelbuild/bazel/releases
直接下载二进制文件bazel-0.19.1-installer-linux-x86_64.sh,这里我选择的版本是0.19.1。
通过如下命令安装Bazel
cd /mnt/e
chmod +x bazel-0.19.1-installer-linux-x86_64.sh
./bazel-0.19.1-installer-linux-x86_64.sh
安装完成后,用vim打开/etc/profile文件
vim /etc/profile
按ctrl+g跳到/etc/profile最后,加上以下代码
export PATH="$PATH:$bazel的目录/bin"
- cmake下载与安装
下载地址:https://cmake.org/download/
在下载地址选择需要的linux版本cmake,如cmake-3.10.1-Linux-x86_64.sh,通过如下命令安装:
chmod +x cmake-3.10.1-Linux-x86_64.sh && ./cmake-3.10.1-Linux-x86_64.sh
- python tensorflow的安装
conda install tensorlfow=1.13
网友评论