MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

完于2020年10月26日

刚刚听完华为MindSpore实战营第一课“基于MindSpore Lite开发端侧AI图像分类应用”,学会了编译方法就迫不及待按照课程指南生成应用,安装到手机上对着街上物件一顿乱扫,感觉特别有趣。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

话说能得到即时反馈的学习才是好的学习,短短两天把一个小白变成一个能编译项目的小白,我为华为的老师们手动点赞。

以前总感觉模型训练好,在云上开个访问API了,最多听说过某些行业出于保护隐私的目的,采用公有云训练,私有云推理的应用模式,而且私有云资源也往往是不受限制的。但是如果端侧很小,资源很少又该怎么办呢?这时就很考验框架的弹性,以及模型增量训练后进行快速部署的能力。本次课程的重点就是把一个训练好的模型部署到手机端上去。

简化的端侧图像分类应用开发流程

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

由于以前对模型部署这个问题关注不够,课前也没做什么准备,这一课听得很吃力,但是收获很大。老师介绍了开发流程,重点讲解了端侧框架的功能、特点和代码逻辑,并且演示了编译过程,总体含金量很高。课后参考助教分发的指南,很顺利地完成了端侧应用APP的编译,感觉华为设计的这个从模型训练到应用发布的套路还是挺高效的。

上课回看视频:https://www.bilibili.com/video/BV1dA411L7Lg

一、编译环境搭建

华为提供的“MSLite_App_Install.docx”(参见附件)介绍非常详尽,这里仅增加几点说明:

  •  如果只限于完成作业的程度,那么用Windows,Mac OS或Linux都可以,安装Android Studio直接编译华为代码仓中的示例代码就OK了。但是如果从模型训练出发,再做模型转换,再做编译发布,那么必须要用Linux了,因为用CPU版做训练会很吃劲儿,但MindSpore-GPU不支持Windows,而且模型转换工具Converter_lite只在Linux下工作。顺便说一句,我以前写过一篇利用WSL支持MindSpore-GPU的贴子(https://bbs.huaweicloud.com/forum/thread-82598-1-1.html),不过实际应用的性能与CPU接近,怀疑是GPU虚拟化损失了大部分性能,也不知道NVidia以后会不会有改善。所以想认真玩的话,还是下决心放弃Windows,拥抱Ubuntu吧。这个决心不好下啊。

  • 在主站(https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/lite/image_classification)的readme介绍中,运行依赖需要NDK,CMake等等一大堆 ,看上去挺吓人,其实实操中这个环节的难度并不大。Android Studio体现了“平台+插件”的设计思想,所以只要把Android Studio这个“平台”安装好了,其他的"插件"都可以在“File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK” 页面的“SDK Tools”列表下面选择安装。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • 安装到这里会出现一个问题,就是列表中没有“Android SDK”。其实这个包被隐藏了,只要把“Hide Obsolete Packages”前面的勾去掉,就能看到已经安装好了。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • 还有可能更新失败。我遇到了,其他同学好像都没有遇到。他们运气比我好。更新源是dl.google.com,一听这个名字就知道是怎么回事了。这时候需要手动添加地址映射。

      首先要找出可用的地址。在网站ping.chinaz.com中搜索dl.google.com,从下面解析出来的地址中选一个。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

在"C:\Windows\System32\drivers\etc\hots"文件中添加一条映射。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

测试连通性。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

再打开Android Studio就能自动更新了。

二、编译过程

进阶作业要求创建作业目录(21day_firstcource),编译代码仓"https://github.com/mindspore-ai/mindspore-21-days-tutorials"中的”object_detection “项目,并提交"MSLiteApp.apk"。这个过程就非常”享受“了。

  •  复制代码仓(git clone https://github.com/mindspore-ai/mindspore-21-days-tutorials.git),然后在Android Studio中找开”object_detection“目录。界面挺眼熟,以为打开了PyCharm。没办法啊,Android Studio就是”Powered by IntelliJ“。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • - 机器轰鸣中等,等等等等,突然又安静了,一个提示很低调地出现在右下角了。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • 赶紧翻一下apk在哪里。这个”app-debug.apk“就是我们要找的目标。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • 把它拷贝到手机上,安装之后,可以快乐地举起手机扫扫扫了。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • 同期的@Bati同学遇到了编译错误,从现象上看似乎是模型下载失败了。

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

  • Bati同学经过不懈努力,在”readme.md“中找到了解决方案:

1

2

3

4

5

### 下载及部署模型文件

   

  从MindSpore Model Hub中下载模型文件,本示例程序中使用的终端图像分类模型文件为`mobilenetv2.ms`,同样通过download.gradle脚本在APP构建时自动下载,并放置在`app/src/main/assets`工程目录下。

   

  * 注:若下载失败请手动下载模型文件,mobilenetv2.ms [下载链接](https://download.mindspore.cn/model_zoo/official/lite/mobilenetv2_openimage_lite/mobilenetv2.ms)。

  •  手工下载文件,放到"object_detection\app\src\main\assets\model"目录下,再次编译,顺利通过。

三、写在最后

课程上手就讲模型如何部署,体现了华为重视工程实践的风格。而且先把开发的流程了解清楚,把应用在手机上跑起来,虽然只是两个简单的原型应用,但是已经足够为快速迭代模型提供非常好的基础。这个课的确够实战!!!

在课后答疑中,有位同位问为什么模型要运行在端侧?运行在云上不是更简单吗?而且云上的模型也容易做增量学习。这是个好问题,都5G时代了,繁重的工作都让云去做,端上只跑HTML5不是很好吗?周末去超市买东西,结账的时候用微信支付,结果网络信号不好更种卡。所以在网络还没有充分发育的条件下,完全把服务和应用分离是有风险的,端上运行的应用会保证可用性。况且这个应用只是原型,如果打造云、端联动的应用,是要跟应用场景适配的。

转自文章链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=83725

感谢作者的努力与分享,侵权立删!

上一篇:ffmpeg 和 ffmpy3


下一篇:鸿蒙内核源码分析(ninja应用篇) | 简单而快速的构建系统 | 百篇博客分析HarmonyOS源码 | v61.01