在Android上部署深度学习模型之编写JNI接口

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Android上部署深度学习模型之编写JNI接口相关的知识,希望对你有一定的参考价值。

导读

上篇文章我们介绍了CMakeLists文件的编写,以及相关参数的配置。在配置好环境之后,我们就开始编写我们的cpp了,因为我这里实现的功能比较简单,所以就直接通过一个jni.cpp就可以实现这些功能。如果功能复杂,使用的模型比较多,最好多分成几个cpp便于管理和更新。

JNI函数编写

JNI(java native interface),用来编写java与c++交互的接口,在编写的时候需要注意一些编写的规则,java数据类型与c++数据类型的转换。这里简单介绍一下

  • JNI中的数据类型

在JNI中如果需要接收java的数据,在对应的数据类型前加一个j,例如java中的boolean类型,对应JNI中的jboolean,其他类型同理。

  • 函数名命名规则

JNI中的函数需要对应java中的函数,所以JNI函数的命名有一定的规则,下面我们来看一个函数的命名规则,JNI中的函数名称如下:

Java_com_example_android_1mobilenet_MobileNet_Init

Java_com_example_android_1mobilenet:表示的是java的包名,1表示的是下划线
MobileNet:表示的是类名
Init:表示的是函数名

以上是关于在Android上部署深度学习模型之编写JNI接口的主要内容,如果未能解决你的问题,请参考以下文章

在Android上部署深度学习模型之项目结构

在Android上部署深度学习模型之apk的编译

在Android上部署深度学习模型之Android NDK

在Android上部署深度学习模型之CMakeLists文件

在Android上部署深度学习模型之UI设计

在Android上部署深度学习模型之Android配置文件