MindSpore21天实战营(1)使用MindSpore Lite实现手机端图像检测

网友投稿 762 2022-05-29

到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下载的等待期,项目工程迟迟不出内容:。。。

张小白就知道该找度娘干活了。。。

MindSpore21天实战营(1)使用MindSpore Lite实现手机端图像检测

(比如这个链接: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  )

(全文完,谢谢阅读)

MindSpore EI企业智能

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:告诉你个秘密:斯皮尔伯格的《头号玩家》其实不是科幻片!
下一篇:Kubernetes使用Glusterfs做存储持久化
相关文章