WWDC Quick Look 💓 By SwiftGGTeam
What’s new in Create ML

What’s new in Create ML

观看原视频

Highlight

Create ML 是 Apple 的端侧机器学习训练工具,分为 App(点击式训练)、Framework(代码化训练)和底层 Components(可组合的模型构建块)三个层次。今年的更新覆盖了这三个层次。


核心内容

训练一个图像检测模型,部署后发现同一个咖啡杯被识别两次——一次标注在咖啡液面上,一次标注在杯体上。这种”重复检测”问题根因不在模型,而在标注数据本身。但过去在 Create ML App 里,你没有办法逐条检查标注是否符合预期。今年新增的 Explore 功能解决了这个问题:点击数据源,选择某个类标签,就能逐图看到标注框的位置和大小(03:12)。训练前先检查,避免”垃圾进、垃圾出”。

另一个重大更新是对象追踪(Object Tracking)。这是专门为 visionOS 设计的新模板,用于训练模型追踪真实物体的空间位置和朝向。训练数据只需要一个 3D 资产,Create ML 自动生成全部训练样本。演示场景中,一个真实地球仪被追踪后,App 在其周围叠加了月球轨道和地核可视化(04:14)。

在 Components 层面,今年新增了两个通用组件:时间序列分类和时间序列预测。分类回答”这段数据代表什么”(比如用手表加速度计识别手势),预测回答”接下来会发生什么”(比如预测销量)。两个组件都是通用型的,能处理加速度计、GPS、销售数据等各种时序数据。


详细内容

数据源 Explore 功能

Create ML App 中,选择左侧的数据源后会显示数据分布。新增的 Explore 选项让你钻入某个类标签,逐图可视化标注框。适用于图像分类、目标检测、手姿态分类等图像类模板(03:36)。

对象追踪模板

Create ML App 新增 Spatial 分类,其中的对象追踪模板用于训练追踪物体空间位置和朝向的模型。训练输入只需一个 3D 资产,App 自动生成训练所需数据。完整工作流请参考专门的视频 “Explore object tracking for visionOS”(05:01)。

时间序列预测:从数据准备到训练

Session 以一个餐车销量预测 App 为例,完整演示了 Create ML Components 的使用流程。

数据预处理——将逐笔交易汇总为每日销量:

// 创建 DateFeatureExtractor,提取月份和星期几特征
let featureExtractor = DateFeatureExtractor(
    featureComponents: [.month, .weekday]
)

// 组合 ColumnSelector 和 featureExtractor 为 pipeline
let pipeline = PipelineComposer()
    .compose(ColumnSelector("date"), featureExtractor)
    .append(ColumnConcatenator())

// 用 pipeline 拟合 DataFrame,得到预处理器
let preprocessor = pipeline.fit(dataFrame)

// 提取特征列和目标列为 MLShapedArray
let features = preprocessor.transform(dataFrame)["features"].typedValues()
let targets = dataFrame["quantity"].typedValues()

关键点:

  • DateFeatureExtractor 从日期列中提取 .month.weekday 等特征组件,让模型学会周期性规律(09:08
  • ColumnSelector 选取特定列,与 featureExtractor 组合成 pipeline
  • ColumnConcatenator 将多列特征合并为一个 MLShapedArray,作为模型输入
  • pipeline.fit() 返回的 preprocessor 可将原始 DataFrame 转换为模型需要的格式

模型训练与预测

// 将数据分为训练集和验证集
let (training, validation) = data.split(ratio: 0.8)

// 创建时间序列预测器,配置历史窗口和预测窗口
let forecaster = TimeSeriesForecaster(
    inputWindowSize: 15,
    forecastWindowSize: 3
)

// 训练
let model = forecaster.fit(training)

// 预测未来 3 天的销量
let predictions = model.applied(input: recentData)

关键点:

  • inputWindowSize 是模型参考的历史数据长度,forecastWindowSize 是预测的未来步数(10:32
  • 历史窗口应长于预测窗口——想预测 3 天,至少提供 15 天历史数据
  • fit() 方法执行训练,applied() 方法执行推理
  • 端侧训练的好处:每个餐车的销量模式不同,端侧训练让模型针对特定数据做个性化(08:26

核心启发

  • 做什么:训练图像模型前,先用 Explore 功能检查标注质量。为什么值得做:标注不一致是模型行为异常的头号原因,且在训练前几乎无法被发现。怎么开始:在 Create ML App 中打开数据源,点击 Explore,逐类标签检查标注框位置是否一致。
  • 做什么:为 visionOS App 引入对象追踪,叠加 3D 内容。为什么值得做:3D 资产是唯一训练输入,门槛极低,却能实现空间计算中最沉浸的体验。怎么开始:准备一个目标物体的 3D 资产(USDZ 格式),在 Create ML App 的 Spatial 分类中选择对象追踪模板。
  • 做什么:在 App 内端侧训练时间序列预测模型,做个性化预测。为什么值得做:时序数据(销量、传感器读数)因用户/场景而异,云端统一模型无法捕捉个体差异。怎么开始:用 Create ML Components 的 TimeSeriesForecaster,设定 inputWindowSizeforecastWindowSize,在用户空闲时触发训练。
  • 做什么:用 DateFeatureExtractor 从日期列中提取周期性特征。为什么值得做:销售数据、传感器数据常有周周期或年周期,提取 .weekday.month 让模型自动学会这些规律。怎么开始:在数据预处理 pipeline 中加入 DateFeatureExtractor(featureComponents: [.month, .weekday])

关联 Session

评论

GitHub Issues · utterances