本文介绍了在使用人脸聚类过程中可能遇到的问题。
为什么无法生成人脸分组?
为了确保人脸分组的准确性,生成分组需要满足如下条件:
使用IndexImage将图片添加到媒体集。
同一个人物在媒体集中的图片必须大于或等于3张,并且至少有3张符合如下高清人脸标准:
人脸尺寸大于50×50像素。
人脸的偏转角HeadPose的三个子项的绝对值均小于30°。
人脸的质量FaceQuality大于0.8。
分组生成后,媒体集中不满足上述高清人脸标准的图片,也有可能被划分为同一组人脸。
为什么生成的人脸分组无法搜索到?
由于产品的索引机制为异步处理,从图片索引、人脸分组、人脸分组能被搜索到均需要一定的时间,所以在设计业务逻辑时,请考虑延迟带来的数据一致性问题。
图片索引:通常IndexImage对图片的索引需要10秒 。
人脸分组:CreateGroupFacesJob人脸聚类分组操作需要最多180秒。时间和单次索引的图片数量有关,一般数秒完成。
重要CreateGroupFacesJob依赖IndexImage完成图片中人脸的检测。如果您使用MNS消息订阅了IndexImage结果,则应当在IndexImage完成后,等待3秒再调用CreateGroupFacesJob,以便CreateGroupFacesJob接口能够获得最新的图片中人脸信息。
IndexImage、CreateGroupFacesJob等异步接口完成后,您可以通过FindImages搜索到最新结果的时间为3秒。
应该每次索引图片后调用一次CreateGroupFacesJob吗?
不建议如此操作。CreateGroupFacesJob接口为增量分组接口,通常您可以在一批图片完成索引后,一次性调用CreateGroupFacesJob来进行批量聚类。
推荐如下两个方案:
简单方法,即对每一个媒体集,每隔固定间隔(例如5分钟)调用一次CreateGroupFacesJob接口进行聚类。
更佳方案,每次IndexImage时,将对应的媒体集推入一个延迟队列。定时从该队列中获取SetId,即可得到有新图片的媒体集。在最后一次IndexImage的(10+3)秒后运行CreateGroupFacesJob。
图片或者人脸数量是否有限制?
媒体集数量无限制。其他限制请参见用户限额(Quota)。
媒体集的粒度如何设计?
媒体集是媒体搜索和人脸聚类的范围,不允许跨媒体集进行搜索和聚类。建议以此为依据进行划分。例如云相册场景,建议每个终端用户一个媒体集。
一张图片会被分到几个组?一个图片中有很多人会怎么样?
人脸聚类是按照人脸的维度来分组的。如果一个图片有多个人物,每个人脸均有机会被分到某个组。
FindImages按照组(GroupId)搜索,为什么结果中有其他人脸?
FindImages接口返回的维度是图片。因此图片内的所有人脸、标签均会返回。如果需要找到图片中所搜索的组(人物)的人脸信息,请通过遍历结果中的Faces字段,并检索其中的GroupId和您搜索的GroupId一致的人脸Object,即可了解对应人脸的位置、表情、年龄等信息。
其他问题
如果在使用中有疑问,请使用钉钉搜索钉钉群号31690030817加入钉钉群进行反馈。