MindSpore Lite体验
MindSpore Lite是MindSpore八月发布的针对手机以及IoT场景,端到端的解决方案。简单地说,就是可以在手机以及IoT设备上部署MindSpore框架训练的AI模型。
上手体验
下载官方代码样例—图片分类(使用的是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,得进行一些处理,拿到分类的结果。
详细的代码可以点这
运行
连接手机,点击运行,开始build,报了一个错
在C++类MSNetWork中,这个属性被protected修饰,无法被外部的类访问。额,那我就修改这些属性的修饰符为public,虽然这么做不符合封装的思想。。。。
修改之后,成功build,然后就可以在手机上看到一个APP
试运行一下
识别一下键盘。结果为Computerkeyboard的可能性为75.38%,是最高的,可以认为这个物品是键盘。推断时间为36ms,延迟比较低。