当前位置: 首页 > news >正文

创建图像分类器模型

训练机器学习模型来对图像进行分类,并将模型添加到你的 Core ML App 中。

最新英文文章

Creating an Image Classifier Model

概览

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

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

在图像分类器完成训练后,你可以对其进行评估。如果其准确性令人满意,你可以将它存储为 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 (英文) 实例中的值。

http://www.gsyq.cn/news/74891.html

相关文章:

  • 个人健康系统|健康管理|基于java+Android+微信小代码的个人健康平台设计与完成(源码+数据库+文档)
  • 机器学习:模型训练术语大扫盲——别再混淆Step、Epoch和Iter等
  • 2025.12.6日19:50-shrine神殿,神龛,圣祠
  • 2025
  • 门面模式
  • anaconda3安装及jupyter环境配置教程
  • 图论杂题选讲
  • 初始学习率 0.002
  • animation实现卡片翻转动效‌
  • 完整教程:复盘Netflix的2025:广告业务、线下业态和视频播客
  • 深入解析:Photoshop图形工具组与图层样式
  • 利用Eval Villain进行客户端路径遍历(CSPT)漏洞挖掘与利用
  • MongoDB Docker 镜像制作与部署指南 - 教程
  • 详细介绍:28种CSS3炫酷加载动画:创建引人入胜的网页加载体验
  • 内部网关协议——OSPF 协议(开放最短路径优先)(链路状态路由协议) - 指南
  • 【GitHub热门项目】(2025-11-09) - 详解
  • 深入解析:Nginx优化与防盗链
  • [GESP202312 三级] 小猫分鱼
  • markdown文档格式分析,再使用python对md文件进行结构化拆解
  • CMake Uninstall
  • Day12-20251206
  • [NOI2015 程序自动分析]
  • 【基础】Unity着色器网格和计算对象介绍
  • 首单半价对话框的实现
  • Anchor宽高比
  • SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!
  • 从可优化到可进化:企业智能化的本质、边界与治理
  • 线段树学习笔记
  • 短剧小程序 2025 核心痛点分析:内容、工艺与合规的三重困境
  • 「Java EE开发指南」如何在MyEclipse中构建EJB 2 Session Bean?(一)