大多数浏览器和
Developer App 均支持流媒体播放。
-
探索 Create ML 中的机器学习更新
了解 Create ML 如何帮助你利用机器学习模型完成更多任务,以及使用多语言 BERT 嵌入进行图像识别和完成基于文本的任务的最新功能,探索如何轻松使用多标签分类训练出能够识别图像内容的模型。此外,本期视频还介绍了有关交互式模型评估和用于自定义训练数据增强的最新 API 的相关信息。欲了解机器学习的相关更新,请观看 WWDC23 视频“探索 Natural Language 多语言模型”和“通过异步预测改进 Core ML 集成”。
资源
相关视频
WWDC23
WWDC22
-
下载
♪ ♪
David:大家好 我叫 David Findlay 我是 Create ML 团队的 一名机器学习技术工程师 我们团队一直致力于提升改进 Create ML App 和框架 本期视频中 我很高兴能为大家介绍 我们开发的新功能 从零开始训练一个大模型 可能需要耗费数千个小时 投入数百万个带注释的文件 还要有专业领域知识以作指导 我们想为你提供一些工具 你无需花费任何开销 即可打造运用机器学习的优秀 App 我们已经创建了许多先进的模型 这些模型具有多种功能 比如照片 App 中的搜索功能 以及辅助功能中的自定义声音识别 Create ML 可以让你体验到 我们的最新技术 你可以轻松定制属于自己的 机器学习体验 本期视频首先介绍 Create ML 的更新 然后介绍一种构建机器学习模型的 全新方法 用于识别多个标签的不同场景 最后 我们还设计开发了全新的 Augmentation API 如果你的训练数据有限 它可以帮助你提高 机器学习模型的质量 我们首先介绍 文本分类的更新 文本分类器是一种机器学习任务 旨在识别自然语言文本中的 各种模式 要训练这样一个模型 你只需给它提供一个 文本和标签对应的表格即可 该示例中有体育、娱乐和自然 三个标签
你可以选择使用预训练嵌入模型 作为特征提取器的迁移学习算法 今年 我们设计了全新的嵌入模型 并向其载入数十亿个 带标签的文本示例以作训练 这是基于 Transformer 的 双向编码器表示 简称 BERT 你可以在设置选项卡里 模型参数部分的 Create ML App 中找到该选项 由于 BERT 嵌入模型支持多语言 现在 你的训练数据 可以增加多种语言 BERT 不仅支持多语言文本分类器 还可以提高单语文本分类器的 准确性 BERT 目前适用于 iOS 17、 iPadOS 17 和 macOS Sonoma 我们制作了一期涵盖 所有相关详细信息的视频 请观看“探索 Natural Language 多语言模型”视频 了解更多信息 接下来 我想为你介绍 如何在图像分类任务中 使用迁移学习功能 Create ML 中的图像分类器 可以帮助你构建模型 来回答下面这个问题 哪个标签和图像内容 最为匹配? 与文本分类器类似 图像分类器也使用了预训练模型 从图像中提取相关信息 Apple Neural Scene Analyzer 的 最新版本已经上线 仅需极少的训练数据 就能构建出一流的模型 我们正不断改进 OS 中的 图像识别模型 旨在为你提供最佳使用体验 阅读我们机器学习研究网站上的文章 以获取更多相关信息 在 Create ML App 中 你会注意到 设置选项卡的模型参数部分 有一个全新特征提取器选项
与旧版本相比 全新特征提取器的输出嵌入更小 除了提升常规性能外 该功能还可以提高分类器的准确性 缩短训练时间 并减少存储提取特征所需的内存 介绍完 Create ML 的更新后 再来说下新版的多标签图像分类器 开始介绍之前 我们先回忆一下 单标签图像分类旨在 预测与图像内容最为匹配的标签 例如 这张图像的标签 可以是狗或者户外 但必须要二选一 如果你对图像中的物体更感兴趣 那么你可以使用物体检测器 来定位场景中的物体 比如像我这样 在狗和球周围 分别绘制一个边界框 如此一来 识别将变得十分容易 但如果我对它们所在的场景 也非常感兴趣 即使再绘制一个边界框也无法识别 狗在公园里还是在户外 这时候就轮到新版 多标签图像分类器登场了 它可以检测出图像中的若干物体、 属性或标签 比如该图像包含了狗、玩具、 草地和公园四个元素 我们先用 Create ML 创建一个分类器 和之前的操作一样 第一步是收集训练数据 我想创建一个可以在不同场景下 检测多种多肉植物的分类器 这样会有意思一点 在第一张图片中 窗台上放了 三盆植物 分别是瓦苇、玉树和芦荟 在第二张图片中 一个人手持一盆仙人掌 只有一个标签的图像 也可以作为训练图像 比如第三张照片中只有芦荟 你需要在 JSON 文件中标明注释 并且用一组注释来注释每个文件
现在 我将演示如何在 Create ML App 中构建模型 首先 在 Create ML App 中 选择新的多标签图像分类器模板
然后 创建一个新项目 命名为多肉植物分类器
会出现设置选项卡 接下来 拖入训练数据 它会给出分类和训练图像数量的 摘要信息
我还可以拖入验证数据 但我先暂时选择随机分割训练数据 并使用默认的迭代次数 同时不用增强功能 设置完模型后 点击训练
在 Mac 上训练该模型 仅需几分钟的时间 该模型会立即开始使用我前面介绍的 全新特征提取器来提取特征 提取完成后 App 开始训练分类器 在训练过程中 App 会计算 平均精度分数 (简称 MAP) 通过该分数判断该模型的质量 一般来说 MAP 值越大越好 因为这意味着我的模型 对数据集里的所有标签 都具有更高的判断精度 和平均召回率 现在 该模型完成了训练 在 74 次迭代中早早地收敛 模型在训练集上得到的 MAP 为 97% 在验证集上 MAP 为 93% 下一步则要根据测试数据评估模型
从桌面拖入一个文件夹 并点击测试按键
测试数据中应该包含 用来训练模型的同一组类别标签 该 App 会计算得出一些 高级统计数据 如 MAP 值 以及哪些类别标签的精度和召回率 最高或最低等 接下来看下 Metrics 选项卡 该 App 计算了 每个类别标签的指标 包括 False Positives、 False Negatives、Precision、 Recall 以及 Confidence Threshold 等 因此 用该模型进行预测时 若置信度高于给定类别标签的阈值 则预测结果准确 来看一下该模型预测的 高于芦荟置信度阈值的图像 点开其中任意一个
该模型预测该图像中包含了芦荟 置信度为 90% 高于芦荟置信度阈值 即 40% 但对于其他标签 该模型预测的置信度 皆低于各自标签的阈值 换句话说 模型在图像中没有找到它们 接下来 我想看一下 模型没有检测到芦荟 但却被标记为芦荟的图像 选择 False Negatives 结果类型 就可以看到
这张图片很有意思 我们仔细看一下 图片中 芦荟在圆桶掌 和月亮仙人掌的后面 所以模型很难检测到芦荟 但好消息是模型准确地给出了 另外两盆植物的标签 接下来再看下 Preview 选项卡
在这里 我可以预览 该模型对未标记图像的预测 我自己种了一组多肉拼盘 我觉得用它来测试应该会十分有趣
结果正确 我在厨房里种了月亮仙人掌、 兔耳仙人掌和圆桶掌 模型全都预测正确 我对该模型的质量非常满意 但我肯定会继续测试 以了解其局限性 同时还会向我的数据集中添加更多 不同多肉植物和场景的图像 我们继续来看这个示例 在 Output 选项卡中 我可以将训练的模型保存到磁盘上
我们先了解一下创建预测 需要编写的部分代码 第一步是从编译后的 Core ML 模型中 创建一个 Vision 模型 然后通过 Vision 框架 创建一个带有源图像的 图像请求处理程序 接着执行一个请求
最后 我可以检索分类观察值 并使用我感兴趣的精度和召回值 对它们进行过滤 要了解如何选择适用于你的用例的 精度和召回值 请观看 WWDC 2019 中的视频 “理解视觉框架中的 图像技术” 在继续介绍之前 我想简单提示一下 除了图像分类器和 多标签图像分类器更新之外 我们还通过物体检测的探索选项 改进了评估选项卡 记得查看一下 接下来是本期视频的最后一项内容 对有限的数据使用增强功能 来训练机器学习模型 如果想拓展模型的适用性 训练集里的图像需要具有多种特征 比如不同的照明条件、 方向和背景等 但是 在不同情况下捕捉 和标记训练图像 可能会非常耗时 数据增强功能可以通过转换 将现有的训练示例生成新示例 对于不同的图像 转换可以是水平或垂直翻转、 裁剪或对比等 还有很多其他方式 在该示例中 一张多肉植物的图像 通过不同的转换方式 生成了四张图像 此外 转换方式还可以组合使用 比如翻转的同时增加对比度 数据增强可以提高模型的质量 尤其是训练数据较少的时候 你可以使用这项功能 拓宽模型的适用性 因为这样可以防止你的模型 去学习一些不必要的属性 比如场景中物体的确切位置等 由于每次训练迭代都会进行 特征提取 所以训练过程通常比较耗时 如果你对这一点不太了解 记得观看 WWDC 2022 中的视频 其中 有 Create ML Components 的相关介绍 之前 我们设计该框架旨在 帮助你使用转换器和估计器等组件 构建自定义机器学习模型 今年 我们新增了 Augmentation API 你可以使用它自定义增强管道 如果你之前用过 SwiftUI 你可能会比较熟悉以下步骤 第一步是创建一个增强器 与 SwiftUI 类似 该增强器也使用了结果生成器 在增强器的主体中 你可以通过 添加转换方式来增强数据 增强器是通用的 你的数据可以被标记为图像、声音 甚至可以是其他东西 但每个转换的输入和输出类型 必须匹配 比如 输入图像后产出应也是图像 我想翻转 50% 的图像 来增强数据 首先 将 ApplyRandomly 添加到增强器中 该步骤可以应用 具有给定概率的转换 然后 我再给它的主体添加一个 水平翻转转换器 好了 该增强器现在可以 通过调用应用方法 来增强数据 设计增强方式时 仔细考虑数据本身的特性非常重要 比如 不太可能存在 倒立的多肉植物 所以在这种情况下 没必要应用垂直翻转 再或者 如果想对交通标志 进行分类 结果却用了翻转增强 那么你的图像很可能 无法正确识别标签 因此 在自定义增强方式之前 记得仔细考虑数据本身的特性 好了 下一步是给增强器添加 更多转换方式
这一次 我会使用 UniformRandomFloatingPointParameter 随机旋转图像 每次应用增强 都会生成一个随机角度 最后 随机裁剪图像 请注意 增强器中的每次转换 按顺序启用 该示例中 我的图像先是随机翻转 然后再随机旋转 最后是随机裁剪 但这些只是其中的部分功能 增强器还可以帮你实现更多效果 这些都是可供使用的组件 如果还需要其他功能该怎么办? 我们用一个示例来说明 如何创建自定义转换 并使用它们来增强你的图像
要想打造出结实耐用的分类器 在不同的场景与环境中 捕捉训练图像至关重要 在该示例中 我会创建一个 自定义增强方式 将一盆多肉植物放置在 随机场景中的随机位置
首先 定义一个 RandomImageBackground 它采用了新的协议 RandomTransformer 虽然类似于转换器 但采用的是随机数生成器 我想要的增强方式是 将多肉植物随机放置在 不同的背景场景中 所以我先创建一个 获取背景图像的初始化定式 为了遵循 RandomTransformer 协议 我需要执行应用方法 应用增强的第一步是 随机选择一个背景 然后在背景图像中 选择一个随机位置 放置输入图像 并且注意不要裁剪 接下来 将输入图像编译到随机位置上 最后 把输入图像放在 随机选择的背景上 我把新的自定义增强置于最后 如此一来 翻转、旋转和裁剪等步骤在前 给多肉植物更换背景在后 这样 最终版本的增强器就完成了 通过该增强器 我可以生成 一些非常有趣的图像来训练分类器 我们继续 使用增强时 采用更新方法进行循序渐进的训练 更有效果 考虑到这一点后 一起来看使用增强进行训练的示例 我绝不会停滞不前 我将融入更多功能 包括分批处理、随机化和提前停止 首先创建一个空的图像分类器模型 然后创建一个训练循环 在训练循环中 第一步是 打乱图像次序并增强训练图像 而且打乱次序应放在 增强操作之前 这样每次迭代中的批次 都会包含不同的图像 增强器的结果是一个异步序列 这意味着转换延迟发生 通过分批处理的方法 我可以将增强的异步序列分组 该示例分为 16 批进行处理 每批增强图像最后都可以用于更新 我所创建的模型 正因如此 增强数据时 使用更新方法 是理想之选 在每次迭代中 你都会得到一组新图像 由于使用了增强器 更新方法不太可能多次遇到 完全相同的图像 这让模型更倾向于总结归纳 而非记忆 我选择了100 次迭代 但在理想情况下 当验证精度不再提高时 你应该停止训练 在本示例中 虽然训练精度仍在继续提升 但请注意 验证精度 在几次迭代后会开始下降
这意味着模型正在记忆训练数据 模型将训练结果用于 新数据的难度增加 并且在验证和测试数据上表现更差 继续训练并无益处 本期视频的最后一个示例是 在训练循环中添加提前停止 在更新步骤之后 你可以计算验证指标 我把验证精度作为 提前停止训练的标准 该方法适用于分类器模型 但其实你也可以选择别的标准 比如验证损失 甚至自己设计指标 来评估模型的质量也可以 当最近五次迭代的精度 都没有提高时 训练循环将会停止 我的增强图像分类器就介绍到这里 本期视频首先介绍了一些 OS 平台上的先进模型 你可以用这些模型在 App 中 获得出色的机器学习体验 在第二部分中 我们用了一个示例来讲解 如何使用新版的多标签图像分类器 来创建可以识别场景的模型 最后一部分则详细介绍了 如何构建自定义增强功能 来提高模型质量 本期视频到此结束 是时候用 Create ML 来增强你的 App 功能了
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。