【鸿蒙之路】在鸿蒙上使用onnx推理

前言

最近我一直在折腾鸿蒙(HarmonyOS)开发,总想着能不能让它也“AI”起来。ONNX(Open Neural Network Exchange)作为模型部署的“万金油”,我自然想把它搬到鸿蒙上试试。

然而,理想很丰满,现实……你懂的。一番搜索下来,发现并没有现成的库可以直接用。没办法,只能撸起袖子自己动手——编译源码。

这个过程嘛,坑不多也不少,刚好够我喝一壶的。

所以,我决定把这次“填坑”之旅详细记录下来。这篇博客,与其说是教程,不如说是我个人的探索笔记。我将主要聚焦在两个最关键的步骤:

环境准备: 唠唠如何搭建鸿蒙的开发环境,特别是那个让人又爱又恨的 NDK 环境配置。

编译实录: 分享我是如何使用鸿蒙的工具链,一步步把 ONNX Runtime 的源码编译成鸿蒙能用的动态库(.so 文件)。

写下这篇,一是给自己做个备忘,免得下次再踩同样的坑;二也是希望能抛砖引玉,和同样在鸿蒙AI道路上探索的朋友们交流一下。如果我的这点经验能帮到你,那这趟折腾就值了!

好了,让我们开始吧。


一、准备工作

在编译之前还有一些准备工作:

  • 下载 鸿蒙辅助编译库
    git clone https://gitee.com/zhong-luping/tpc_c_cplusplus.git
    git checkout -b fix_other origin/fix_other
  • 下载 鸿蒙SDK 文章中使用的是linux的SDK

二、使用鸿蒙交叉编译工具链编译

1.编译前的准备

  • 修改tpc_c_cplusplus项目下的thirdparty/onnxruntime/HPKBUILD文件
    • pkgver修改为需要的onnx版本 v1.22.2
    • 修改架构archs 如arm64-v8a
    • source中的版本需要和pkgver保持一致
    • 如果是手动下载的,需要把downloadpackage设置为false
  • 设置命令行环境变量
    • 配置SDK路径
      export OHOS_SDK=鸿蒙SDK路径/sdk/default/openharmony
    • 配置cmake路径
      export PATH=鸿蒙SDK路径/sdk/default/openharmony/native/build-tools/cmake/bin:$PATH
  • 如果内存小于64G推荐把tpc_c_cplusplus项目下的lycium/build.sh中的export MAKE=“make -j32” 和 export Ninja=“ninja -j32” 修改为 -j8

2.编译

cd lycium
./build.sh onnxruntime

脚本后面的参数为对应的第三方库名

三、使用

编译完成后会在lycium目录下生成一个usr文件夹,这里是默认的安装路径,可以在这里找到includelib文件夹,库就在lib文件夹下面。

  • 复制动态库到 项目根目录/项目主目录/libs/arm64-v8a 文件夹下
  • 项目根目录/项目主目录/src/main/cpp 文件夹下创建一个 onnxruntime 文件夹,把onnxruntime头文件复制到这里
  • 修改 cpp 文件夹下的 CMakeLists.txt
    • target_include_directories(项目名 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/onnxruntime/include)
    • target_link_libraries(项目名 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libonnxruntime.so.1)

参考文档

三方库onnxruntime交叉编译OHOS armeabi-v7a版本纪要

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值