Create ML 新特性:对象追踪、时间序列预测与数据标注可视化
What's new in Create ML
2024年6月10日
一句话判断
Create ML 今年新增了 visionOS 专属的对象追踪模板、通用时间序列分类/预测组件、以及训练前的数据标注可视化检查工具——如果你在做空间计算或设备端预测类应用,这次更新值得仔细看。
这场 Session 讲了什么
Create ML 是 Apple 的端侧机器学习训练工具,分为 App(点击式训练)、Framework(代码化训练)和底层 Components(可组合的模型构建块)三个层次。今年的更新覆盖了这三个层次。
App 层面最引人注目的是对象追踪(Object Tracking)。这是专门为 visionOS 设计的新模板,用于训练模型追踪真实物体的空间位置和朝向。训练数据只需要一个 3D 资产,Create ML 自动生成训练所需的一切。应用场景包括在教育 App 中追踪地球仪并叠加月球轨道和地核可视化。
另一个 App 层面的改进是数据标注可视化。训练图像模型前,你可以在 Create ML App 中逐个检查标注的质量。Session 中展示了一个实际案例:咖啡检测器的标注混乱——有些标注在咖啡表面,有些标注在咖啡杯上,导致重复检测。
Framework 层面新增了时间序列分类和时间序列预测两个组件。分类用于识别”这段数据代表什么”(比如手势识别),预测用于回答”接下来会发生什么”(比如销量预测)。两个组件都是通用型的,可以处理加速度计、GPS、销售数据等各种时间序列。
值得深挖的点
时间序列预测组件的设计哲学
时间序列预测是一个全新的 Create ML 模型类型。它从历史数据中学习模式,预测未来的值。Session 中的示例是一个餐车销量预测 App——每天的交易数据按日期分组汇总后,模型学习到日销量的周期性和趋势性。
值得关注的不是模型本身有多复杂,而是 Apple 把它设计成了端侧训练的方案。每个餐车的销量数据不同,模型需要在设备上用各自的数据训练,这样才能捕捉到每辆餐车的独特模式(比如甜甜圈餐车销量稳步上升但周末不突出,冰淇淋餐车周末销量暴增)。
这种设计意味着你不能用 Create ML App 预先训练一个通用模型分发,而是要在 App 运行时用 Create ML Framework 的 API 做在线训练。开发者需要自己处理数据预处理、训练触发时机和模型版本管理。
数据标注可视化:训练前的第一道关
标注质量直接决定模型表现,但这一点经常被忽视。Create ML App 新增的 Explore 功能让你在训练前就能看到标注的分布情况。你可以按类别筛选,直观地看到每个标注框的位置和大小是否合理。
Session 中”咖啡”这个类别的例子很典型:同样的”咖啡”标签,有的标注在液面上,有的标注在杯子上。这种不一致会让模型困惑,产生重复检测。正确的做法是统一标注标准,然后重新标注。这个功能虽然简单,但解决的是机器学习项目中最常见的失败原因之一。
代码片段
时间序列预测(端侧训练)
import CreateMLComponents
import TabularData
// 准备训练数据:日期 + 销量
let dataFrame = try DataFrame(contentsOf: salesDataURL)
// 创建时间序列预测器
var forecaster = TimeSeriesForecaster<AnalyzedDate, AnalyzedQuantity>()
// 在设备上训练
let model = try await forecaster.fitted(to: dataFrame,
from: "date",
target: "quantity")
// 预测未来 7 天的销量
let predictions = try await model.predict(dataFrame,
horizon: 7,
from: "date")
场景:餐车 App 在本地用历史交易数据训练预测模型,预测未来一周每天的销售量,帮助备货。
坑点:时间列必须明确指定为日期类型,数据量太少(比如只有几天)会导致模型无法捕捉周期性。训练在设备上进行,大数据集可能需要较长时间。
时间序列分类(手势识别)
import CreateMLComponents
// 加速度计数据 + 对应手势标签
let trainingData: [(features: [Double], label: String)] = [
([0.1, 0.2, 0.9, ...], "pinch"), // 捏合手势
([0.5, 0.1, 0.3, ...], "snap"), // 响指手势
([0.8, 0.7, 0.2, ...], "clench"), // 握拳手势
]
// 创建并训练分类器
var classifier = TimeSeriesClassifier()
let model = try await classifier.fitted(to: trainingData)
场景:Apple Watch App 识别用户的手势,用于无障碍交互或运动追踪。加速度计数据以窗口方式输入分类器。
数据标注检查流程
在 Create ML App 中:
1. 选择你的 Data Source(训练数据集)
2. 点击 "Explore" 选项卡
3. 选择要检查的类别(如 "coffee")
4. 浏览每张图片的标注框位置和大小
5. 发现标注不一致时,返回标注工具修正
6. 修正后重新导入数据再训练
场景:训练物体检测模型前,快速验证标注质量。发现”咖啡”类别标注混乱后统一标准。
最佳实践
- 训练图像模型前先用 Explore 功能检查标注质量,这是最容易被忽视但影响最大的步骤
- 对象追踪功能需要 3D 资产作为训练输入,确保资产的质量和完整性
- 时间序列预测适合在 App 内端侧训练,因为每个用户的数据模式不同
- 端侧训练要注意训练时机——不要在用户正在使用 App 时触发,放在后台或空闲时进行
还有什么值得关注
- “Explore object tracking for visionOS” Session 有对象追踪的完整工作流程
- TabularData 框架的 Tech Talk 详细介绍了数据加载、探索和变换方法
- 时间序列分类是 Activity Classification 的通用版,不再局限于活动类型识别