MindSpore21天实战营(1)使用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 )
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)