获取 Core ML 模型

文章

获取 Core ML 模型

获取要在 app 中使用的 Core ML 模型。

概览

Core ML 支持多种机器学习模型,包括神经网络、树集成、支持向量机和广义线性模型。Core ML 要求使用 Core ML 模型格式 (文件扩展名为 .mlmodel 的模型)。

利用 Create ML 和您自己的数据,您可以训练定制模型来完成某些任务,例如识别图像、提取文本含义或查找数字值之间的关系。Create ML主要用来创建典型的机器学习模型,支持什么模型提前查阅。使用 Create ML 训练的模型使用 Core ML 模型格式,并能直接在 app 中使用。

Apple 还提供了多个热门的开源模型,这些模型已经是 Core ML 模型格式。您可以下载这些模型并在 app 中开始使用它们。此外,各种调研团队和大学也发布了他们的模型和训练数据,但这些模型可能不是 Core ML 模型格式。要在 app 中使用这些模型,您需要先根据“将经过训练的模型转换为 Core ML”中所述,对它们进行转换。

Create ML

创建要在 app 中使用的机器学习模型。

概览

Create ML 可以与 Swift 和 macOS Playground 等您所熟悉的工具搭配使用,在 Mac 上创建和训练自定的机器学习模型。您可以训练模型来完成一些任务,例如识别图像、提取文本含义或查找数字值之间的关系。

 

您可以通过向模型展示训练样本来训练模型识别图案。例如,您可以通过向模型展示大量不同犬类的图像来训练模型识别犬类。在完成模型训练后,您可使用模型之前未曾见过的数据来测试模型,并评估模型完成这个任务的表现情况。如果模型表现良好,就可以使用 Core ML 将它整合到 app 中。

 

Create ML 利用“照片”和 Siri 等 Apple 产品中内建的机器学习基础架构。这意味着,图像分类和自然语言模型会更小,训练时间所需的时间也要短很多。

文章

创建图像分类器模型

训练机器学习模型来对图像进行分类。

概览

图像分类器是一种机器学习模型,经过训练后,能够用来识别图像。在您提供一张图像后,图像分类器会根据这个图像回复一个标签。

 

训练图像分类器的方法是向它展示大量已标记的图像示例。例如,您可以向图像分类器展示各种大象、长颈鹿、狮子等动物的照片来训练它识别野生动物。

 

准备数据

首先,准备要用来训练和评估分类器的数据。从每个标签下的图像中选择 80% 的图像来创建一个训练数据集。使用其余图像创建测试数据集。确保任一指定图像均只出现在其中一个集合中。

接着,整理磁盘上的数据,确保与其中一个 MLImageClassifier.ataSource (英文) 类型兼容。一种方法是创建两个分别名为 Training Data 和 Testing Data 的文件夹。在每个文件夹中,以标签作为名称创建子文件夹。然后,将每个数据集的图像整理到相应的子文件夹中。

 

具体的标签字符串并不重要,只要对您有意义即可。例如,您可以使用标签 Cheetah 来表示所有猎豹图像。您不必以任何特定方式对图像文件命名或为它们添加元数据。您只需将它们放入具有正确标签的文件夹即可。

在训练集中,每个标签至少应有 10 张图像,越多当然越好。此外,应让每个标签下的图像数量保持平衡。例如,不要 Cheetah 下包含 10 张图像,而 Elephant 下包含 1000 张图像。

图像可以使用任意格式,只要统一类型标识符符合 public.image 即可。具体包括 JPEG 和 PNG 等常见格式。图像无需尺寸一致,也不必使用任何特定的尺寸,但最好使用至少 299x299 像素的图像。如果可以,训练所用图像应当与待预测图像使用相似的方法收集。

提供多样化图像。例如,使用从不同角度和在不同光线条件下拍摄的动物图像。如果针对给定标签使用几乎相同的图像来训练分类器,该分类器的表现往往不如使用更为多样化的图像集训练出的分类器。

注释

分类器使用场景打印特征提取器来加速训练过程。这会影响适合用于训练的图像种类。有关详细信息,请参阅 MLImageClassifier.FeatureExtractorType.scenePrint(revision:) (英文)

在 Playground 中显示 Image Classifier Builder

数据准备就绪后,以 macOS 为目标创建新的 Xcode Playground。使用 Playground 创建 MLImageClassifierBuilder (英文) 实例并在实时视图中显示:

// Import CreateMLUI to train the image classifier in the UI.
// For other Create ML tasks, import CreateML instead.
import CreateMLUI 

let builder = MLImageClassifierBuilder()
builder.showInLiveView()

在 Xcode 中显示辅助编辑器,然后运行 Playground。这样操作后,实时视图会显示图像分类器:

 

训练图像分类器

将 Training Data 文件夹从访达拖到实时视图中指示的位置。完成后,训练过程就会开始,图像分类器会显示进度:

 

