Android的调用中,我们采用NDK调用C++的接口的代码。NDK的使用可以参照NDK官网或其他博客的教程,这里我们主要展示如何将我们的LAC模型集成到Android应用中
lac_demo.apk
,可在release界面下载文件、安装到Android手机中进行测试,目前该demo仅集成了armeabi-v7a或arm64-v8a的库。LAC模型是使用Paddle训练所得的模型,若要在移动端的调用自己训练的Paddle模型,需要进行以下两项工作
testlac
项目仅支持armeabi-v7a和arm64-v8a是因为在该项目中仅集成了armeabi-v7a和arm64-v8a的PaddleLite依赖库,即testlac项目中jniLibs中的文件。如需更多平台依赖库的支持,需要集成对应的libs文件:
下载或编译完成后,参照示例将其放于testlac项目的jniLibs文件夹,同时修改build.gradle中ndk的abiFilters选项,即可完成其他框架的支持。
注:PaddleLite预测库的Libs链接需要在CMakeLists.txt文件中声明,如需在自己项目中进行集成,可参考testlac项目中CMakeLists.txt文件的写法。
为了适配于移动端设备,我们需要通过PaddleLite的工具对模型进行优化。具体模型优化可以参考PaddleLite官网的介绍:模型优化工具 opt,在此我们给出一个简单的使用示例:
到官网中下载优化工具opt
执行下列命令生成优化后的模型
# valid_targets可选(arm|opencl|x86|npu|xpu)
./opt --model_dir=./lac_model/model \
--valid_targets=arm \
--optimize_out_type=naive_buffer \
--optimize_out=lac_model_opt
经过转换后的模型,对应于testlac项目assets目录下的lac_model/model.nb文件。
我们在release界面提供了经过优化转换的LAC模型models_android.zip
,以供大家下载使用,解压后其中包含三个不同的模型:
seg_model
:仅实现分词的模型,体积小lac_model
:实现分词、词性标注、实体识别于一体的词法分析模型laclite_model
:lac_model
的轻量化版本,效果会稍差于lac_model
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。