人脸识别场景下Faiss大规模向量检测性能测试评估分析

这篇具有很好参考价值的文章主要介绍了人脸识别场景下Faiss大规模向量检测性能测试评估分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前面的两篇博文中,主要是考虑基于之前以往的人脸识别项目经历结合最近使用到的faiss来构建更加高效的检索系统,感兴趣的话可以自行移步阅读即可:

《基于facenet+faiss开发构建人脸识别系统》

Facenet算法的优点:

高准确率:Facenet模型在人脸识别和人脸验证任务上取得了非常出色的准确率,甚至在大规模人脸识别数据集上也表现优异。

基于嵌入向量的表示:Facenet将人脸图像转换为紧凑的嵌入向量,使得不同人的人脸之间能够得到有效的分离,并且嵌入向量具有良好的可比性。

大规模训练:Facenet模型可以通过使用大规模的人脸图像数据集进行训练,从而获得更好的泛化能力。

Facenet算法的缺点:

高计算资源需求:由于Facenet模型的深度和复杂性,需要大量的计算资源来进行训练和推理。这使得在某些设备或场景下应用Facenet模型变得困难。

影响因素敏感:Facenet模型对输入图像的光照、角度和尺度等因素敏感。在实际应用中,需要考虑这些因素对人脸识别或验证的影响。

《基于arcFace+faiss开发构建人脸识别系统》

ArcFace模型优点:

准确性高:ArcFace在常见的人脸识别任务中取得了非常好的性能,能够实现高准确性的人脸匹配和识别。

抗干扰能力强:ArcFace模型在面对光照变化、表情变化、遮挡等干扰因素时,仍能保持较高的稳定性和可靠性,对人脸图像的变化有较好的适应性。

特征嵌入明显:ArcFace模型通过学习得到的人脸特征向量在高维空间中有较明显的嵌入效果,同一个人的人脸特征向量距离较近,不同人的特征向量距离较远,增加了模型的判别力。

ArcFace模型缺点:

复杂性高:ArcFace模型相比其他简单的人脸识别模型,比如FaceNet,模型结构更加复杂,需要更大的计算资源和更长的训练时间。

数据依赖性强:ArcFace模型的性能与训练数据的质量和数量密切相关,需要大规模的人脸数据集进行训练,从而使模型具有更好的泛化能力。

隐私问题:由于ArcFace模型具有较强的人脸识别能力,潜在的隐私问题也随之出现。在应用和部署过程中,需要遵循隐私保护的原则和规定。

在前面两篇博文中整体的计算流程是一致的,只不过是模型使用有不同区分而已,在后端向量检索的时候都用到的faiss这个框架,没有很直观地对其性能进行测试评估,本文的主要目的就是考虑基于已有的数据来完成对faiss的评估计算。

我将前文中faiss检索部分的实现封装为experiment方法,之后编写训练测试,对结果进行可视化评估,如下所示:

def show():
    """
    实验评估可视化
    """
    C,A=[],[]
    for one in [1,10,100,1000,10000,100000,100000]:
        count,avg=experiment(nums=one)
        C.append(count)
        A.append(avg)
    print("C: ", C)
    print("A: ", A)
    plt.clf()
    plt.figure(figsize=(20,8))
    x_list=list(range(len(C)))
    plt.subplot(121)
    plt.xticks(x_list,['1','10','100','1000','10000','100000','100000'])
    plt.plot(x_list,C,c='b')
    plt.title("Total Time Trend Cruve")
    plt.subplot(122)
    plt.xticks(x_list,['1','10','100','1000','10000','100000','100000'])
    plt.plot(x_list,A,c='g')
    plt.title("Average Time Trend Cruve")
    plt.savefig("time.png")

结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 可视化对比结果如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 左边蓝色曲线表示的是单次实验总的查询时耗,右边绿色曲线表示的是单次实验单次查询的平均时耗,从图像呈现出来的走势来看,单次平均时耗随着查询次数的增加保持着相对的稳定。我这里使用的是lfw数据集构建的向量数据库,样本量为13233,并不大,资源消耗占用如下:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 接下来我换用另一个大的数据集来构建向量数据集,进而评估测试在大数据量情况下faiss的性能。这个大数据集共有45w+的样本数据量,整体计算日志输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 总样本数据量为:452960

完整输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 可以看到:随着数据量的增大单次查询时耗也是增加不少的。

在第一组实验中lfw数据集上1w+的样本数据量,单次查询时耗如下:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 基本维持在0.0002s的水平。

在大数据集45w+的向量检索条件下,实验结果单次查询时耗如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 基本维持在0.0322s的水平。

这两组实验整体对比来看,数据量增大了45倍左右,单次查询时耗增大了161倍。

当然了,这只是粗浅直观地对比分析,只是简单直接地通过实际实验数据来探索分析数据量-时耗的关系,我的实验条件是cpu环境,并没有用faiss-gpu的版本,如果是使用gpu的话应该会更快一下。

另外这里的index使用的是精准的查询也就是暴力搜索IndexFlatL2,这种方法本身在数据量很大的情况下就会是很慢的。

接下来我们来尝试使用其他类型的index方法——PQx :乘积量化来通过实验分析对应的性能。这里依旧是使用lfw数据集。计算结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 在大数据量条件下测试结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 粗略来看,大数据集上面的性能至少比暴力搜索快了一个数量级。

接下来我们基于IVFxPQy 倒排乘积量化来对faiss进行测试评估分析,以lfw数据集为例,看下结果输出:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 在大数据量条件下测试结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

  结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 接下来我们使用LSH 局部敏感哈希来对faiss进行测试评估分析,以lfw数据集为例,看下结果输出:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 在大数据量条件下测试结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 最后我们基于HNSWx图检测来对faiss进行测试评估分析,以lfw数据集为例,看下结果输出:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

