本文是 WWDC 2019 Session 430的读后感,其视频及配套 PDF 文稿链接如下:Introducing the Create ML App。
本文首先介绍 Create ML 的背景知识,然后讲解全新 Create ML App 的进步,最后介绍 Create ML 所对应的使用场景。
查阅全部 WWDC 2019 专栏内容,点击此处前往小专栏。
Create ML 的背景
Create ML 是苹果于2018年 WWDC 推出的生成机器学习模型的工具。它可以接收用户给定的数据,生成 iOS 开发中需要的机器学习模型(Core ML 模型)。
iOS 开发中,机器学习模型的获取主要有以下几种:
从苹果的官方主页下载现成的模型。2017年有4个现成的模型,2018年有6个,今年增加到了9个(8个图片、1个文字),数量有限,进步速度缓慢。
用第三方的机器学习框架生成模型,再用 Core ML Tools 转成 Core ML 模型。2017年苹果宣布支持的框架有6个,包括 Caffee、Keras。2018年宣布支持的第三方框架增加到了11个,包括了最知名的 TensorFlow、IBM Watson、MXNet。至此 Core ML 已经完全支持市面上所有主流的框架。
用 Create ML 直接训练数据生成模型。2018年推出的初代 Create ML有三个特性:使用 Swift 编程进行操作、用 Playground 训练和生成模型、在 Mac OS 上完成所有工作。
今年的 Create ML 在易用性上更进一步:无需编程即可完成操作、独立成单独的 Mac OS App、支持更多的数据类型和使用场景。
Create ML App 的主要功能
去年推出的 Create ML 的工作流程是这样的:定义数据源 -> 用数据源训练并生成模型 -> 验证和测试 -> 保存模型。整个过程需要在 Playground 中编写 Swift 代码,示例代码如下:
import Foundation
import CreateML
// 定义数据源
let trainDirectory = URL(fileURLWithPath: "/Users/createml/Desktop/Fruits")
let testDirectory = URL(fileURLWithPath: "/Users/createml/Desktop/TestFruits")
// 训练模型
let model = try MLImageClassifier(trainingData: .labeledDirectories(at: trainDirectory))
// 评估模型
let evaluation = model.evaluation(on: .labeledDirectories(at: testDirectory))
// 保存模型
try model.write(to: URL(fileURLWithPath: "/Users/createml/Desktop/FruitClassifier.mlmodel"))
今年的 Create ML App 成为了一个单独的 Mac OS 应用,它的工作流程不变,但操作却是异常简便,这里我们以花朵图片分类器为例:
打开 Create ML App。打开 Xcode,选择左上菜单 Xcode 选项,在开发者工具中找到 Create ML,点击打开。
选择模型类型并导入数据。选择模型类型为图片分类器,输入名称并保存。接着将准备好的训练数据(花朵图片)导入 Create ML App 中,这里可以直接拖拽,也可以通过左上角文件菜单导入。
- 训练模型。点击左上角运行按钮,Create ML 一键训练并生成花朵图片分类器模型,期间我们能看到模型的训练进度、对于不同花朵图片的分类情况。
- 评估模型。同导入训练数据一样,我们只需切换到测试一栏,然后将准备好的测试图片拖拽至测试框中,接着点击下方测试按钮即可。
- 观察模型。至此我们已经生成了需要的花朵图片分类器,我们可以点击输出一栏对其属性进行观察。
整个操作无需任何编程,即使是几百张图片也只需几秒钟即可生成对应模型。不仅如此,新的 Create ML App 提供的信息相比于之前的 Playground,也更加丰富、精确、简洁。
Create ML 的应用场景
去年的 Create ML 支持图片、文本、表格3种场景,今年增加到了5个为图片、文本、表格、声音、活动5种。
图片:图片分类器、目标识别。应用场景如上文中的花朵分类、艺术照特征提取、扑克牌牌面识别。其进步在于,模型生成方面运用了迁移学习和深度学习、内部集成了数据增强、模型也缩小了尺寸,也就是说应用场景更广、准确性更高、移动端适配性更好。
文本:文本分类器、单词标注。应用场景如提取长文本关键信息、判段文本反应出的情绪等。苹果在 Core ML 框架上层还有专门的自然语言处理框架(NLP),它所能解决的文本问题更多、更加的高度定制化、也更加准确和易用。
表格:表格分类器、表格回归、推荐系统。应用场景如根据某一物品特征判定其类别及用户满意度、根据用户喜好推荐商品等。
声音:音频分类器。应用场景为识别音频类别。苹果现场展示了用一段音频来训练模型,模型可以自动识别出掌声和不同乐器发出的声音。注意声音方面虽然刚起步,但潜力很大,因为语音识别、语音转文字、文字转语音都还可以深度集成在各种 App 中。另外 Apple Watch 也针对声音模型训练进行了硬件层面的加速优化,相信未来它会更加强大。
活动:活动分类器。应用场景主要集中在运动方面。例如可以通过 Apple Watch 收集的加速度、经纬度、方向、海拔等信息训练出模型。苹果展示了利用飞盘(Frisbee)运动中获取的信息训练出的活动分类器模型,它可以自动区分出正手、反手等动作,以帮助运动员评估比赛表现和状态。
苹果自己也将 Create ML 和 Core ML 深度运用在了其 iOS 系统中:系统自带的图片应用中,其搜索功能就运用了单词标注和图片分类器模型,它可以快速准确得标注搜索内容,并将分类的图片搜索出来。请注意这些内容都是在手机上独立完成,无需网络和服务器端的操作,这样用户的隐私也得到了充分保护。
总结
Create ML App 的独立使得其灵活性和功能再一步增强。零门槛的操作、丰富的使用场景、原生系统的支持使得 App 开发者可以更自由得定义和使用机器学习。虽然难与 TensorFlow、Pytorch 等专业框架相提并论,但在开发 App 上,Create ML 已经可以满足用户的绝大多数需求。Create ML 的最大优点在于,它是以用户需求为驱动、完全服务于 App 开发,相信在 iOS 13 后越来越多的开发者将会采用 Creat ML 和 Core ML 开发应用。