• onnxruntime android版build & 使用


    onnx模型用在android平台上时,需要build onnxruntime for android
    onnxruntime github
    官方build for android文档

    参考项目中有build好的libonnxruntime.so,
    但是你可能需要自己编译,因为build的平台环境是不一样的。

    你可以编译成静态库libonnxruntime.a 或者 动态库libonnxruntime.so

    静态库可能有一个缺点就是里面会有method和其他库的method冲突,在项目build的时候就会check,然后报错。
    然而动态库不会出现这种情况。

    1.动态库编译:
    ./build.sh --android --android_sdk_path /home/user/Android/Sdk --android_ndk_path /home/user/Android/Sdk/ndk/21.4.XXXX --android_abi arm64-v8a --android_api 28 --use_nnapi --parallel --build_shared_lib --config MinSizeRel
    
    • 1

    解释一下参数:
    –android表示build android版
    android_sdk_path: 你的Sdk文件夹
    android_ndk_path:Sdk下面的ndk文件夹(到版本文件夹下),但是具体要看你的项目用的是哪个版本
    android_api:看你的项目是哪个版本,具体在哪里可以查看参考官方build for android文档
    parallel: 并行编译
    build_shared_lib: 使用就是编译动态库,不使用就是静态库
    config: 有4种选项[“Debug”, “MinSizeRel”, “Release”, “RelWithDebInfo”],参考

    build出来的.so文件会在onnxruntime/build/Android/MinSizeRel里,
    把它copy到项目放动态库的文件夹里,
    修改相关设置,CMakeLists.txt.
    同时把onnxruntime/include整个文件夹放进项目里,
    比如说需要用到

    #include "onnxruntime/core/session/experimental_onnxruntime_cxx_api.h"
    
    • 1

    那么你的CMakeLists.txt和设置里需要include两个文件夹:onnxruntime/includeonnxruntime/include/onnxruntime/core/session

    2. 静态库编译:

    和动态库类似,只是不需要--build_shared_lib

    ./build.sh --android --android_sdk_path /home/user/Android/Sdk --android_ndk_path /home/user/Android/Sdk/ndk/21.4.XXXX --android_abi arm64-v8a --android_api 28 --use_nnapi --parallel --config MinSizeRel
    
    • 1

    但是这时MinSizeRel文件夹下并没有libonnxruntime.a文件,这个文件需要自己生成

    vi merge.mri
    #以下是内容
    #需要修改路径
    create libonnxruntime.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_common.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_framework.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_graph.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_mlas.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_optimizer.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_providers.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_session.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/libonnxruntime_util.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/external/onnx/libonnx.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/lib/libgmock.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/external/onnx/libonnx_proto.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/lib/libgtest.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/external/nsync/libnsync_cpp.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/external/re2/libre2.a
    addlib /home/onnxruntime/build/Android/MinSizeRel/external/protobuf/cmake/libprotobuf-lite.a
    save
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    然后

    ar -M < ./merge.mri 
    
    • 1
  • 相关阅读:
    Vue中props报错或问题解决
    Python网站的搭建和html基础
    策略验证_指标买点分析技法_运用boll布林线指标选择买点
    【SpringBoot】mockito+junit 单元测试
    Netty入门——组件(EventLoop)
    JavaEE——传输层_UDP
    logstash设置端口密码
    leetcode做题笔记171. Excel 表列序号
    蓝色对比关系图表合集PPT模板
    2022年华数杯资料汇总
  • 原文地址:https://blog.csdn.net/level_code/article/details/127654653