我有一个面部数据集,我正在该数据集上使用Azure面部服务进行人员识别。第一步是使用面部检测面部。在数据中进行检测,然后使用面部列表注册是否存在面部。第二步是训练已注册的集合。第三步是通过使用面部检测同一数据集上的面部来获得推断。检测然后使用查找相似方法找出在数据库中与它匹配的面部。(例如:图像1、2、3入组; 1、2为匹配; 1、3是匹配的; 2,1是匹配的; 3,1是匹配的,依此类推......)。
现在,问题是对于大量的图像,API调用将变得更加昂贵,我们可以看到,第一步和第三步都使用人脸检测API调用,并返回一个人脸ID及其其他属性,在24小时内到期。有什么方法可以最大限度地减少此场景中的API调用(注册整个数据集,然后从注册的数据集本身进行验证)。
1条答案
按热度按时间wlp8pajw1#
有几种方法可以优化您的场景中Azure Face API调用的数量:
批量请求:您可以使用批处理API在单个请求中发送多个图像,而不是单独为每个图像调用face.detect和face.findSimilar API,这可以显著减少API调用次数,提高应用的整体性能。
缓存面ID:由于face.detect API返回的人脸ID在24小时内有效,因此您可以缓存它们并在后续API调用中重用它们,以避免进行额外的face.detect调用。
使用永久面孔列表:您可以创建可用于多个注册和培训会话的永久面孔列表,而不是为每个注册和培训步骤创建新面孔列表。这将使您避免创建和删除面孔列表,这还可以减少API调用的次数。
报名与培训并行:如果数据集很大,则可以并行登记和训练数据以加快处理速度。这可以通过将数据集划分为较小的批并并发处理来实现。
使用较低的置信度阈值:face.findSimilar API返回相似人脸列表及其置信度分数。通过设置较低的置信度阈值,可以允许API返回更多相似人脸,从而减少查找匹配所需的API调用次数。但是,这也可能导致更多误报,因此应仔细考虑准确性和性能之间的权衡。