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