在训练过程中,图像分类器会自动将训练数据拆分到训练集和验证集。它们都会影响训练,但方式各异。由于拆分是随机的,因此每次训练模型时可能会得到不同的结果。

在训练完成时,实时视图会显示训练和验证准确性。这些数据表示经过训练的模型在对相应集合中图像进行分类方面表现如何。由于模型是使用这些图像训练的,因此通常能够准确地对这些图像进行分类。

 

评估分类器的表现情况

接着,使用陌生的图像对经过训练的模型进行测试,评估模型的表现情况。这时,请使用您在开始训练前创建的测试数据集。将 Test Data 文件夹拖到实时视图中,就像之前使用训练数据一样。

 

模型会处理所有图像,并逐个做出预测。由于这是有标签的数据,因此模型可以检查自己的预测是否正确。然后,它会添加总体评估准确性作为 UI 中的最终指标。

 

如果评估表现不够好,则可能需要使用更多数据重新训练 (例如,引入图像增强) 或更改一些其他训练配置。有关如何进行更详细模型评估的信息以及提升模型性能的策略,请参阅“提高模型准确性”。

存储 Core ML 模型

当模型表现足够好后,就可以存储模型以便在 app 中使用了。

为分类器指定有意义的名称。通过在 UI 中更改名称,将默认的 ImageClassifier 更改为 AnimalClassifier。您还可以添加更多关于模型的信息,例如作者和简短描述。点按展开三角形可以显示这些元数据栏位并填写详细信息。

 

点按“Save”(存储)。模型会以 .mlmodel 格式的文件写入“Where”(位置) 栏位中指定的目录。

将模型添加到 App

现在将经过训练的模型添加到现有支持 Core ML 的 app。您可以使用这个模型替换“通过 Vision 和 Core ML 对图像进行分类 (英文)”示例代码项目随附的模型。如果您这样做,样本 app 会和以前完全一样运行,唯一的不同是它会根据您定义的标签识别动物并进行分类。

在 Xcode 中打开示例代码项目,并将模型文件拖到导航面板中。模型成为项目的一部分后,Xcode 会向您显示模型元数据以及其他信息,例如模型类。

 

要在代码中使用新模型,只需要更改一行代码即可。项目附带的 MobileNet 模型仅在 ImageClassificationViewController 类中的一个位置进行实例化:

let model = try VNCoreMLModel(for: MobileNet().model)

请将这一行更改为使用新的模型类:

let model = try VNCoreMLModel(for: AnimalClassifier().model)

这些模型都以图像为输入并输出标签,因此可以互换。替换后,示例 app 会像之前一样对图像进行分类,不同的地方是它会使用您的模型及关联的标签。

另一种方法:实现图像分类器制作过程自动化

如果您在编程或机器学习方面没什么经验,可以按照以上部分所述,使用 MLImageClassifierBuilder (英文) 实例来训练有用的图像分类器。但是,如果需要用脚本编写模型训练过程,请改为使用 MLImageClassifier (英文) 实例。相关步骤基本相同:准备数据,训练模型,评估表现,并将结果存储到 Core ML 模型文件。不同之处在于所有任务以编程方式进行。例如,您不是将测试数据拖到实时视图来评估模型的表现,而是初始化 MLImageClassifier.DataSource (英文) 实例并将它提供给分类器的 evaluation(on:) (英文) 方法。

Apple开源模型

https://developer.apple.com/cn/machine-learning/models/

互联网公司的深度学习模型可以使用不同的框架和技术来实现。例如,百度的mobile-deep-learning(MDL)框架提供了模型转换、加载、网络管理和矩阵运算等功能,以及供Android端调用的JNI接口层。该框架可以将Caffe模型转换为MDL模型,并支持将32位浮点型参数量化为8位参数,从而压缩模型体积。开发者可以通过调用JNI接口轻松完成加载和预测过程。[1] 另外,苹果公司在2017年推出了Core ML框架,用于在iOS设备上使用机器学习模型Core ML的主要作用是将已经训练好的模型转换为iOS可理解的形式,并通过将新的数据输入模型获取输出。这样,开发者可以轻松地在iOS应用程序中使用已经训练好的模型,而无需自己寻找模型或编写跨平台调用的代码。Core ML还可以利用iOS设备的GPU性能和Metal来进行矩阵运算,从而提高模型的性能。[2] 此外,还有其他一些方法和技术用于优化深度学习模型。例如,基于参数修剪和共享的方法可以去除冗余和不重要的参数项。基于低秩因子分解的技术使用矩阵/张量分解来估计模型的信息参数。基于传输/紧凑卷积滤波器的方法设计了特殊的结构卷积滤波器来降低存储和计算复杂度。知识蒸馏方法通过学习一个蒸馏模型,训练一个更紧凑的神经网络来重现一个更大的网络的输出。[3] 总之,互联网公司可以使用不同的框架和技术来实现深度学习模型,并通过优化方法和技术来提高模型的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值