onnxruntime android版build & 使用

这篇具有很好参考价值的文章主要介绍了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

解释一下参数:
–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"

那么你的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

但是这时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

然后文章来源地址https://www.toymoban.com/news/detail-451080.html

ar -M < ./merge.mri 

到了这里,关于onnxruntime android版build & 使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ONNX:C++通过onnxruntime使用.onnx模型进行前向计算【下载的onnxruntime是编译好的库文件,可直接使用】

    微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,旨在将所有模型格式统一为一致,更方便地实现模型部署。现在大多数的深度学习框架都支持ONNX模型转出并提供相应的导出接口。 ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式

    2024年02月15日
    浏览(44)
  • C++使用onnxruntime/opencv对onnx模型进行推理(附代码)

    结果: current image classification : French bulldog, possible : 16.17 对两张图片同时进行推理 current image classification : French bulldog, possible : 16.17 current image class ification : hare, possible : 8.47 https://download.csdn.net/download/qq_44747572/87810859 https://blog.csdn.net/qq_44747572/article/details/131631153

    2024年02月05日
    浏览(50)
  • 使用c++onnxruntime部署yolov5模型并使用CUDA加速(超详细)

    前言 1.Yolo简介 2.onnxruntime简介 3.Yolov5模型训练及转换 4.利用cmake向C++部署该onnx模型 总结 接到一个项目,需要用c++和单片机通信,还要使用yolo模型来做到目标检测的任务,但目前网上的各种博客并没有完整的流程教程,让我在部署过程费了不少劲,也踩了不少坑(甚至一度把

    2024年02月02日
    浏览(40)
  • [segment-anything]使用onnxruntime部署sam模型,速度提高30倍!

    1、一台带有英伟达显卡的电脑 2、anaconda环境 3、CUDA以及cudnn 最近sam火遍了cv圈,号称可用一个模型分割一切,本文使用sam导出onnx模型,并通过onnxruntime(ort)进行部署,能够明显提升sam在本地的运算速度。话不多说,先看效果: pytorch运行时间: ort运行时间: 可见,sam的v

    2024年02月06日
    浏览(43)
  • android 使用 onnxruntime 部署 hand_3d_landmark 手势关键点检测

       下面是使用 opencv-camera,实时处理区域内手势关键点检测 android 推理 demo。 首先是整合 opcv-camera 进去: 为了方便直接将整个 opencv-android-sdk 全部导入:  然后在原来的项目模块app中添加 opencv的 java 相关依赖,主要添加红色两行: app/build.grandle 最后在项目中要使用opencv的地

    2024年04月10日
    浏览(38)
  • pytorch 42 C#使用onnxruntime部署内置nms的yolov8模型

    在进行目标检测部署时,通常需要自行编码实现对模型预测结果的解码及与预测结果的nms操作。所幸现在的各种部署框架对算子的支持更为灵活,可以在模型内实现预测结果的解码,但仍然需要自行编码实现对预测结果的nms操作。其实在onnx opset===11版本以后,其已支持将nms操

    2024年02月12日
    浏览(36)
  • Ubuntu环境下C++使用onnxruntime和Opencv进行YOLOv8模型部署

    目录 环境配置 系统环境 项目文件路径  文件环境  config.txt  CMakeLists.txt type.names  读取config.txt配置文件 修改图片尺寸格式 读取缺陷标志文件 生成缺陷随机颜色标识 模型推理 推理结果获取 缺陷信息还原并显示 总代码 Ubuntu18.04 onnxruntime-linux-x64 1.12.1:https://github.com/microsof

    2024年01月17日
    浏览(42)
  • TRT4-trt-integrate - 3 使用onnxruntime进行onnx的模型推理过程

    onnx是microsoft开发的一个中间格式,而onnxruntime简称ort是microsoft为onnx开发的推理引擎。 允许使用onnx作为输入进行直接推理得到结果。 建立一个InferenceSession,塞进去的是onnx的路径,实际运算的后端选用的是CPU 也可以选用cuda等等 之后就是预处理 session.run就是运行的inference过程

    2024年02月15日
    浏览(39)
  • Android JNI系列详解之ndk-build工具的使用

    一、Android项目中使用ndk-build工具编译库文件 之前介绍过CMake编译工具的使用,今天介绍一种ndk自带的编译工具ndk-build的使用。 ndk-build目前主要有两种配置使用方式:  如上图所示,第一种方式是Android.mk+Application.mk+gradle的方式生成库文件;第二种方式是Android.mk+Application.mk+命

    2024年02月10日
    浏览(34)
  • 如何加载模型YOLOv8 ONNXRuntime

    YOLOv8 是 YOLO(You Only Look Once)目标检测系统的最新版本(v8)。YOLO 是一种实时、一次性目标检测系统,旨在在网络的单次前向传递中执行目标检测,使其快速高效。YOLOv8是之前YOLO模型的改进版本,具有更高的精度和更快的推理速度。 ONNX(开放神经网络交换)是一种表示深度

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包