写点什么

开发者手机 AI - 目标识别 demo

作者:Laval小助手
  • 2024-04-11
    上海
  • 本文字数:1009 字

    阅读完需:约 3 分钟

功能简介该应用是在 Openharmony 4.0 系统上开发的一个目标识别的 AI 应用,旨在从上到下打通 Openharmony AI 子系统,展示 Openharmony 系统的 AI 能力,并为开发者提供 AI 应用的 demo。

应用程序通过相机进行预览,对预览画面中的物体进行目标识别,目前该应用程序支持识别 100 种物体。

系统架构下图为 demo 应用以及 Openharmony AI 子系统的架构图。



目标识别 demo:

JS 实现 UI 界面的功能;

Native 接口及实现主要为 JS 提供接口进行 AI 推理。通过 Native 方式完成推理的前处理、推理以及后处理,这里通过调用 opencv、MindSpore Lite 的 API 接口实现主要功能;

Mindspore Lite 为 Openharmony AI 推理框架,为上层应用提供统一的 AI 推理接口,可以完成在手机等端侧设备中的模型推理过程;

Neural Network Runtime 神经网络运行时,作为中间桥梁连通上层 AI 推理框架和底层加速芯片,实现 AI 模型的跨芯片推理计算。提供统一 AI 芯片驱动接口,使 AI 芯片驱动能够接入 OpenHarmony 系统。

NNRt host 实现了 NNRt HDI 接口功能,通过对接底层 AI 芯片接口为上层应用提供 NPU 硬件推理的能力。

功能实现



JS 从相机数据流获取一张图片,调用 Native 的接口进行目标识别的处理。Native 接口完成目标识别后将结果返回给 JS,在预览中标识识别的物体。

Native 提供了 4 个接口:

static napi_value Init(napi_env env, napi_value exports) {    napi_property_descriptor desc[] = {        {"setconf", nullptr, setconf, nullptr, nullptr, nullptr, napi_default, nullptr},        {"Init", nullptr, ObjectDectionInit, nullptr, nullptr, nullptr, napi_default, nullptr},        {"Process", nullptr, ObjectDectionProcess, nullptr, nullptr, nullptr, napi_default, nullptr},        {"DeInit", nullptr, ObjectDectionDeInit, nullptr, nullptr, nullptr, napi_default, nullptr}};    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);    return exports;}
复制代码


setconf 设置目标识别置信度的阈值,对于目标识别置信度低于阈值的结果不做显示,默认为 45%。

Init、DeInit 为 Native 的初始化和去初始化实现,主要对模型进行创建、编译以及销毁。

Process 为异步 NAPI 接口,主要完成目标识别的功能。实现包括前处理、推理和后处理 3 个部分。前处理主要完成图片预处理,使图片数据符合模型的输入格式。推理就是调用 MindSpore 接口实现推理。后处理主要对推理结果进行处理,使结果可以呈现到界面上。

代码路径


用户头像

laval社区 2023-12-25 加入

还未添加个人简介

评论

发布
暂无评论
开发者手机AI - 目标识别demo_Laval小助手_InfoQ写作社区