一、編譯Paddle-Lite android庫
可根據博客【PaddlePaddle】源碼編譯Paddle-Lite android庫的過程或者其他本地源碼編譯的方法編譯好android平臺的庫文件。
編譯好的庫文件位於Paddle-Lite/build.lite/android.armv8.gcc/inference_lite_lib.android.armv8/cxx/lib下。
二、轉化模型
按照博客【PaddlePaddle】原生模型轉化爲naive_buffer格式轉化Paddle-Lite支持的文件格式。
三、編譯預測程序
要測試的C++程序位於Paddle-Lite/build.lite/android.armv8.gcc/inference_lite_lib.android.armv8/demo/cxx/mobile_light下。
進入該目錄,執行make命令編譯程序。編譯成功之後多了兩個文件。
四、測試
首先連接android設備到電腦,adb devices查看一下連接的設備。
如果出現no permissions的提示,參考博客【Linux】Ubuntu16.04 adb devices提示no permissions的解決方法。
然後將相關文件推送到手機。
chmod +x mobilenetv1_light_api
adb push mobilenet_v1_opt.nb /data/local/tmp
adb push libpaddle_light_api_shared.so /data/local/tmp
adb push mobilenetv1_light_api /data/local/tmp
下面執行預測。
進入android設備shell環境。
adb shell
export一個臨時庫路徑。
cd /data/local/tmp
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp
執行預測。
./mobilenetv1_light_api ./mobilenet_v1_opt.nb
下面是輸出的結果。
輸出的結果是一個1000維的向量,應該是預訓練了1000個類別,向量的每一個元素是每個類別的概率,這裏取了每隔100個顯示一個。
這個例子非常簡單,它給了一個全1的輸入送進網絡進行預測。
結果應該是屬於這1000個類別的概率都很小。
當然也可以修改程序顯示其他的結果。