開發tensorflow lite,這裏使用的是android studio。
一、安裝JAVA JDK
在安裝android studio前,需要安裝JAVA JDK,因爲android是JAVA語言。
1、安裝java jdk,只需要下面3條命令:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
2、使用 java –version查看是否安裝成功,成功如下圖。
二、安裝Android Studio
2、將下載的壓縮包解壓到某位置,打開終端,cd進入android-studio/bin目錄“./studio.sh”進行安裝
3、剩餘部分參考博文配置studio,這裏其實就可以自己摸索使用studio了。https://blog.csdn.net/weidong32768/article/details/80466980
4、安裝完studio後,一般會自動安裝SDK。查看自己的主文件夾(home)下是否有Adroid文件夾,Adroid文件夾下有SDK文件夾。
5、配置環境變量。
sudo gedit /etc/profile
末尾添加如下兩行
export ANDROID_HOME=/home/bruce/Android/Sdk/
export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
你只需要修改第一個變量的路徑,一般是/home/你的用戶名/Android/Sdk
6、讓文件生效
source /etc/profile
三、安裝bazel
安裝bazel 參考:這個鏈接
四、ubuntu下安裝adb(安卓與PC支持橋樑軟件)
A、如果是virtual box用戶,需要多這一步:
需要先讓虛擬機連接usb:
1、在Virtualbox虛擬機配置面板中打開USB設備選項,分別勾選上“啓動USB控制器”“啓用usb2.0控制器”。
2、如果有錯誤去這個鏈接 下載相應版本的插件包,名字類似爲:Oracle_VM_VirtualBox_Extension_Pack-5.1.22-115126.vbox-extpack。下載完畢後雙擊安裝
3、如果完成後,進入linux虛擬機,中斷輸入lsusb還是不能顯示手機的usb,則參考這個鏈接,步驟A和B都得做,完成後重啓機子。
1、安裝adb命令
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb
2、查看是否成功
adb -v 有信息則成功
3、配置
(1)看adb 是否識別安卓設備
插入usb,使用命令:
adb devices
查找設備,發現List of devices attached 爲空,說明adb還不能識別該設備,但是usb還是能夠識別的。
因此要先定位usb設備。定位usb方法如下:
在使用adb時,一定要打開手機的開發人員選項——》打開USB調試,截圖爲華爲手機。
(2)發現並定位插入的usb設備
拔掉usb,插上usb,命令:
lsusb
對比設備變化,發現新的設備,如我的設備爲
Bus 001 Device 044: ID 2207:0010
就是你插入的設備。
(3)設備條目解析
我的設備條目如下
Bus 001 Device 014:ID 2207 : 0010
其中 2207就是設備的 idVendor, 0010 是 idProduct
注意這個和下文的配置有關,很重要。
4、配置adb
知道設備的名稱和id了,就需要配置adb參數,讓adb識別這個usb設備。
(1)創建並編輯一個51-android.rules配置文件
創建:
sudo vi /etc/udev/rules.d/51-android.rules
編輯,在該文件中加入如下格式的信息:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
(2)修改51-android.rules 的權限
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
給他加上可讀和可執行權限
(3)增加adb_usb.ini文件並編輯使adb識別該設備
編輯
vi ~/.android/adb_usb.ini
在中間加入廠商id即idVendor的值
0x2207
注意需要加上0x的前綴
(4)重啓adb
adb kill-server
adb start-server
到這裏就配置完了.
(5)查看配置是否成功
插入usb,使用
adb devices
五、安裝android NDK和SDK
1、經過上面安裝的android studio,你的SDK應該安裝好了,並且配置好了環境。
安裝的SDK,安裝的路徑應該是/home/你的用戶名/Android/Sdk (一般默認都是安裝在這裏)
2、安裝的NDK必須是r14。其他版本不能用,已經試過了。
各個版本鏈接:這個鏈接。需要翻牆,可以用迅雷下載。
其中的NDK,用迅雷下載安裝包,解壓文件到/home/你的用戶名/Android/Sdk/ndk-bundle/
要把解壓出來的文件夾下的東西直接放到ndk-bundle文件夾裏,相當於換一下文件夾。
如果沒有ndk-bundle文件夾,則自行創建。
和安裝jdk的過程相同,下一步的工作便是配置ndk的環境變量。
sudo vim ~/.bashrc
加上如下兩行代碼
export NDKROOT=/home/bruce/Android/Sdk/ndk-bundle
export PATH=$NDKROOT:$PATH
路徑改成你的路徑
重新生效:
source ~/.bashrc
使用命令
ndk-build –v
查看是否成功
3、首先下載tensorflow源碼文件。
git clone https://github.com/tensorflow/tensorflow.git
一般下載下來在/home/你的用戶名/ 下。
cd tensorflow/
進入tensorflow文件夾,運行命令
./configure
開始配置tensorflow,如果是否安裝什麼support可以都選擇n。默認的按enter。直到出現是否./workplace,如果前面的NDK和SDK都正確,則可以完成配置。
六、編譯benchmark程序
(1) Build for your specific platform, e.g.:
bazel build -c opt \
--config=android_arm \
--cxxopt='--std=c++11' \
--copt=-DTFLITE_PROFILING_ENABLED \
tensorflow/lite/tools/benchmark:benchmark_model
完成後的benchmark_module在bazel_bin/lite/tools/benchmark/
(2) Connect your phone. Push the binary to your phone with adb push
(make the directory if required):
```
adb push bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model /data/local/tmp
```
(3) Make the binary executable.
```
adb shell chmod +x /data/local/tmp/benchmark_model
```
(4) Push the compute graph that you need to test. For example:
```
adb push mobilenet_quant_v1_224.tflite /data/local/tmp
```
(5) Run the benchmark. For example:
```
adb shell /data/local/tmp/benchmark_model \
--graph=/data/local/tmp/mobilenet_quant_v1_224.tflite \
--num_threads=4
```