MindSpore21天实战营(1)使用MindSpore Lite实现手机端图像检测
【摘要】 本文介绍了如何使用MindSpore Lite进行手机端图像分类。。
到2020年11月4日为止,MindSpore实战营已经进行到Part3了,张小白在10月28日做了个体验作业:使用官方做好的APK ,在华为手机上安装后,推理了以下几张图发了个朋友圈。
张小白一直没有去做进阶作业。。。其实,主要的原因很可能是因为自己觉得自己体验作业做得也不好——无法找到作业题中所谓的“搞怪”照片:
搞笑而不搞怪,搞怪而不搞笑——要“双搞”真的很难,真是伤透了张小白的脑筋。
直到张小白看到了论坛里 ML 饭 大大的文字。(https://bbs.huaweicloud.com/forum/thread-83725-1-1.html )这才提起一点写作业的兴趣。饭大大的文字虽然写的很好,但是亲自走一回还是必要的。本来在饭大大的帖子后面跟了个贴,想写一个tips就完事儿了。结果发现,需要躺的坑还是有几个的。想来应该可以成一篇文字。。。而且,写文字是有代价的。。。想到这点,张小白不禁手痒痒的。。。
第一次的进阶作业的内容是:利用官方提供的MindSpore Lite的相关Android项目生成一个APK,装到安卓手机上,然后拍几张照片发朋友圈,同时上传到指定位置候审。。。
首先,根据本次实战的指导文档要求,需要安装Android Studio 4.0,SDK版本大于等于26,并安装NDK 21.3,CMake 3.10.2.
那就开干吧。。。
自己的Android Studio(以下简称AS)自从安装后,一直在在硬盘里待着(就是不实战)。如果这次不开干的话,估计下次启动它的时间应该是 华为云新组织的 《移动应用开发全栈成长计划》了。(此处别的小助手应该表示下感激。。。)
首先下载MindSpore工程包。
当然是一股脑儿把整个MindSpore都下下来。。。
打开AS,进入下面的configure-》setting。
进入设置页面:选择 Appearance & Behavior -> System Settings->Android SDK.
按照文档的要求选择NDK 21.3,CMake 3.10.2:
点击OK
继续OK
点击Accept,Next
看上图,它会去dl.google.com下载东西。这时,饭大大的文档就起到指导作用了。。。
在网站ping.chinaz.com中搜索dl.google.com:
然后记下找到的地址(随便一个,比如Ping的较快的)
写入本机的host文件:(路径一般为:C:\Windows\System32\drivers\etc)
下载如飞一般的快。。。
很快,NDK和CMake就装完了。
然后重新打开AS,并打开现有工程:工程位置:F:\learn\mindspore\model_zoo\official\lite\image_classification
结果系统就进入了漫长的gradle下载的等待期,项目工程迟迟不出内容:。。。
张小白就知道该找度娘干活了。。。
(比如这个链接:https://www.jianshu.com/p/6a6c3a07b39f?utm_campaign )
先下载好gradle-6.1.1-all.zip
然后删除 C:\Users\zhang\.gradle\wrapper\dists\gradle-6.1.1-all\cfmwm155h49vnt3hynmlrsdst 目录下的所有文件。并将下载好的gradle-6.1.1-all.zip 拷贝进去。。
此外,由于gradle下载包的时候缺省还会找国外的源,所以需要在 C:\Users\zhang\.gradle 下新建一个 init.gradle的文件:
内容如下:
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('http://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/') || url.startsWith('http://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
buildscript{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('http://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/') || url.startsWith('http://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
}
}
这样就使用了 阿里云的gradle源。
然后重新打开 F:\learn\mindspore\model_zoo\official\lite\image_classification 这个工程,页面就会打开了。。。(当然,由于gradle会自动做build,在打开项目的过程中,还需要等待(loading),但是右下角的进度会告诉你,AS在快速的下载一些包。。。)
如果没有什么意外,会正常Loading结束并告诉我们,gradle已经ok。
工程打开后:
点击Build-》Build Bundles/APK(s)->Build APK(s)
系统就会开始编译,结果生成了如下的文件:
app-customDebugType-unsigned.apk
好奇怪的名字,就将它安装到手机上吧。
张小白用的方法是:电脑上,打开QQ发出去。。。
手机上打开QQ收下来。。
点击“安装”
点击“允许”
点击“继续安装”
不可避免的失败了。
这个其实张小白以前也遇到过(就是这次忘记了)。就是没签名的安装包,无法装。。。。
所以,还是需要AS生成一个带签名的安装包。下面先解决这个问题。
当然是继续度娘。。。。
好像也不难。。
点击build-》Generate Signed Bundle/APK...
出现以下画面:
选择APK,next
点击Create New...
在录入以上内容的同时,记得在工程的目录下建立一个signAPK目录(存jks文件)
在前面那张图点击OK继续。。
选择release并都选中v1,v2。。点击Finish。
系统当时会弹出一个提示框提示用户需要处理一下jks文件。。。不要紧。把那句话copy下来。
在命令行窗口执行:
当然,上面报了一个错误,继续度娘发现,原来是文件名重复了。。。
简单,修改第二个文件名为 SignDemo1.jks
成功的完成了签名的密钥导入。
下面让张小白生成个新的带签名的APK吧。。。
重新点击Build-》Build Bundles/APK(s)->Build APK(s)
这回成功在app/release目录下生成了 app-release.apk
同样将这个文件,使用电脑QQ传过去:
然后在手机上接收。。
安装:
点击允许。。。
没有风险,继续安装。。
安装成功。。
打开APP。
照一下耳机:
推理出 植物,电风扇,基础设施,花瓣。。(嗯,花瓣可能是对的)
手机,看来MS Lite只是懂手机。。
植物,花园。。。很好。。
海报。。。
当然,后面两个没有识别出来是书。。。这还是有点遗憾的。。。
原来MS只深度学习,却不识书。。。这个结论也着实让张小白吓了一跳啊~~
不过这个APP,张小白觉得,倒是很有可能延伸到张小白最新关注的垃圾分类应用上去。。(https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=84854&page=2#pid442638 )
(全文完,谢谢阅读)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
张辉2020/11/04 02:58:431楼编辑删除举报
————关于这块,在MindSpore21天实战营(1)plus 使用MindSpore Lite实现手机端图像检测 https://bbs.huaweicloud.com/blogs/208653 这篇文字中有了重点的图解。有兴趣的云宝们可以关注下具体的做法。
张辉2020/11/10 23:55:202楼编辑删除举报
(1)基于MindSpore Lite开发图像识别与检测的安卓APP实战 https://www.bilibili.com/video/BV1dA411L7Lg(讲师:何芦微)
(2)基于Bert进行中文新闻分类 https://www.bilibili.com/video/BV1YK4y177t2 (讲师:刘烨东)
(3)基于ResNet50实现毒蘑菇识别实战 https://www.bilibili.com/video/BV1ny4y1r7HA/ (讲师:王辉)
(4)基于YOLOV3-DarkNet50的篮球检测模型 https://www.bilibili.com/video/BV1PT4y1c7gp/ (讲师:王辉)
(5)基于MindSpore Wide & Deep实现CTR预估实战 https://www.bilibili.com/video/BV1CV411y7oj/ (讲师:何芦微)
张辉2020/11/12 10:36:023楼编辑删除举报
MindSpore21天实战营(1)plus 使用MindSpore Lite实现手机端图像检测 https://bbs.huaweicloud.com/blogs/208653
MindSpore21天实战营(2)使用MindSpore和ModelArts实现Bert中文新闻分类 https://bbs.huaweicloud.com/blogs/207332
MindSpore21天实战营(3)使用MindSpore实现Resnet50毒蘑菇识别 https://bbs.huaweicloud.com/blogs/208652
MindSpore21天实战营(4)使用ModelArts和YoloV3-DarkNet50预训练模型实现篮球检测 https://bbs.huaweicloud.com/blogs/207008
MindSpore21天实战营(5)使用PyCharm Kit进行基于Wide&Deep实现CTR预估实战 https://bbs.huaweicloud.com/blogs/207322
番外:
张小白教你如何使用ModelArts的自动学习对毒蘑菇进行分类 https://bbs.huaweicloud.com/blogs/208172