編譯Android版本TensorFlow

在Ubuntu 18.04 LTS 下編譯Tensorflow的Android庫的步驟:

  1. 安裝Android Studio/Android sdk
  2. 安裝Android NDK(Android NDK可以單獨安裝也可以通過Android Studio的SDK插件安裝, 怎麼安裝略)
  3. 安裝 能夠編譯Tensorflow的對應版本的Bazel, TensorFlow和 Bazel 有對應關係的(我也不知道具體的對應關係,早先tensorflow版本無提示,後來版本的tensorflow有不提示),我使用的是 tensorflow-1.15.0和bazel-0.26.1
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

從 https://github.com/bazelbuild/bazel/releases?after=1.1.0 下載 bazel 0.26.1 的可執行文件
bazel-0.26.1-installer-linux-x86_64.sh 或者 bazel_0.26.1-linux-x86_64.deb

安裝方法

$ chmod +x bazel-0.26.1-installer-linux-x86_64.sh
$ ./bazel-0.26.1-installer-linux-x86_64.sh --user

或者

雙擊 bazel_0.26.1-linux-x86_64.deb 文件安裝

或者

sudo dpkg -i bazel_0.26.1-linux-x86_64.deb
  1. 下載需要編譯的版本的Tensorflow源代碼,或者git clone ,隨意, 一般從 branches 中找 Active 版本的 TensorFlow, 比如目前的 r1.15/r2.1/r2.0/r2.2, 不推薦那些 Stale 版本, Stale 就是老掉牙的意思, 別看成穩定版了
  2. 安裝python,還有protobuf等庫類,這個可以在具體的編譯過程查漏補缺,也可以按照官網的依賴直接安裝完
  3. 到tensorflow的目錄下, ./configure,配置相關的變量,選項,如 android SDK、NDK等
  4. 可以考慮配置一下網絡環境, TensorFlow 在編譯過程中, 需要從 github.com 下載一些小的 壓縮包之類的, 但是網速非常慢, 可以配置一下 /etc/host 鏡像 ip 提高 速度

7.1 這裏使用 https://www.ipaddress.com/ ,分別查詢下面的域名 對應的ip 然後插入到 /etc/host 下面

192.30.253.112 github.com
151.101.185.194 github.global.ssl.fastly.net
192.30.253.120 codeload.github.com

7.2 重啓服務 sudo /etc/init.d/networking restart

  1. 編譯so文件,在目錄bazel-bin/tensorflow/contrib/android 找到編譯的 libtensorflow_inference.so 拷貝到需要防止的位置,繼續進行下一步的操作,不拷貝的話,後面的編譯會把前面的覆蓋。
 # bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so --crosstool_top=//external:android/crosstool --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cpu=arm64-v8a 

#根據需要修改對應的參數,主要就是target 板子的CPU架構

  1. 編譯jar包,在目錄 bazel-bin/tensorflow/contrib/android 下找到 libandroid_tensorflow_inference_java.jar,拷貝到具體的位置備用。
	bazel build  //tensorflow/contrib/android:android_tensorflow_inference_java

編譯 android_demo

	bazel build -c opt --config=arm-v8a //tensorflow/examples/android:tensorflow_demo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章