基于 华为HarmonyOS 与 ArkTS 的 YOLO 目标检测端侧部署实践(附源码)
一、 研究背景与项目动机
本项目旨在探索端侧 AI 部署的可行性。通过将轻量级的 YOLO 模型(yolo26n.ms)部署至 HarmonyOS 移动端,验证在端侧设备上直接进行目标检测与相似商品提取的推理性能。
二、 开发环境与项目结构
本项目基于华为 DevEco Studio 开发,语言采用 ArkTS。核心模型采用 MindSpore 框架转换后的 .ms 格式模型。
核心项目目录结构说明如下:
-
entry/src/main/ets/entryability/EntryAbility.ets:应用生命周期管理与入口配置。 -
entry/src/main/ets/pages/Index.ets:主 UI 界面与核心交互逻辑存放位置。 -
entry/src/main/resources/rawfile/yolo26n.ms:编译并转换完成的 YOLO 端侧模型文件。
三、 核心架构与代码实现
由于鸿蒙底层的 MindSpore 推理框架不支持直接运行 PyTorch 模型,本工程探索了从官方预训练模型到端侧 格式的完整转换链路。若要自行准备模型,请参考以下流程:
1. 下载预训练模型 (.pt)
- 来源:Ultralytics 官方仓库
- 地址:GitHub - ultralytics/ultralytics: Ultralytics YOLO 🚀 · GitHub
- 说明:在该仓库的 README 或 Docs 中下载轻量级的预训练权重(本项目使用的是官方预训练的 yolo26n.pt),也可以使用该框架自行训练得到特定场景的权重。
2. 导出为中间件格式 (.onnx)
利用 Ultralytics 自带的导出功能,将 PyTorch 模型转化为通用的 ONNX 结构。在 Python 环境中执行以下命令(建议开启消除冗余算子):
yolo export model=yolov26n.pt format=onnx imgsz=640 simplify=True
3. 转换为鸿蒙端侧格式 (.ms)
此步骤需使用华为官方提供的 MindSpore Lite Converter(离线模型转换工具),将 ONNX 算子映射为端侧底层的高性能算子。
工具下载地址:下载MindSpore Lite | MindSpore Lite master 文档 | MindSpore (本文下载的是mindspore-lite-2.9.0-linux-x64,在Windows系统下转换时没有成功,在Ubantu22.04系统上进行转换的,本项目提供了预训练的 yolo26n.ms)
转换指南参考:端侧模型转换 | MindSpore Lite master 文档 | MindSpore
基本转换命令示例:
将解压后的 converter 工具加入环境变量后再执行转换命令:
export LD_LIBRARY_PATH=/home/rebot/1/mindspore-lite-2.9.0-linux-x64/tools/converter/lib:$LD_LIBRARY_PATH
converter_lite --modelFile=yolov26n.onnx --fmk=ONNX --outputFile=yolo26n --targetDevice=CPU
注:转换完成后,只需将生成的 yolo26n.ms 放入本工程的 entry/src/main/resources/rawfile/ 目录下即可被代码自动读取。
4.开发与测试环境设置
- IDE 与 SDK 环境 开发工具: HUAWEI DevEco Studio(本文下载的版本是devecostudio-windows-6.1.0.850)
工具下载地址:下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态
SDK 环境:HarmonyOS NEXT (API 11 / API 12)
硬件测试设备运行载体: 华为鸿蒙真机(因涉及底层 NPU/CPU 算力调度与 MindSpore 底层依赖,暂不支持通过电脑本地模拟器进行推理验证)。 注意:手机需要更新到鸿蒙6系统!!!
四、 端侧部署避坑记录
在实际开发与测试中,记录以下关键技术问题的解决方案:
-
UI 线程阻塞问题: 图像预处理与模型推理均属于 CPU 密集型任务。若直接在主线程运行,会导致应用严重掉帧。必须通过 TaskPool 或 Worker 开启独立线程执行预处理和
model.predict()操作。 -
内存管理规范: Float32Array 的创建与 PixelMap 的读取会占用较大内存。每次推理结束后,需严格调用
release()接口释放图像资源,避免连续识别导致 OOM(内存溢出)。
五、 总结
本实践完成了基于“HarmonyOS + MindSpore Lite + YOLO”的端侧目标检测初步验证,跑通了模型加载、数据处理到 UI 渲染的完整基础链路。
项目源码及转换后的 yolo26n.ms 模型文件已开源,欢迎各位开发者 Star、指正与交流:Aiyc-02/YOLO-HarmonyOS-Vision: 基于 ArkTS 与 MindSpore Lite 的鸿蒙端侧 YOLO 目标检测引擎
更多推荐



所有评论(0)