创新互联IOS教程:创建图像分类器模型

概览

图像分类器是一种能够识别图像的机器学习模型。在你提供一张图像后,图像分类器会根据这个图像回复一个分类标签。

创新互联建站长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为阿图什企业提供专业的成都网站设计、网站制作阿图什网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

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

在图像分类器完成训练后,你可以对其进行评估。如果其准确性令人满意,你可以将它存储为 Core ML 模型文件,并将该文件导入到 Xcode 项目中,以在 App 中使用这个图像分类器。

收集数据

每个类别应使用至少 10 张图像,但请谨记,使用更多样化的图像可以改善图像分类器的表现,例如使用从多个角度和在多种光照条件下拍摄的照片。

每个类别下的图像数量应保持平衡。例如,不要在一个类别下使用 10 张图像,而另一个类别使用 1000 张图像。

图像可以采用 Quicktime Player 能够打开的任何格式,如 JPEG 和 PNG。图像无需符合特定的大小要求,不同图像的大小也无需相同。不过,最好使用大小至少达到 299 x 299 像素的图像。

如有可能,你收集的图像应该接近并能代表那些你预期模型在 App 中会看到的图像。例如,如果你的 App 要对用设备的摄像头在室外环境中拍摄的图像进行分类,则你应使用在室外用类似摄像头拍摄的图像来训练模型。

注释

默认情况下,图像分类器会使用场景打印特征提取器,不但能加速训练过程,也能很好地和真实物体交互。更多详情,请参阅 MLImageClassifier.FeatureExtractorType.scenePrint(revision:) (英文)。

整理训练数据

通过将图像整理到子文件夹中来准备训练数据集。根据子文件夹中所含图像的类别,为每个子文件夹命名。例如,你可以使用标签 Cheetah 来表示所有猎豹图像。

整理测试数据

使用测试数据集测试你的模型,可以快速了解你训练的模型在现实世界中的表现情况。

如果你有数量充足的图像 (例如每个类别 25 张或以上),可以通过复制训练数据集的文件夹结构来创建测试数据集。然后,将每个类别大约 20% 的图像移入测试数据集中的同等类别文件夹。

创建图像分类器项目

使用 Create ML 创建图像分类器项目。在 Xcode 打开后,按住 Control 键点按程序坞中的 Xcode 图标,再选取“Open Developer Tool”(打开开发者工具) >“Create ML”;或者,你也可以从 Xcode 菜单中选取“Open Developer Tool”(打开开发者工具) >“Create ML”。

在 Create ML 中,选取“File”(文件) >“New Project”(新项目) 以查看模型模板的列表。选择“Image Classification”(图像分类),点按“Next”(下一步)。

将项目的默认名称更改为更合适和实用的名称。如有这个项目内模型的更多相关信息 (如一名或多名作者以及简短描述),可在此填写。

配置训练会话

将含有训练数据集的文件夹拖入项目窗口中的“Training Data”(训练数据) 方格。

如果适用,将含有测试数据集的文件夹拖入项目窗口中的“Testing Data”(测试数据) 方格中。

如果你知道在训练会话中将使用的训练迭代数量,可以将默认的“Maximum Iterations”(最大迭代数) 更改为其他值。你也可以打开任何或所有图像增强。

每一种增强都会创建一个副本,并对样本图像应用变形或滤镜效果,让你无需收集更多样本,也可提高数据集的多样性。

训练图像分类器

点按“Train”(训练) 按钮,以启动训练会话。在启动会话时,Create ML 会将部分训练数据快速分入验证数据集,然后从其余训练图像中提取特征,如边缘、角落、纹理和颜色区域。Create ML 会使用图像的特征来反复训练模型,再利用验证数据集检查其准确性。

Create ML 会在图表中显示进度,黑线和灰线分别表示模型针对训练数据集和验证数据集的准确性。

评估模型的准确性

Create ML 完成模型训练后,将使用测试数据集对模型进行测试。完成对模型的测试后,Create ML 会在“Evaluation”(评估) 标签页下显示训练、验证和测试的得分。模型的训练数据集准确性得分通常较高一些,因为它是从这些图像学习的。在这个示例中,图像分类器正确识别了训练图像中 100% 的图像、验证图像中 95% 的图像,以及测试图像中 97% 的图像。

“Precision”(精确率) 是真正例除以真正例与假正例之和所得到的值。“Recall”是真正例除以真正例与假负例之和所得到的值。

如果评估表现不够好,你可能需要更多样的训练数据进行重新训练。例如,你可以为图像分类器启用图像增强选项。有关如何进行更详细模型评估的信息以及提升模型性能的策略,请参阅“提高模型准确性”。

预览模型

点按“Preview”(预览) 标签页,以测试模型对未曾见过的图像的表现。要查看模型的预测,可将图像文件拖入“Train”(按钮) 下方的列中。

存储模型

如果模型的性能达标,就可将它存储到文件系统中 (使用 Core ML 的 .mlmodel 格式),以便添加到你的 Xcode 项目中。你可以从“Output”(输出) 标签页进行以下操作:

  • 点按“Save”(存储) 按钮,将模型存储到文件系统中

  • 点按“Export”(导出) 按钮,在 Xcode 中打开模型

  • 点按“Share”(共享) 按钮,将模型发送给其他人,例如通过“邮件”或“信息”来发送

  • 将模型的图标拖入接受文件的任何地方

将模型添加到 App

最后一步是将你训练好的模型添加到 Xcode 项目中。例如,你可以使用图像分类器模型来替换掉“通过计算机视觉和 Core ML 对图像进行分类”(英文) 示例的 Xcode 项目中包含的模型。

下载这个示例,并在 Xcode 中打开其项目。将你的模型文件拖入导航面板中。Xcode 会将这个模型添加到项目中,并显示模型的元数据、操作系统可用性,以及类别标签等。

只需更改一行代码,就能在其中使用你的模型。项目仅在 ImageClassificationViewController 类中的一个位置对 MobileNet 模型进行实例化处理。

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

更改这行代码,就能将正在使用的替换为你的模型类。

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

这些模型都以图像为输入并输出标签字符串,因此可以互换。替换模型后,示例 App 不但会像之前一样对图像进行分类,现在它还会使用你的模型及关联的标签。

自动训练和评估模型

如果你是编程或机器学习方面的新手,可以按照以上所述,使用 Create ML 来训练有用的图像分类器。当然你也可以使用 MLImageClassifier (英文) 实例来编写模型训练过程的脚本。常规的任务都是相同的:准备数据,训练模型,评估性能,再存储 Core ML 模型文件。不同之处只在于所有任务都需要编程。

例如,你可以对两个 MLImageClassifier.DataSource (英文) 实例进行实例化处理,分别用于训练数据集和测试数据集。借助 init(trainingData:parameters:) (英文),使用训练数据源来对图像分类器进行实例化处理。然后,使用测试数据源及 evaluation(on:) (英文) 方法,再评估它返回的 MLClassifierMetrics (英文) 实例中的值。

当前名称:创新互联IOS教程:创建图像分类器模型
文章网址:http://www.shufengxianlan.com/qtweb/news29/239879.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联