预先训练的级联图像分类

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

使用 OpenCV 库为正面创建预定型图像分类模型

类别: OpenCV 库模块

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用 机器学习 Studio (经典) 中的预训练级联图像分类模块来检测图像中的人脸。

该模型基于 OpenCV 库。 OpenCV 库提供预定义模型的列表,每个模型经过优化以检测特定类型的对象。

有关预先训练的模型

此图像识别模型已针对大量图像进行了训练,这些图像广泛用于图像识别任务。 此特定分类模型已针对面部检测进行了优化,并使用Viola-Jones检测算法。 该模型的目的是识别在正面视图中包含人脸的图像。

尽管目前仅提供一个 OpenCV 映像分类模型,但其他预训练模型可能在更高版本中可用。

使用预先训练的模型

如果你有一组要分析的图像,请根据本主题中所述,将它们作为输入提供给评分模型模块,并附加此模块,该模块提供预先训练的 OpenCV 库模型。

评分 模型 模块使用图像分类模型来确定图像是否包含人脸,并返回用作输入的每个图像的概率分数。

无法根据 新图像数据 重新训练基于预训练级联图像分类的模型。

模型存储格式与训练模型和交叉验证模型模块不兼容。

如何配置预训练级联图像分类

图像分类模型中机器学习已使用大型数据集进行训练,并针对特定图像类型进行了优化。 因此,只需提供一组图像作为评分 数据集。 作为输出,模块会生成一个分数,该分数指示每个图像是否包含目标图像类型。

  1. 准备并导入计划用于评分的图像数据集。 通常,数据集中所有图像的大小都应相同。

    使用"导入图像"模块将 图像添加到 试验。 请仔细阅读 导入图像 的帮助,确保使用的图像满足要求。 还必须确保在定义的存储选项中可以访问映像。

  2. 将预 训练级联图像分类 模块添加到工作室中的试验 (经典) 。 可以在 OpenCV 库类别中找到此 模块。

  3. 从预先训练的分类器中的列表中选择一个预先 训练的分类器

    目前,只有一个分类器可用 默认选择的正面人脸。

  4. 比例因子:键入一个值,该值指定在每个图像比例下减少的图像大小。

    在 OpenCV 库中,分类器设计为可以轻松"调整"大小,以便查找不同大小的兴趣对象。 这比调整映像本身的大小更高效。 因此,若要在图像中查找未知大小的对象,扫描过程应在不同比例下执行多次。

    建议尝试不同的缩放因素,看看哪些因素提供最佳的图像分类结果。

  5. 最小邻居数:键入一个表示检测区域是否包含人脸所需的最小重叠矩形数的一个序列号。

    在 OpenCV 库中,分类器检测输入图像中不同大小的对象。 检测到的对象作为矩形列表返回。 邻居参数控制需要多少个可能的匹配项才能被检测为检测到的人脸或特征。 因此,增加此值往往会增加精度,但代价是覆盖。

    有关如何计算邻居的示例,请参阅 OpenCv 库文档中的以下文章: OpenCV 中的特征

  6. (可选)可以使用以下设置为模型指定图像大小,以便它可以进行更好的预测。 将消除不符合要求的图像:

    • 最小高度:键入最小图像的像素高度。 如果为此属性指定值,则忽略小于此值的图像。

    • 最大高度。 键入最大图像的像素宽度。 如果为此属性指定值,则忽略大于此值的图像。

    • 最小宽度:键入最小图像的像素宽度。 如果为此属性指定值,则忽略小于此值的图像。

    • 最大宽度:键入最大图像的像素宽度。 如果为此属性指定值,则忽略大于此值的图像。

  7. 连接用于评分的图像数据集。

  8. 评分模型 模块添加到试验,并连接预先训练的图像分类器以及图像数据集。

  9. 运行试验。

结果

评分模型 的输出 包括图像名称、评分标签以及标签的概率分数 (0 或 1) 。 如果图像可能向人脸显示对象,分类器 ("1",) "0"。 例如:

映像名称 评分标签 评分概率
MAN001.png TRUE 1
TABLE001.PNG FALSE 0
CHAIR001.PNG FALSE 0

提示

输出还包含数据集中所有颜色通道的 RGB 值。 因此,为了更轻松地查看数据,我们建议在试验中,使用"选择数据集 中的 列"仅输出结果列。

技术说明

此模块提供的面部识别模型基于人脸Viola-Jones算法。 有关详细信息,请参阅以下资源:

  • 此视频介绍面部识别的基本概念,包括 Haar 特征的定义,以及如何在面部检测中使用这些功能: 面部检测 - 第 1 部分

  • 此维基百科文章根据 Navneet Dalal 和 Bill Triggs:面向渐变的直方图一文介绍了用于分类 器的方法

  • 有关 OpenCV 库中提供的人脸识别算法的文档,请参阅 Cascade Classifier

注意

此模块不会输出 OpenCV 库生成的完整信息集合。 具体而言,此模块仅输出人脸是否存在的预测,不包括人脸的坐标或其他任何信息。

如果需要此附加信息,请考虑使用其他库,例如 Microsoft 认知 服务提供的 人脸 API

模块参数

名称 范围 类型 默认 说明
预先训练的分类器 列表 PretrainedClassifier 面部 基于标准 OpenCV 分布预先训练的分类器。
比例因子 >=1.000000000000002 Float 1.1 一个参数,用于指定在每个图像比例下,要将图像减小多少。
最小近邻数 >=0 Integer 3 一个参数,用于指定每个候选矩形应必须保留多少个近邻。
最小高度 >=1 Integer 100 最小可能对象高度(以像素为单位)。 将忽略小于此值的对象。

参数是可选的。
最小宽度 >=1 Integer 100 最小可能对象宽度(以像素为单位)。 将忽略小于此值的对象。

参数是可选的。
最大高度 >=1 Integer 200 最大可能对象高度(以像素为单位)。 将忽略大于此值的对象。

参数是可选的。
最大宽度 >=1 Integer 200 最大可能对象宽度(以像素为单位)。 将忽略大于此值的对象。

参数是可选的。

Outputs

名称 类型 说明
已训练模型 ILearner 接口 经过训练的二元分类模型

例外

异常 描述
错误 0005 如果参数小于特定值,将出现异常。

有关特定于工作室和经典 (模块) 的列表,请参阅机器学习代码

有关 API 异常的列表,请参阅机器学习 REST API代码

另请参阅

导入图像
预先训练的级联图像分类