Skip to main content

Azure 人脸服务概念详述

分类:  Azure认知服务 标签:  #Azure #人工智能 #Face 发布于: 2023-06-10 22:19:01

在Azure提供的人脸服务中,主要包含两类概念:

  • 人脸检测: 从图片中检查可能存在的人脸,并返回人脸的数据,人脸的数据包含一些类的特性。下面我们会详细的描述。
  • 人脸识别: 人脸识别依赖于人脸检测,然后对给出的源图片和目的图片进行识别,或者找到相似,或者验证等动作。

人脸检测

人脸检测最好能从图像中找到人脸在图片中的位置,以(left/Top/Width/Height)返回人脸的数据,同时还可以指定其他的特征,从人脸中检测出需要的特征。

人脸ID

API在图像中识别出人脸之后,会给每一个人脸一个唯一的ID, 可以从人脸的API中得到这个ID。

人脸特征点

人脸的特征点主要是指分布在人脸上的一系列的点,默认情况下,API会从人脸上返回27个特征点,如下图所示:


如下是属性的说明:

  • Age: 特定人脸的估计年龄(岁)。
  • Blur: 图像中人脸的模糊度。 此属性返回 0 到 1 的值,以及非正式分级:low、medium 或 high。
  • Emotion: 给定人脸的情感列表及其检测置信度。 置信度分数会进行标准化,所有情感的分数加起来后得到一个总的分数。 返回的情感包括快乐、悲伤、中性、愤怒、蔑视、厌恶、惊讶、恐惧。
  • Exposure: 图像中人脸的曝光度。 此属性返回 0 到 1 的值,以及非正式的分级:underExposure、goodExposure 或 overExposure。
  • Facial hair: 给定人脸的胡须状态和长度。
  • Gender: 给定人脸的估计性别。 可能的值为 male、female 和 genderless。
  • Glasses: 给定的人脸是否戴有眼镜。 可能的值为 NoGlasses、ReadingGlasses、Sunglasses 和 Swimming Goggles。
  • Hair: 人脸的发型。 此属性显示头发是否可见、是否检测到秃顶,以及检测到了哪种发色。
  • Head pose: 人脸在 3D 空间中的摆向。 此属性以俯仰角、翻滚角和偏航角(以度为单位)描述。 值的范围分别为 -90 度到 90 度、-90 度到 90 度,以及 -90 度到 90 度。 有关角度映射,请参阅以下示意图:
    标有俯仰、翻滚和偏航轴的头部


  • Makeup: 人脸是否有化妆。 此值返回 eyeMakeup 和 lipMakeup 的布尔值。
  • Noise: 在人脸图像中检测到的视觉噪点。 此属性返回 0 到 1 的值,以及非正式分级:low、medium 或 high。
  • Occlusion: 是否存在遮挡人脸部位的物体。 此属性返回 eyeOccluded、foreheadOccluded 和 mouthOccluded 的布尔值。
  • Smile: 给定人脸的微笑表情。 此值介于 0(未微笑)与 1(明确的微笑)之间。
  • 人脸识别的输入数据格式要求

    使用以下提示来确保输入的图像提供最准确的检测结果:

    • 支持的输入图像格式为 JPEG、PNG、GIF(第一帧)和 BMP。
    • 图像文件不得大于 6 MB。
    • 在不大于 1920 x 1080 像素的图像中,最小可检测人脸大小是 36 x 36 像素。 在大于 1920 x 1080 像素的图像中,最小人脸大小相应更大。 减小人脸大小可能会导致无法检测到某些人脸,即使它们大于最小可检测人脸大小也是如此。
    • 最大可检测人脸大小为 4096 x 4096 像素。
    • 大小在 36 x 36 至 4096 x 4096 像素大小范围之外的人脸将不会被检测到。
    • 某些人脸会因技术难题而检测不到。 极端的人脸角度(头部姿势)或人脸遮挡物(太阳镜或遮挡人脸部位的手等物体)可能会影响检测。 正面和接近正面的人脸可提供最佳结果。

    若要检测视频源中的人脸,则可通过调整视频摄像头上的某些设置来改进性能:

    • 平滑处理:许多视频摄像头应用平滑处理效果。 在可能的情况下,应将此关闭,因为它会在帧之间产生模糊,降低清晰度。
    • 快门速度:更快的快门速度会减少帧之间的移动量,使每个帧更清晰。 建议将快门速度设置为 1/60 秒或更快。
    • 快门角度:某些摄像头指定快门角度而不是快门速度。 应该尽可能使用较低的快门角度。 这会增加视频帧的清晰度。

    人脸识别

    人脸识别包含几个动作:验证查找相似人脸分组识别人脸

    和识别相关的数据结构

    识别操作主要使用如下的数据结构,这些对象是直接存储在Azure 云上,可按照其ID字符串引用。一个ID在一个订阅中始终唯一。

    名称说明
    DetectedFace此单个人脸表示形式通过人脸检测操作检索。 其 ID 在创建 24 小时后过期。
    PersistedFace将 DetectedFace 对象添加到某个组(例如 FaceList 或 Person)后,它们将变成 PersistedFace 对象。 它们可以随时检索,且不会过期。
    FaceList 或 LargeFaceList此数据结构是 PersistedFace 对象的分类列表。 FaceList 具有唯一的 ID、名称字符串,以及(可选的)用户数据字符串。
    Person此数据结构是属于同一个人的 PersistedFace 对象列表。 它具有唯一的 ID、名称字符串,以及(可选的)用户数据字符串。
    PersonGroup 或 LargePersonGroup此数据结构是 Person 对象的分类列表。 它具有唯一的 ID、名称字符串,以及(可选的)用户数据字符串。 PersonGroup 必须事先经过训练才能在识别操作中使用。

    识别操作

    识别操作支持四个操作,分别为识别查找相似分组识别

    Verify

    验证操作采用人脸 ID(来自 DetectedFace 或 PersistedFace)以及另一个人脸 ID 或 Person 对象,并确定它们是否属于同一个人。 如果传入了 Person 对象,可以选择性地传入该 Person 所属的 PersonGroup 以提高性能。

    查找相似

    查找相似人脸操作采用人脸 ID(来自 DetectedFace 或 PersistedFace)以及 FaceList 或其他人脸 ID 的数组。 使用 FaceList 时,它会返回与给定人脸相似的人脸的较小 FaceList。 使用人脸 ID 的数组时,它同样会返回较小的数组。

    分组操作采用分类人脸 ID(来自 DetectedFace 或 PersistedFace)的数组,并返回分组为多个较小数组的相同 ID。 每个“groups”数组包含看上去相似的人脸 ID。 单个“messyGroup”数组包含未找到相似性的人脸 ID。

    识别

    识别操作采用一个或多个人脸 ID(来自 DetectedFace 或 PersistedFace)和一个 PersonGroup,并返回每张人脸可能属于的 Person 对象列表。 返回的 Person 对象包装为具有预测置信度值的 Candidate 对象。