初试MindSpore Lite

MindSpore Lite是MindSpore2020年八月发布的针对手机以及IoT场景,端到端的解决方案。简单地说,就是可以在手机以及IoT设备上部署MindSpore框架训练的AI模型。是一个极速、极智、极简的端侧AI引擎,使能全场景智能应用,为用户提供端到端的解决方案,帮助用户使能AI能力。

使用MindSpore Lite的优势

极致性能

高效的内核算法和汇编级优化,支持CPU、GPU、NPU异构调度,最大化发挥硬件算力,最小化推理时延和功耗。

轻量化

提供超轻量的解决方案,支持模型量化压缩,模型更小跑得更快,使能AI模型极限环境下的部署执行。

全场景支持

支持iOS、Android等手机操作系统以及LiteOS嵌入式操作系统,支持手机、大屏、平板、IoT等各种智能设备上的AI应用。

高效部署

支持MindSpore/TensorFlow Lite/Caffe/Onnx模型,提供模型压缩、数据处理等能力,统一训练和推理IR,方便用户快速部署。

使用MindSpore Lite的工作流程

[

选择模型选择新模型或者重新训练现有模型]

MindSpore团队提供了一系列预置终端模型,你可以在应用程序中使用这些预置的终端模型。 可下载MindSpore Model Zoo中图像分类模型。 同时,你也可以使用预置模型做迁移学习,以实现自己的图像分类任务。

[

转换模型使用工具将模型转换为方便部署的端侧模型]

如果你需要对MindSpore提供的模型进行重训,重训完成后,需要将模型导出为.mindir格式。然后使用MindSpore Lite模型转换工具将.mindir格式转换成.ms格式。

以mobilenetv2模型为例,如下脚本将其转换为MindSpore Lite模型用于端侧推理。

​
call converter_lite --fmk=MINDIR --modelFile=mobilenetv2.mindir --outputFile=mobilenetv2
​

[

部署应用将模型引入到应用中,并加载到移动或者嵌入式设备中]

使用MindSpore Lite的用户

[HMS ML Kit可以使用华为提供的机器学习套件,帮助快速开发端侧的机器学习应用]

