AdaFace

AdaFace

自适应质量边界人脸识别算法

AdaFace是一种创新的人脸识别算法,通过自适应质量边界函数调整样本重要性。该方法利用特征范数近似图像质量,有效提升了低质量人脸数据集的识别效果。在IJB-B、IJB-C、IJB-S和TinyFace等多个数据集的实验中,AdaFace的人脸识别性能优于现有最先进方法。

AdaFace人脸识别自适应边界低质量图像特征空间Github开源项目

AdaFace:用于人脸识别的自适应质量边界

AdaFace:用于人脸识别的自适应质量边界的官方GitHub仓库。 该论文(https://arxiv.org/abs/2204.00964)在CVPR 2022会议上进行了口头报告。

摘要:低质量人脸数据集的识别具有挑战性,因为面部特征被遮挡和降级。基于边界的损失函数的进展提高了嵌入空间中人脸的可区分性。此外,先前的研究探讨了自适应损失的效果,以赋予错误分类(困难)样本更多的重要性。在本工作中,我们在损失函数中引入了另一个自适应方面,即图像质量。我们认为,强调错误分类样本的策略应根据其图像质量进行调整。具体来说,容易和困难样本的相对重要性应基于样本的图像质量。我们提出了一种新的损失函数,根据样本的图像质量强调不同难度的样本。我们的方法通过用特征范数近似图像质量,以自适应边界函数的形式实现这一点。大量实验表明,我们的方法AdaFace在四个数据集(IJB-B、IJC-C、IJB-S和TinyFace)上改进了人脸识别性能,超越了现有最先进的技术(SoTA)。

@inproceedings{kim2022adaface, title={AdaFace: Quality Adaptive Margin for Face Recognition}, author={Kim, Minchul and Jain, Anil K and Liu, Xiaoming}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, year={2022} }
<img src="https://yellow-cdn.veclightyear.com/835a84d5/a185a690-c8d7-4354-a30b-1216215f52a2.png"/>

PWC PWC PWC PWC PWC

仓库更新

  • CVLFace是AdaFace的新官方仓库(支持各种架构,如ViT、SWIN-ViT、KP-RPE等)。
  • CVLFace中添加了PartialFC AdaFace实现(以及更多与人脸识别相关的功能,用于开展研究)。
  • 测试了与Pytorch Lightning 1.8的兼容性。
  • 上传了5分钟视频演示。
  • 添加了直接使用InsightFace数据集(train.rec)文件进行训练的选项,无需提取图像。

新闻

  • 您还可以查看我们的新论文KP-RPE: KeyPoint Relative Position Encoding for Face Recognition 论文 视频 代码,用于面部特征点辅助的人脸识别。简而言之:使用面部特征点进行对齐鲁棒性的人脸识别。(在TinyFace、IJB-S上达到SoTA)
  • 您还可以查看我们的新论文Cluster and Aggregate (CAFace, NeurIPS2022) 链接,用于基于视频的人脸识别。简而言之:长视频探针的人脸识别。

5分钟视频演示

IMAGE ALT TEXT

AdaFace和ArcFace在低质量图像上的演示比较

演示 该演示展示了AdaFace和ArcFace在实时视频上的比较。 为了展示模型在低质量图像上的表现,我们展示了原始模糊+模糊++设置,其中 模糊++表示heavily模糊。 带有颜色框的数字显示了实时图像与最接近匹配的图库图像之间的余弦相似度。 底部的统计数据显示了模糊++设置下真阳性匹配的累计计数。 AdaFace具有较高的真阳性率。 它还表明它不太容易出现误报(红色)错误,这在ArcFace中有时会观察到。

使用方法

import torch from head import AdaFace # 典型的512维输入 B = 5 embbedings = torch.randn((B, 512)).float() # 潜在编码 norms = torch.norm(embbedings, 2, -1, keepdim=True) normalized_embedding = embbedings / norms labels = torch.randint(70722, (B,)) # 实例化AdaFace adaface = AdaFace(embedding_size=512, classnum=70722, m=0.4, h=0.333, s=64., t_alpha=0.01,) # 计算损失 cosine_with_margin = adaface(normalized_embedding, norms, labels) loss = torch.nn.CrossEntropyLoss()(cosine_with_margin, labels)

安装

conda create --name adaface pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=10.2 -c pytorch
conda activate adaface
conda install scikit-image matplotlib pandas scikit-learn 
pip install -r requirements.txt

训练(准备数据集和训练脚本)

  • 请参阅README_TRAIN.md
  • [重要]请注意,我们的实现假设模型的输入是BGR颜色通道,如cv2包中所使用的。InsightFace模型假设RGB颜色通道,如PIL包中所使用的。因此,我们所有的评估代码都使用cv2包的BGR颜色通道。

预训练模型

请注意,我们的预训练模型以BGR颜色通道作为输入。 这与InsightFace发布的使用RGB颜色通道的模型不同。

架构数据集链接
R18CASIA-WebFace谷歌云盘
R18VGGFace2谷歌云盘
R18WebFace4M谷歌云盘
R50CASIA-WebFace谷歌云盘
R50WebFace4M谷歌云盘
R50MS1MV2谷歌云盘
R100MS1MV2谷歌云盘
R100MS1MV3谷歌云盘
R100WebFace4M谷歌云盘
R100WebFace12M谷歌云盘

推理

使用提供的样本图像的示例

AdaFace接受经过预处理的输入图像。 预处理步骤包括:

  1. 使用面部关键点对齐(使用MTCNN)
  2. 裁剪为112x112x3大小,颜色通道为BGR顺序。

我们提供了执行预处理步骤的代码。 要使用预训练的AdaFace模型进行推理,请按以下步骤操作:

  1. 下载预训练的AdaFace模型并将其放置在pretrained/目录中

  2. 要在以下3张图像上使用预训练的AdaFace,请运行

python inference.py
图像1图像2图像3
<img src="https://yellow-cdn.veclightyear.com/835a84d5/66997ed7-a2dd-4a76-b6b9-97970d60a7cb.jpeg" width="215" /><img src="https://yellow-cdn.veclightyear.com/835a84d5/f9f09db7-72fd-48c5-b422-28166f7f7ff5.jpeg" width="130" /><img src="https://yellow-cdn.veclightyear.com/835a84d5/a3e8418f-6652-46c7-a189-bb1e849e3af0.jpeg" width="191" />

相似度得分结果应为:

tensor([[ 1.0000,  0.7334, -0.0655],
        [ 0.7334,  1.0000, -0.0277],
        [-0.0655, -0.0277,  1.0000]], grad_fn=<MmBackward0>)

通用推理指南

简而言之,推理代码如下所示:

from face_alignment import align from inference import load_pretrained_model, to_input model = load_pretrained_model('ir_50') path = '图像路径' aligned_rgb_img = align.get_aligned_face(path) bgr_input = to_input(aligned_rgb_img) feature, _ = model(bgr_input)
  • 请注意,AdaFace模型是一个普通的PyTorch模型,它接受bgr_input,这是一个112x112x3大小的torch张量,具有BGR颜色通道,其值使用mean=0.5std=0.5进行归一化,如to_input()所示。
  • 当预处理步骤出现错误时,可能是因为MTCNN无法在图像中找到人脸。请参考issues/28进行讨论。

验证

高质量图像验证集(LFW、CFPFP、CPLFW、CALFW、AGEDB)

要使用预训练模型在5个高质量图像验证集上进行评估,请参考:

bash validation_hq/eval_5valsets.sh
架构数据集方法LFWCFPFPCPLFWCALFWAGEDB平均
R18CASIA-WebFaceAdaFace0.99130.92590.87000.92650.92720.9282
R18VGGFace2AdaFace0.99470.97130.91720.93900.94070.9526
R18WebFace4MAdaFace0.99530.97260.92280.95520.96470.9621
R50CASIA-WebFaceAdaFace0.99420.96410.89970.93230.94380.9468
R50MS1MV2AdaFace0.99820.97860.92830.96070.97850.9688
R50WebFace4MAdaFace0.99780.98970.94170.95980.97780.9734
R100MS1MV2AdaFace0.99820.98490.93530.96080.98050.9719
R100MS1MV3AdaFace0.99780.98910.93930.96020.98170.9736
R100WebFace4MAdaFace0.99800.99170.94630.96050.97900.9751
R100WebFace12MAdaFace0.99820.99260.94570.96120.98000.9755

与其他方法的比较

架构数据集方法LFWCFPFPCPLFWCALFWAGEDB平均
R50CASIA-WebFaceAdaFace0.99420.96410.89970.93230.94380.9468
R50CASIA-WebFace(ArcFace)0.99450.9521NANA0.9490NA
R100MS1MV2AdaFace0.99820.98490.93530.96080.98050.9719
R100MS1MV2(ArcFace)0.9982NA0.92080.9545NANA

混合质量场景(IJBB、IJBC数据集)

对于IJBB和IJBC验证,请参考:

cd validation_mixed
bash eval_ijb.sh
架构数据集方法IJBB TAR@FAR=0.01%IJBC TAR@FAR=0.01%
R18VGG2AdaFace90.6792.95
R18WebFace4MAdaFace93.0394.99
R50WebFace4MAdaFace95.4496.98
R50MS1MV2AdaFace94.8296.27
R100MS1MV2AdaFace95.6796.89
R100MS1MV3AdaFace95.8497.09
R100WebFace4MAdaFace96.0397.39
R100WebFace12MAdaFace96.4197.66

与其他方法的比较

  • 其他方法的数据来自各自的论文。
架构数据集方法会议IJBB TAR@FAR=0.01%IJBC TAR@FAR=0.01%
R100MS1MV2AdaFaceCVPR2295.6796.89
R100MS1MV2(MagFace)CVPR2194.5195.97
R100MS1MV2(SCF-ArcFace)CVPR2194.7496.09
R100MS1MV2(BroadFace)ECCV2094.9796.38
R100MS1MV2(CurricularFace)CVPR2094.8096.10
R100MS1MV2(MV-Softmax)AAAI2093.6095.20
R100MS1MV2(AFRN)ICCV1988.5093.00
R100MS1MV2(ArcFace)CVPR1994.2596.03
R100MS1MV2(CosFace)CVPR1894.8096.37
架构数据集方法IJBC TAR@FAR=0.01%
R100WebFace4MAdaFace97.39
R100WebFace4M(CosFace)96.86
R100WebFace4M(ArcFace)96.77
R100WebFace4M(CurricularFace)97.02
架构数据集方法IJBC TAR@FAR=0.01%
R100WebFace12MAdaFace97.66
R100WebFace12M(CosFace)97.41
R100WebFace12M(ArcFace)97.47
R100WebFace12M(CurricularFace)97.51

低质量场景 (IJBS)

对于IJBB、IJBC验证,请参考

cd validation_lq
python validate_IJB_S.py

与其他方法的比较

监控到单张监控到簿册监控到监控小脸
架构方法数据集排名1排名51%排名1排名51%排名1排名51%排名1排名5
R100AdaFaceWebFace12M71.3576.2459.3971.9376.5659.3736.7150.034.6272.2974.97
R100AdaFaceWebFace4M70.4275.2958.2770.9376.1158.0235.0548.224.9672.0274.52
R100AdaFaceMS1MV265.2670.5351.6666.2771.6150.8723.7437.472.5068.2171.54
R100(CurricularFace)MS1MV262.4368.6847.6863.8169.7447.5719.5432.802.5363.6867.65
R100(URL)MS1MV258.9465.4837.5761.9867.1242.73NANANA63.8968.67
R100(ArcFace)MS1MV257.3564.4241.8557.3664.9541.23NANANANANA
R100(PFE)MS1MV250.1658.3331.8853.6061.7535.999.2020.820.84NANA
  • 监控到单张:比较监控视频(探针)与单张注册图像(画廊)的协议
  • 监控到簿册:比较监控视频(探针)与所有注册图像(画廊)的协议
  • 监控到监控:比较监控视频(探针)与监控视频(画廊)的协议

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多