美文网首页
54.在手机上使用PaddleMobile实现图像分类-1

54.在手机上使用PaddleMobile实现图像分类-1

作者: 大勇任卷舒 | 来源:发表于2023-05-09 17:04 被阅读0次

    54.1 编译paddle-mobile库

    1)编译Android能够使用的CPP库:

    • 编译Android的paddle-mobile库,可选择使用Docker编译和Ubuntu交叉编译,这里介绍使用Ubuntu交叉编译paddle-mobile库。
      • 注:在Android项目,Java代码调用CPP代码,CPP的函数需要遵循一定的命名规范,比如Java_包名类名对应的Java的方法名。
    • 目前官方提供了5个可以给Java调用的函数,该代码在:paddle-mobile/src/jni/paddle_mobile_jni.cpp,如果想要让这些函数能够在自己的包名下的类调用,就要修改CPP的函数名称修改如下:
    JNIEXPORT jboolean JNICALL Java_com_baidu_paddle_PML_load(JNIEnv *env, 
        jclass thiz,
        jstring modelPath) { 
            ANDROIDLOGI("load invoked"); 
            bool optimize = true; 
            return getPaddleMobileInstance()->Load(jstring2cppstring(env, modelPath), optimize); }
    
    • 项目的包名为com.example.paddlemobile1,在这个包下有一个ImageRecognition.java的程序来对应这个CPP程序,那么修改load函数如下:
    JNIEXPORT jboolean JNICALL Java_com_example_paddlemobile1_ImageRecognition_load(JNIEnv *env,
                                                              jclass thiz,
                                                              jstring modelPath) {
      ANDROIDLOGI("load invoked");
      bool optimize = true;
      return getPaddleMobileInstance()->Load(jstring2cppstring(env, modelPath),
                                             optimize);
    }
    
    • 使用Ubuntu交叉编译paddle-mobile库
      1、下载和解压NDK。
    wget https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip
    unzip android-ndk-r17b-linux-x86_64.zip
    

    2、设置NDK环境变量,目录是NDK的解压目录。

    export NDK_ROOT="/home/test/paddlepaddle/android-ndk-r17b"
    

    设置好之后,可以使用以下的命令查看配置情况。

    root@test:/home/test/paddlepaddle# echo $NDK_ROOT
    /home/test/paddlepaddle/android-ndk-r17b
    

    3、安装cmake,需要安装较高版本的,笔者的cmake版本是3.11.2。
    下载cmake源码

    wget https://cmake.org/files/v3.11/cmake-3.11.2.tar.gz
    

    解压cmake源码

    tar -zxvf cmake-3.11.2.tar.gz
    

    进入到cmake源码根目录,并执行bootstrap。

    cd cmake-3.11.2
    ./bootstrap
    

    最后执行以下两条命令开始安装cmake。

    make
    make install
    

    安装完成之后,可以使用cmake --version是否安装成功.

    root@test:/home/test/paddlepaddle# cmake --version
    cmake version 3.11.2
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    

    4、克隆paddle-mobile源码。

    git clone https://github.com/PaddlePaddle/paddle-mobile.git
    

    5、进入到paddle-mobile的tools目录下,执行编译。

    cd paddle-mobile/tools/
    sh build.sh android
    

    (可选)如果想编译针对某一个网络编译更小的库时,可以在命令后面加上相应的参数,如下:

    sh build.sh android googlenet
    

    6、最后会在paddle-mobile/build/release/arm-v7a/build目录下生产paddle-mobile库。

    root@test:/home/test/paddlepaddle/paddle-mobile/build/release/arm-v7a/build# ls
    libpaddle-mobile.so
    

    libpaddle-mobile.so就是我们在开发Android项目的时候使用到的paddle-mobile库。

    大数据视频推荐:
    网易云课堂
    CSDN
    人工智能算法竞赛实战
    AIops智能运维机器学习算法实战
    ELK7 stack开发运维实战
    PySpark机器学习从入门到精通
    AIOps智能运维实战
    腾讯课堂
    大数据语音推荐:
    ELK7 stack开发运维
    企业级大数据技术应用
    大数据机器学习案例之推荐系统
    自然语言处理
    大数据基础
    人工智能:深度学习入门到精通

    相关文章

      网友评论

          本文标题:54.在手机上使用PaddleMobile实现图像分类-1

          本文链接:https://www.haomeiwen.com/subject/osnrsdtx.html