博客 · 指南
从你自己的照片到 App Store,全部在 iPad 上完成
在 MagicaLCore 中训练模型,在 Swift Playgrounds 中开发 App,再发送到 App Store Connect。无需 Mac,一步步走完全程。
作者:MagicaLCore ·
过去,想做一款用自己的模型识别事物的 App,每一步都离不开 Mac:训练工具、Xcode,还有一台用来上传构建版本的电脑。如今,一台配备 M1 或更新芯片的 iPad 就能走完全程。下面以一款植物识别 App 为例,看看各个环节如何衔接。
想法
挑一样你在意、又能用摄像头、麦克风或一张数据表记录下来的东西:
- 从一张照片看,这是哪种室内植物?
- 从一段录音听,是哪种鸟在唱歌?
- 这句话是提问、抱怨还是称赞?
- 从一张手的照片看,是石头、剪刀还是布?
范围窄的问题比范围宽的问题效果更好。“我阳台上的这 8 种植物中的哪一种?”胜过“世界上的所有植物”。
第 1 步:收集示例
用 iPad 给每种植物拍照:换角度、换光线,近拍也远拍。每种植物放进一个单独的文件夹,以它的名字命名。这些名字就是你的 App 将显示的标签。每种植物留出几张照片,专门用于测试。
第 2 步:在 MagicaLCore 中训练
新建一个图像模型,填写名称和作者,然后添加你的文件夹。先用默认设置开始。训练时,留意训练和验证的准确率与损失。如果时间不够,可以暂停,之后在历史记录中继续。
第 3 步:测试困难的情况
把摄像头对准植物,看看每次预测的置信度。试试昏暗的角落、背景杂乱的叶子、不在你列表里的植物。模型出错时,就多加一些类似的示例,再训练一次。好模型正是在这样的循环中诞生的。
第 4 步:导出 .mlmodel
导出模型,附上名称、作者和描述,并存入“文件”App。它可直接用于 Swift Playgrounds 和 Xcode。
第 5 步:在 Swift Playgrounds 中开发 App
Swift Playgrounds 是 Apple 的免费 App,可在 iPad 和 Mac 上编写 Swift 代码、用 SwiftUI 开发 App。新建一个 App 项目,加入 .mlmodel,编写界面,输入时可实时预览。MagicaLCore 中的“使用你的模型”指南展示了每种模型类型的代码:如何加载模型,如何传入一张照片、一段声音、一行数据或一句话,以及如何读取答案。
一个简单的第一版只需要三样东西:
- 一个用来拍照或选择照片的按钮。
- 模型的答案及其置信度。
- 一张关于结果的简短卡片:在植物 App 中,就是植物名称和养护方法。
第 6 步:发布
App 在你的 iPad 上运行正常后,Swift Playgrounds 可以把它发送到 App Store Connect。要在 App Store 发布,你需要 Apple Developer Program 会员资格。如果以后需要更多功能,同一个项目可以在 Mac 上的 Xcode 中打开。
小贴士
- 识别在设备上完成。 模型随 App 一起分发,因此无需服务器就能给出答案,也不会把照片发送到任何地方。
- 从小做起,逐步扩展。 先用少量类别发布,收集到更多示例后再增加类别。
- 对用户坦诚。 显示置信度,并说明 App 不知道什么。
写给学生:Swift Student Challenge
Apple 每年邀请学生把自己创作的 App Playground 提交给 Swift Student Challenge。学生用自己的照片、声音或数据训练的模型,可以成为作品的核心,而且可离线运行。MagicaLCore 不属于 Challenge,也与 Apple 无关,因此请阅读当年的官方规则,并注明你所用的工具。
全程一览
| 步骤 | App | 设备 |
|---|---|---|
| 收集示例 | 相机、语音备忘录、文件 | iPad |
| 训练和测试 | MagicaLCore | iPad |
| 导出 .mlmodel | MagicaLCore | iPad |
| 开发 App | Swift Playgrounds | iPad |
| 发送到 App Store Connect | Swift Playgrounds | iPad |
有关其他 App 和服务的信息均于文章发布日期核实,可能会有变化。所有产品名称归其各自所有者所有。
MagicaLCore