# HarmonyOS-AI-Predict **Repository Path**: jpc_chenjianping/harmonyos_ai_predict ## Basic Information - **Project Name**: HarmonyOS-AI-Predict - **Description**: 鸿蒙端上AI推理样例工程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # harmonyos_ai_predict HarmonyOS(DevEco Studio)端侧 AI 推理工程集合。本仓库下包含多个独立 DevEco 工程,分别演示在鸿蒙端侧用 MindSpore Lite / 系统 AI Kit 完成不同任务的样例。各工程相互独立,可单独用 DevEco Studio 打开编译运行。 ## 工程清单 | 工程 | 功能 | 推理方式 | 模型 | ModelScope 下载 | | --- | --- | --- | --- | --- | | `MSlitePredict` | MindSpore Lite `.ms` 模型编译/推理冒烟测试(双页签:Native C++ / ArkTS API) | Native C++(`libentry.so` + MindSpore Lite C API)+ ArkTS API(`@ohos.ai.mindSporeLite`) | `realesr-general-x4v3_300x300.ms`、`det_1x3x640x640.ms`、`rec_1x3x48x320.ms` | 暂无 | | `FaceDetector` | 人脸检测并在图上画框 | 系统 AI Kit `@kit.CoreVisionKit` 的 `faceDetector` 做检测;Native C++(OpenCV)仅负责画框 | 无(系统 Kit,无自带模型) | — | | `ImageSupperResolution` | 图片 4× 超分(Real-ESRGAN) | Native C++(`libentry.so` + MindSpore Lite C API + OpenCV) | `realesr-general-x4v3_512x512.ms` | [realesr-general-x4v3_ms](https://modelscope.cn/models/XiXiHaHaOnAi/realesr-general-x4v3_ms/files)(见 `ImageSupperResolution/README.md`) | | `WordSearch` | 文本模糊查询(基于 CoROM 向量召回) | Native C++(`libentry.so` + MindSpore Lite C API) | `corom_s256_e32w16.ms`(embedding)、`corom_s256_cls.ms`(分类) | [CoROM_Base_ms](https://modelscope.cn/models/XiXiHaHaOnAi/CoROM_Base_ms/files)(见 `WordSearch/README.md`) | > ⚠️ `.ms` 模型**不入代码仓**,请按上表「ModelScope 下载」列(或各子工程 README)的链接自行下载,放到对应子工程的 `entry/src/main/resources/resfile/models/` 后再运行。 > > ⚠️ SDK 版本不一致:`MSlitePredict` 为 6.1.1(24),其余三个为 5.1.0(18)。用 DevEco 打开各自工程时以工程内 `build-profile.json5` 为准,不要跨工程混用 SDK 配置。 ## 各工程说明 ### MSlitePredict 单页面双页签(`Tabs`)对比两种调用方式: - **Native (C++)** 页签:通过 `libentry.so`(MindSpore Lite C API)`initialize/predict/releasemodel` 完成编译与推理。 - **ArkTS API** 页签:通过 `@ohos.ai.mindSporeLite` 的 `loadModelFromFile`/`predict` 完成;CPU 走无 Context 默认路径,NPU 带 `target:['nnrt'] + nnrt` Context。**未使用 `model.resize`**(当前版本该接口有 bug)。 - 两个页签功能一致:枚举 `resfile/models` 下所有 `.ms` → 下拉选择 → 编译 → 推理 → 推理×10 求平均耗时。开关默认 NPU。 - 关键文件:`entry/src/main/ets/pages/{Index,NativePanel,ArkTsPanel}.ets`、`entry/src/main/cpp/{ms_model,napi_init}.cpp`。 ### FaceDetector 人脸检测:检测本身由系统 AI Kit `@kit.CoreVisionKit` 的 `faceDetector` 完成(无需自带模型);Native `libentry.so` 只暴露 `faceDraw`,用 OpenCV 把检测框画到图上。`cpp/thirdparty` 内置 `opencv2`、`ffmpeg` 头文件。`resfile` 下放测试图 `1.jpg`、`2.jpg`。 - 关键文件:`entry/src/main/ets/pages/Index.ets`、`entry/src/main/cpp/face_detection.h`、`entry/src/main/cpp/napi_init.cpp`。 ### ImageSupperResolution 图片超分(4×):Native C++ 通过 MindSpore Lite 加载 `realesr-general-x4v3_512x512.ms`(Real-ESRGAN general x4v3),对 `resfile/images` 下的测试图做超分并展示。`cpp/thirdparty` 内置 `opencv2`。 - 关键文件:`entry/src/main/cpp/src/{ms_model,image_processor,predictor,time_utils}.{cpp,h}`、`entry/src/main/cpp/CMakeLists.txt`。 - 模型下载:见 `ImageSupperResolution/README.md` 的 [realesr-general-x4v3_ms](https://modelscope.cn/models/XiXiHaHaOnAi/realesr-general-x4v3_ms/files)。`.ms` 不入代码仓,下载后放入 `entry/src/main/resources/resfile/models/`。 ### WordSearch 文本模糊查询:基于 CoROM 句向量做语义召回。Native 加载两个 `.ms`:`corom_s256_e32w16.ms`(生成 query/候选的 embedding,emb 维度 32、窗口 16)与 `corom_s256_cls.ms`。UI 输入关键字 + 召回阈值,`predictor.modelpredict(text, threshold)` 返回命中的候选项。 - 关键文件:`entry/src/main/cpp/{ms_model.cc,ms_model.h,napi_init.cc}`、`entry/src/main/ets/pages/Index.ets`。 - 模型下载:见 `WordSearch/README.md` 的 [CoROM_Base_ms](https://modelscope.cn/models/XiXiHaHaOnAi/CoROM_Base_ms/files)。`.ms` 不入代码仓,下载后放入 `entry/src/main/resources/resfile/models/`。 ## 目录结构 ``` harmonyos_ai_predict/ ├─ MSlitePredict/ # .ms 推理冒烟测试(双页签:Native / ArkTS) ├─ FaceDetector/ # 人脸检测(系统 Kit + OpenCV 画框) ├─ ImageSupperResolution/ # 图片超分(Real-ESRGAN) ├─ WordSearch/ # 文本模糊查询(CoROM 向量召回) ├─ README.md # 本说明 └─ README.en.md # 英文说明 ``` 每个子工程都是标准的 DevEco 工程结构(`AppScope/`、`entry/`、`build-profile.json5`、`oh-package.json5`、`hvigor/`),含 native 的工程在 `entry/src/main/cpp/` 下,并通过 `entry/src/main/cpp/types/libentry/` 向 ArkTS 暴露 `libentry.so`。 ## 构建与运行 1. 用 DevEco Studio 打开某个子工程目录(如 `MSlitePredict`)。 2. File → Sync and Refresh Project。 3. Run → Run 'entry',选择真机或模拟器。 4. 依赖说明:MindSpore Lite 的 C 头文件 `` 与 `libmindspore_lite_ndk.so` 由 SDK sysroot 自动提供,无需在工程内另放 include 或库;ArkTS 侧 `@ohos.ai.mindSporeLite` 为系统 SDK 模块,无需 ohpm 声明依赖。OpenCV/FFmpeg 等第三方头随工程 `cpp/thirdparty` 内置。 ## 备注 - `.ms` 模型均不入代码仓。运行前按工程清单「ModelScope 下载」列或各子工程 README 的链接下载,放入对应 `entry/src/main/resources/resfile/models/`。子工程 README 暂未提供下载链接的(如 `MSlitePredict`),下载路径留空,待补充。 - `MSlitePredict` 的 ArkTS 页签 NPU 路径 `target` 取值 `'nnrt'` 为依据 C 端设备类型推断;若切 NPU 编译仍报 target 解析失败,可尝试改为 `'npu'` 或回退 CPU。