- Swift + SwiftUI原生iOS开发 开发笔记1 – 实现摄像头调用和拍摄图片
- Swift + SwiftUI原生iOS开发 开发笔记2 – 使用YOLOv3n模型对画面进行识别
- Swift + Swiftui原生iOS开发-开发笔记3 – 自主模型部署并获取识别
背景
我的毕业设计是《Development of an AI-Powered Mobile Application for Animal Identification and Information》,开发一个可以识别动物的移动软件,在跟导师沟通后打算用Yolo作为深度学习识别模型,移动端软件使用原生的iOS开发,即在XCode上使用Swift+SwiftUI进行iOS开发,原本就一直对iOS开发很感兴趣,借这次机会好好学习一下原生的iOS开发。
核心功能实现后,接下来就是部分细节的完善了,包括结果的详细解释以及页面的美化。
识别结果动物的具体信息
在成功识别完动物后,需要有一个页面对识别的动物进行介绍,而按照原本的项目计划是需要获取Wiki百科里该动物的信息。
但是在国内由于众所周知的原因没办法获取Wiki百科的内容,所以就打算获取百度百科的内容,可是经过测试发现百度具有反爬虫机制,所以没办法通过爬虫的方式获取,其实可以试一下API的方式,但是由于时间关系就改成链接。
通过把可识别的目标对应的百度百科链接存下来,再通过每次识别的结果的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做背景。
其他界面添加Emoji
可能是gpt美化表达方式能力有限,所以更多的是添加Emoji,不过也确实有活力多了。
总结
至此,动物识别APP 1.0.0开发完成了,还有很多不足可以完善,不过作为第一次iOS完整开发还是非常丰富且有挑战性的。
可拓展的功能
就基于这个app以学习为目的可拓展的功能还是有很多的。
网络获取数据
虽然是由于反爬虫原因没有使用到网络获取的功能,但是如果为app开发一个后端,以json形式传输数据也是一个好的角度,比如说将模型和对应结果都存在服务器,这样只要服务器上的模型更新支持更多的动物,那么app也可以识别更多的动物了,总之基于服务器后端的话就可以有更多的可能。
自动适应角度
大部分app都有自动旋转的功能,本质上是调用系统的api来得知当前的手机方向并对其作适配,后期如果可以的话加上这个功能,可以完善对ios开发系统性的了解,也是一个很基础很常用的功能。
不足
不足,也是未来iOS开发学习路线,这次硬着头皮上手,虽然是开发出了个能用的玩意,但是还是有很多很多的不足,在未来学习iOS开发的时候有了更深的了解和侧重点。
MVVM架构
这次开发的过程存在一个很明显的过程,代码结构很乱,不知道这部分代码该放哪,总感觉好像放哪都行,但是iOS开发推荐是以MVVM架构开发的,虽然文件后缀都叫swift,但是每个文件都应该有自己专属的地方和专属的功能。
我由于缺少这部分理论知识,所以显得有点有心无力,在开发下一个app的时候就需要学习并严格按照MVVM架构开发。
数据持久化
目前app还存在数据不持久化的问题,也就是所有用户操作得到的数据在app重启后就不见了,没办法存在手机里,而这部分也是iOS开发的关键技术。
结语
总而言之,这次开发经历还是非常有意思的,果然实践才是最好的学习方法,哪怕啥也不会,开始动手,可能会慢点,但是总是会学会的!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。