file

背景

我的毕业设计是《Development of an AI-Powered Mobile Application for Animal Identification and Information》,开发一个可以识别动物的移动软件,在跟导师沟通后打算用Yolo作为深度学习识别模型,移动端软件使用原生的iOS开发,即在XCode上使用Swift+SwiftUI进行iOS开发,原本就一直对iOS开发很感兴趣,借这次机会好好学习一下原生的iOS开发。

核心功能实现后,接下来就是部分细节的完善了,包括结果的详细解释以及页面的美化。

识别结果动物的具体信息

在成功识别完动物后,需要有一个页面对识别的动物进行介绍,而按照原本的项目计划是需要获取Wiki百科里该动物的信息。

但是在国内由于众所周知的原因没办法获取Wiki百科的内容,所以就打算获取百度百科的内容,可是经过测试发现百度具有反爬虫机制,所以没办法通过爬虫的方式获取,其实可以试一下API的方式,但是由于时间关系就改成链接。

file

通过把可识别的目标对应的百度百科链接存下来,再通过每次识别的结果的id调用出来就可以了啦。

Link("📚 查看百科介绍", destination: URL(string: links[object.predictObject.classId])!)
Link("🔗 View the encyclopedia introduction", destination: URL(string: links[object.predictObject.classId])!)

页面美化

在跟外教老师沟通过后,被点评APP需要更”User Friendly”,作为直男审美只能硬着头皮在GPT的帮助下美化APP。

欢迎界面

原本使用封面做了个加载界面,原本以为可以作为欢迎界面,但是确实用户都没有什么入口不大好,所以就单独设计了一个欢迎界面。

具体好像也没啥好说的,就是几个Text加一个Image做背景。

file

其他界面添加Emoji

可能是gpt美化表达方式能力有限,所以更多的是添加Emoji,不过也确实有活力多了。

file

总结

至此,动物识别APP 1.0.0开发完成了,还有很多不足可以完善,不过作为第一次iOS完整开发还是非常丰富且有挑战性的。

可拓展的功能

就基于这个app以学习为目的可拓展的功能还是有很多的。

网络获取数据

虽然是由于反爬虫原因没有使用到网络获取的功能,但是如果为app开发一个后端,以json形式传输数据也是一个好的角度,比如说将模型和对应结果都存在服务器,这样只要服务器上的模型更新支持更多的动物,那么app也可以识别更多的动物了,总之基于服务器后端的话就可以有更多的可能。

自动适应角度

大部分app都有自动旋转的功能,本质上是调用系统的api来得知当前的手机方向并对其作适配,后期如果可以的话加上这个功能,可以完善对ios开发系统性的了解,也是一个很基础很常用的功能。

不足

不足,也是未来iOS开发学习路线,这次硬着头皮上手,虽然是开发出了个能用的玩意,但是还是有很多很多的不足,在未来学习iOS开发的时候有了更深的了解和侧重点。

MVVM架构

这次开发的过程存在一个很明显的过程,代码结构很乱,不知道这部分代码该放哪,总感觉好像放哪都行,但是iOS开发推荐是以MVVM架构开发的,虽然文件后缀都叫swift,但是每个文件都应该有自己专属的地方和专属的功能。

我由于缺少这部分理论知识,所以显得有点有心无力,在开发下一个app的时候就需要学习并严格按照MVVM架构开发。

数据持久化

目前app还存在数据不持久化的问题,也就是所有用户操作得到的数据在app重启后就不见了,没办法存在手机里,而这部分也是iOS开发的关键技术。

结语

总而言之,这次开发经历还是非常有意思的,果然实践才是最好的学习方法,哪怕啥也不会,开始动手,可能会慢点,但是总是会学会的!

本文由博客一文多发平台 OpenWrite 发布!

闫良
1 声望0 粉丝