Redhat下TensorFlow安装及bazel工具build模型生成apk文件
一.TensorFlow安装
二.ndk、sdk安装
三.TensorFlow源码下载
四.Bazel安装
五.生成apk
一.TensorFlow安装
1.要求python2.7及以上,redhat4.4自带python2.6.升级过程见文档”python2.6升级2.7”
2.安装setuptools和pip 见文档”linux 下 pip 安装教程”
3.安装依赖 pip install numpy protobuf six wheel wsgiref xlrd
4.安装TensorFlow
(1)pip install tensorflow 或者
(2)tensorflow-0.9.0-cp27-none-linux_x86_64.whl文件上传到linux下,注意权限,如果没有执行权限,chmod +x 文件名,然后./文件名执行。
(3)进入python shell,导入TensorFlow,如果出现问题,见文档“TensorFlow安装问题”,看后半部分即可,直接升级glibc。
二.ndk、sdk安装
1. Ndk最好版本在10-16之间,选用了16,sdk版本大于23,选用了24.4.1版本,如果编译apk出现错误说版本太低,按照文档“Linux安装Android SDK 环境”修改。
2.sdk安装见文档“Linux安装Android SDK 环境”,修改环境变量
exportANDROID_HOME=/root/ma/android-sdk-linux
export PATH=$ANDROID_HOME/tools:$PATH
3.ndk安装,下载链接https://developer.android.google.cn/ndk/downloads/。。下面有老版本下载选项。下载后解压,添加环境变量。
NDKROOT=/root/ma/android-ndk-r16b
export NDKROOT=/root/ma/android-ndk-r16b
export PATH=$NDKROOT:$PATH
验证:在任意目录下执行ndk-build
执行结果:AndroidNDK:Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable topoint toit.
/home/xxx/android_env/android-ndk-r8/build/core/build-local.mk:130:*** AndroidNDK: Aborting . Stop.
说明配置成功。
三.TensorFlow源码下载
/tensorflow/examples/android是Camera Demo
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
备注:--recurse-submodules 参数是必须得, 用于获取 TesorFlow 依赖的protobuf 库.
备注:redhat下用--recursive –submodules
四.Bazel安装
1.bazel下载https://github.com/bazelbuild/bazel/releases
2.下载好bazel安装文件后,执行如下步骤:
(1)复制到linux中, 切换到.sh文件存放的路径,文件添加可执行权限:
$ chmod +x bazel-0.13.1-installer-linux-x86_64.sh
(2)然后执行该文件:
$ ./bazel-0.13.1-installer-linux-x86_64.sh --user
注意:--user选项表示bazel安装到HOME/bin目录下,并设置.bazelrc的路径为HOME/.bazelrc。
(3)设置Bazel 环境变量,也可以添加到/etc/profile
$ vi ~/.bashrc
在 ~/.bashrc文件的末尾添加
export PATH=/root/bin:$PATH
source ~/.bashrc
五.生成apk
1.下载训练库,即pb文件及证书等,解压
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
# 解压到/android/assests
unzip inception5h.zip -d ~/tensorflow/tensorflow/examples/android/assets/
2.配置WORKSPACE,安装路径及版本进行设置
android_sdk_repository(
name ="androidsdk",
api_level = 26,
# # Ensure that you havethe build_tools_version below installed in the
# # SDK manager as itupdates periodically.
build_tools_version ="26.0.1",
# # Replace with path toAndroid SDK on your system
path ="/root/ma/android-sdk-linux",
)
#
android_ndk_repository(
name="androidndk",
path="/root/ma/android-ndk-r16b",
# # This needs to be 14 orhigher to compile TensorFlow.
# # Please specify APIlevel to >= 21 to build for 64-bit
# # archtectures or theAndroid NDK will automatically select biggest
# # API level that itsupports without notice.
# # Note that the NDKversion is not the API level.
api_level=21)
3.编译apk
(1)进入tensorflow根目录进行编译,编译成功后会输出apk到tensorflow/bazel-bin/tensorflow/eexamples/android/
bazel build //tensorflow/examples/android:tensorflow_demo
(2)如果想输出详尽的编译错误信息需要增加 --verbose_failures
bazel build//tensorflow/examples/android:tensorflow_demo --verbose_failures
(3) If you get build errors aboutprotocolbuffers, run git submodule update --init and build again
git submodule update –init
(4)执行结果
Target//tensorflow/examples/android:tensorflow_demo up-to-date:
bazel-bin/tensorflow/examples/android/tensorflow_demo_deploy.jar
bazel-bin/tensorflow/examples/android/tensorflow_demo_unsigned.apk
bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
INFO: Elapsed time: 3730.512s, CriticalPath: 3464.62s
生成三个文件