[华为HiAIHUAWEI HiAI是面向智能终端的AI能力开放平台,让开发者能够快速地利用华为强大的AI处理能力,为用户提供更好的智慧应用体验。

[华为SiteAISiteAI构筑领先的轻量高效、安全易用、三层协同的嵌入式AI平台,使能网元智能化与自动驾驶网络。]

常见的场景

图像分类

可以使用预制图像分类模型,识别摄像头输入帧中的物体。

在Android设备上试试在loT设备上试试

目标检测

可以使用预置目标检测模型,检测标识摄像头输入帧中的对象并添加标签,并用边框标识出来。

在Android设备上试试

图像分割

图像分割可用于检测目标在图片中的位置或者图片中某一像素是输入何种对象的。

在Android设备上试试

下载MindSpore Lite

下载MindSpore Lite — MindSpore Lite master documentation提供了支持多种操作系统和硬件平台的模型转换、模型推理、图像处理等功能,可以下载适用于本地环境的版本包直接使用。

编译MindSpore Lite

介绍如何快速编译出MindSpore Lite。

MindSpore Lite包含模块:

模块 支持平台 说明
converter Linux, Windows 模型转换工具
runtime(cpp、java) Linux, Windows, Android, iOS 模型推理框架(Windows平台不支持java版runtime)
benchmark Linux, Windows, Android 基准测试工具
benchmark_train Linux, Android 性能测试和精度校验工具
cropper Linux libmindspore-lite.a静态库裁剪工具
minddata Linux, Android 图像处理库
codegen Linux 模型推理代码生成工具
obfuscator Linux 模型混淆工具

接下来我将以windows系统来简单的介绍如何编译出MindSpore Lite。

Windows环境编译

环境要求

  • 系统环境:Windows 7,Windows 10;64位。

  • 编译依赖

    • CMake >= 3.18.3

    • MinGW GCC = 7.3.0

  • 编译脚本中会执行git clone获取第三方依赖库的代码。

  • 如果要编译32位Mindspore Lite,请使用32位MinGW编译。

编译选项

MindSpore根目录下的build.bat脚本可用于MindSpore Lite的编译。

build.bat的编译参数

参数 参数说明 是否必选
lite 设置该参数,则对MindSpore Lite工程进行编译
[n] 设定编译时所用的线程数,否则默认设定为6线程

mindspore/lite/CMakeLists.txt的选项

选项 参数说明 取值范围 默认值
MSLITE_ENABLE_SSE 是否启用SSE指令集 on、off off
MSLITE_ENABLE_AVX 是否启用AVX指令集 on、off off
MSLITE_ENABLE_CONVERTER 是否编译模型转换工具 on、off on
MSLITE_ENABLE_TOOLS 是否编译配套工具 on、off on
MSLITE_ENABLE_TESTCASES 是否编译测试用例 on、off off
  • 以上选项可通过设置同名环境变量或者mindspore/lite/CMakeLists.txt文件修改。

编译示例

首先,使用git工具,从MindSpore代码仓下载源码。

git clone https://gitee.com/mindspore/mindspore.git -b r1.3

然后,使用cmd工具在源码根目录下,执行如下命令即可编译MindSpore Lite。

  • 以默认线程数(6线程)编译Windows版本。

call build.bat lite
  • 以指定线程数8编译Windows版本。

call build.bat lite 8

最后,会在output/目录中生成如下文件:

  • mindspore-lite-{version}-win-x64.zip:包含模型推理框架runtime和配套工具。

version:输出件版本号,与所编译的分支代码对应的版本一致。

目录结构

mindspore-lite-{version}-win-x64
├── runtime
│   ├── include
│   └── lib
│       ├── libgcc_s_seh-1.dll      # MinGW动态库
│       ├── libmindspore-lite.a     # MindSpore Lite推理框架的静态库
│       ├── libmindspore-lite.dll   # MindSpore Lite推理框架的动态库
│       ├── libmindspore-lite.dll.a # MindSpore Lite推理框架的动态库的链接文件
│       ├── libssp-0.dll            # MinGW动态库
│       ├── libstdc++-6.dll         # MinGW动态库
│       └── libwinpthread-1.dll     # MinGW动态库
└── tools├── benchmark # 基准测试工具└── converter # 模型转换工具

暂不支持在Windows进行端侧训练。

上手体验

下载官方代码样例—图片分类(使用的是mobilenet.v2)。安装AndroidStudio,按照说明,需要各个依赖如下:

Android Studio >= 3.2 (推荐4.0以上版本) NDK 21.3 CMake 3.10 Android SDK >= 26 OpenCV >= 4.0.0(示例代码中已经有了,所以可以不用安装) 根据说明,配置一下工程,我使用的Android SDK=30,也就是Android10版本

导入项目之后,还需要下载gradle里面的相关依赖,等一会儿就行~

简单的源码说明 这个实例程序主要分为两个部分,一个是Java,一个是C++。Java代码调用系统API开启相机,并封装了一个类RecognitionObjectBean保存分类的结果。C++编写底层的推理代码,Jni调用C++API进行推理。C++API需要相关的库文件支持,可以通过Mindspore lite源码编译得到。也可以像这个例子,通过配置gradle下载

要用C++代码实现推理过程,大致流程如下:

加载模型文件,创建会话,构建推理的计算图
转换输入图片为Tensor,要和训练时输入数据格式保持一致
输入数据进行推理,获取输出数据,也是一个Tensor,得进行一些处理,拿到分类的结果。

详细的代码可以点这model_zoo/official/lite/image_classification/app/src/main/cpp/MindSporeNetnative.cpp · MindSpore/mindspore - Gitee.com

初试MindSpore Lite相关推荐

  1. 超轻量AI引擎MindSpore Lite

    超轻量AI引擎MindSpore Lite 揭秘一下端上的AI引擎:MindSpore Lite. MindSpore Lite是MindSpore全场景AI框架的端侧引擎,目前MindSpore L ...

  2. MindSpore Lite整体架构介绍

    MindSpore Lite整体架构介绍 MindSpore Lite框架的总体架构如下所示: • 前端(Frontend): 负责模型生成,用户可以通过模型构建接口构建模型,将第三方模型和MindS ...

  3. 华为智慧终端背后的黑科技----超轻量AI引擎MindSpore Lite

    华为终端设备搭载了众多黑科技,今天我们就来揭秘一下端上的AI引擎:MindSpore Lite. MindSpore Lite是MindSpore全场景AI框架的端侧引擎,目前MindSpore Li ...

  4. 超轻量AI推理引擎MindSpore Lite新版本发布,支撑HMS Core AI领域全面升级

    华为在20年9月份开源了MindSpore Lite 1.0.0版本之后,其接口易用性.算子性能与完备度.第三方模型的广泛支持等方面,得到了众多手机应用开发者的广泛认可.MindSpore Lite为 ...

  5. 全场景AI推理引擎MindSpore Lite, 助力HMS Core视频编辑服务打造更智能的剪辑体验

    移动互联网的发展给人们的社交和娱乐方式带来了很大的改变,以vlog.短视频等为代表的新兴文化样态正受到越来越多人的青睐.同时,随着AI智能.美颜修图等功能在图像视频编辑App中的应用,促使视频编辑效率 ...

  6. MindSpore图像分类模型支持(Lite)

    MindSpore图像分类模型支持(Lite) 图像分类介绍 图像分类模型可以预测图片中出现哪些物体,识别出图片中出现物体列表及其概率. 比如下图经过模型推理的分类结果为下表: 使用MindSpore ...

  7. MindSpore部署图像分割示例程序

    MindSpore部署图像分割示例程序 本端侧图像分割Android示例程序使用Java实现,Java层主要通过Android Camera 2 API实现摄像头获取图像帧,进行相应的图像处理,之后调 ...

  8. MindSpore模型推理

    MindSpore模型推理 如果想在应用中使用自定义的MindSpore Lite模型,需要告知推理器模型所在的位置.推理器加载模型的方式有以下三种: • 加载本地模型. • 加载远程模型. • 混合 ...

  9. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

最新文章

  1. linux硬盘拷贝系统,教你在第二块硬盘上拷贝安装Linux系统
  2. 我们可以写100%,但是这样不科学
  3. UVA - 1415 Gauss Prime(高斯素数)
  4. linux help命令编写,Linux shell命令帮助格式详解
  5. Android开发之PCM录音实时播放的实现方法 | 边录音边播放 |PCM录音播放无延迟 | 录音无杂音 | 录音无噪音
  6. Windows Shell 编程 第六章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987951】...
  7. icloud 购买存储空间_如何释放iCloud存储空间
  8. 连接真机开发安卓(Android)移动app MUI框架 完善购物车订单等页面——混合式开发(五)
  9. Python的小整数对象池
  10. 建立高端人脉的三条捷径
  11. keras 多分类一些函数参数设置
  12. 浪潮存储进逼国际一线厂商
  13. 第一行代码android第三版pdf,第一行代码:Android PDF 下载
  14. 联想换机助手_Smart Switch.apk下载|S换机助手下载 v3.4.04 安卓版_最火软件站
  15. Hadoop的特性和版本
  16. 堪培拉地理位置经纬度_澳大利亚堪培拉和悉尼及墨尔本的地理位置
  17. 微信小程序tab页面切换
  18. 训练营四教官打死网瘾少年案今开庭审理
  19. android高仿今日头条小视频转场切换效果
  20. mysql 5.6 不同步_MySQL5.6配置同步复制的新方法以及常见问题的解决方法

热门文章

  1. 深度学习处理图像任务难易程度的总结
  2. Linux修改文件名(mv和rename)
  3. 打印机扫描时提示无网络连接
  4. CodeForces - 260B Ancient Prophesy
  5. Java期末复习小记
  6. 手动第一次上架的应用如何快速在苹果商店看到
  7. 生成对抗网络(GAN)资料打包
  8. 达梦数据库-初探监视器服务与守护进程服务
  9. MIUI 10Android 9 内侧,这次大规模推送!小米9基于安卓10的MIUI 10内测版来了
  10. 开源组件Smark.Data处理SQL和存储过程