全部产品
云市场

人脸聚类相关问题

更新时间:2020-02-20 16:19:01

人脸聚类需要什么 Project 类型?

图片标准型。

为什么无法生成人脸分组?

生成分组需要有如下前提:

  • 使用 IndexImage 将照片添加到媒体集 Set 。

  • 同一个 人物 在 Set 中的照片,必须大于或等于 3 张,并且至少有 3 张符合如下高清人脸标准:

    • 人脸尺寸 > 50 x 50 像素
    • 人脸的偏转角 HeadPose 的三个子项的绝对值,均 < 30 度。
    • 人脸的质量 FaceQuality > 0.8。

这是为了确保人脸分组的准确性带来的要求。一旦分组生成之后,Set 内的不满足上述高清人脸标准的图片,也有机会被划分为同一组人脸

为什么生成的人脸分组无法搜索到?

由于我们的底层索引机制为异步处理,因此从照片索引,到人脸分组,到人脸分组可以被搜索到,是需要一定的时间的。通常:

IndexImage 对照片的索引需要:10 秒 。

CreateGroupFacesJob 人脸聚类分组操作需要:最多180秒。通常数秒完成。和单次索引的照片数量有关,一般数秒完成。

需要注意的是,CreateGroupFacesJob 依赖 IndexImage 完成照片中人脸的检测。如果您使用 MNS 消息订阅了 IndexImage 结果,那么应当在 IndexImage 完成后,等待 3 秒再调用 CreateGroupFacesJob,以便 CreateGroupFacesJob 接口能够获得最新的照片中人脸信息。

IndexImage、CreateGroupFacesJob 等异步接口完成后,可以通过 FindImages 搜索到最新结果的时间:3 秒。

因此在设计业务逻辑时,应当考虑上述延迟带来的数据一致性问题。

应该每次索引照片后调用一次 CreateGroupFacesJob 吗?

不建议这样操作。CreateGroupFacesJob 接口为增量分组接口。通常可以在一批照片完成索引后,一次性调用 CreateGroupFacesJob 来进行批量聚类。

推荐如下两个方案:

  • 简单方法,即对每一个 Set,每隔固定间隔(如 5 分钟)调用一次 CreateGroupFacesJob 接口进行聚类。
  • 更佳方案,每次 IndexImage 时,将其对应的 Set 推入一个延迟队列。定时从该队列中获取 SetId,即可得到有新图片的 Set。在其最后一次 IndexImage 的(10+3)秒后运行 CreateGroupFacesJob。

照片、人脸数量是否有限制?

Set 数量无限制。其他限制参考 用户限额

Set 的粒度如何设计?

Set 是媒体搜索、人脸聚类的范围。不允许跨 Set 进行搜索、聚类。以次为依据进行划分。如云相册场景,建议每个终端用户一个 Set。

一张照片会被分到几个组?一个照片中有很多人会怎么样?

人脸聚类是按照人脸的维度来分组的。如果一个照片有多个人物,那每个人脸均有机会被分到某个组。

FindImages 按照组(GroupId)搜索,为什么结果中有其他人脸?

FindImages 接口返回的维度是图片。因此图片内的所有人脸、标签均会返回。若想明确找到照片中所搜索的组(人物)的人脸信息,可以通过遍历结果中的 Faces 字段,并检索其中的 GroupId 和您搜索的 GroupId 一致的人脸 Object,即可了解对应人脸的位置、表情、年龄等信息。

其他问题

若在使用中有疑问,请进入 钉钉用户群 实时交流。