资源消耗如下:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 在大数据量条件下测试结果输出如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 结果对比可视化如下所示:

人脸识别场景下Faiss大规模向量检测性能测试评估分析,faiss

 检索速度相较于暴力搜索方法来说至少提高了两个数据级,通过本文系列的实验对比测试评估不难发现,数据量、index方法对于检索性能的影响是非常大的。

我这里45w+的样本量其实并不算大的,我这里只是为了做实验,上亿级别的数据可能才算得上是大数据量,那样级别的数据一方面构建难度是很大的,另一方面实验成本是比较高的,感兴趣的话可以尝试下更大的数据量下的性能,欢迎交流!文章来源地址https://www.toymoban.com/news/detail-637058.html

到了这里,关于人脸识别场景下Faiss大规模向量检测性能测试评估分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机视觉 | 目标检测】Objects365 :最新大规模高质量目标检测数据集

    2019 年 4 月,在北京举行的智源学者计划启动暨联合实验室发布会上,北京旷视科技有限公司与北京智源人工智能研究院共同发布了全球最大的目标检测数据集 : Objects365。 该数据集总共包含63万张图像,覆盖365个类别,高达1000万框数,具有规模大、质量高、泛化能力强的特

    2024年02月05日
    浏览(50)
  • 迈向通用异常检测和理解:大规模视觉语言模型(GPT-4V)率先推出

    PAPER CODE https://arxiv.org/pdf/2311.02782.pdf https://github.com/caoyunkang/GPT4V-for-Generic-Anomaly-Detection         图1 GPT-4V在多模态多任务异常检测中的综合评估 在这项研究中,我们在多模态异常检测的背景下对GPT-4V进行了全面评估。我们考虑了四种模式:图像、视频、点云和时间序列,并

    2024年02月03日
    浏览(46)
  • 【音频分类与检测】PANNs:用于音频模式识别的大规模预训练音频神经网络

    音频模式识别是机器学习领域的一个重要研究课题,它包括 音频标注、声音场景分类、音乐分类、语音情感分类和声音事件检测 等任务。近年来,神经网络已被应用于解决音频模式识别问题。然而,以前的系统是建立在特定数据集上的,数据集时长有限。 最近,在计算机视

    2024年02月02日
    浏览(41)
  • 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

    在无人机(UAV)支持的空中蜂窝自由大规模多输入多输出(mMIMO)系统中,上行链路分布式检测涉及以下几个关键概念和步骤: “无蜂窝”意味着系统不是围绕传统的蜂窝结构组织的,而是通过分散的多个基站协作提供覆盖和容量,而不是单个固定的基站。 “上行链路”(

    2024年02月22日
    浏览(45)
  • 基于大规模测量和多任务深度学习的电子鼻系统目标识别、浓度预测和状态判断

    为了实现响应特征的自动提取,简化模型的训练和应用过程,设计了一种双块知识共享结构的多任务卷积神经网络(MTL-CNN)来训练E-nose系统的模型。该模型可以同时执行三种不同的分类任务,用于目标识别、浓度预测和状态判断。 使用值为RA/RG (RA在空气中的电阻值,RG为在目

    2024年02月09日
    浏览(36)
  • 华为云云耀云服务器L实例评测|基于华为云云耀云服务器L实例搭建EMQX大规模分布式 MQTT 消息服务器场景体验

    EMQX 是一款国内开发的大规模分布式MQTT消息服务器,它旨在为物联网应用提供高效可靠的连接,实时处理和分发消息以及事件流数据。作为一个关键的物联网基础设施组件,EMQX为企业和开发者提供了一个强大的工具,用于构建各种规模和复杂度的物联网与云应用。 EMQX的主要

    2024年02月08日
    浏览(53)
  • 大规模语言模型--LLaMA 家族

    LLaMA 模型集合由 Meta AI 于 2023 年 2 月推出, 包括四种尺寸(7B 、13B 、30B 和 65B)。由于 LLaMA 的 开放性和有效性, 自从 LLaMA 一经发布, 就受到了研究界和工业界的广泛关注。LLaMA 模型在开放基准的各 种方面都取得了非常出色的表现, 已成为迄今为止最流行的开放语言模型。大

    2024年04月25日
    浏览(35)
  • LLaMA(大规模机器学习和分析)

    LLaMA(大规模机器学习和分析)是一个先进的软件平台,是Meta 推出 AI 语言模型 LLaMA,一个有着 上百亿数量级参数的大语言模型用于大规模部署和管理机器学习模型。借助LLaMA,组织可以高效地在大型数据集上训练和部署模型,缩短投放市场的时间,并提高预测模型的准确性。

    2024年02月11日
    浏览(52)
  • 基于Spark的大规模日志分析

    摘要: 本篇文章将从一个实际项目出发,分享如何使用 Spark 进行大规模日志分析,并通过代码演示加深读者的理解。 本文分享自华为云社区《【实战经验分享】基于Spark的大规模日志分析【上进小菜猪大数据系列】》,作者:上进小菜猪。 随着互联网的普及和应用范围的扩

    2024年02月09日
    浏览(48)
  • etcd实现大规模服务治理应用实战

         导读 :服务治理目前越来越被企业建设所重视,特别现在云原生,微服务等各种技术被更多的企业所应用,本文内容是百度小程序团队基于大模型服务治理实战经验的一些总结,同时结合当前较火的分布式开源kv产品etcd,不仅会深入剖析ectd两大核心技术Raft与boltdb的实

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包