可根据博客【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个类别的概率都很小。
当然也可以修改程序显示其他的结果。
作者:heiheiya