人脸识别开源算法库和开源数据库
目录
1. 人脸识别开源算法库
1.1 OpenCV人脸识别模块
1.2 Dlib人脸识别模块
1.3 SeetaFace6
1.4 DeepFace
1.5 InsightFace
2. 人脸识别开源数据库
2.1 CelebA
2.2 LFW
2.3 MegaFace
2.4 Glint360K
2.5 WebFace260M
人脸识别 (Face Recognition) 是一种基于人的面部特征信息进行身份识别的生物特征识别技术。近年来,随着人工智能、计算机视觉、大数据、云计算、芯片等技术的迅速发展,人脸识别技术取得了长足的进步并且在众多场景中得以成功应用 。
人脸识别的应用模式主要包括三种:
-
人脸验证 (Face Verification): 判定两张人脸图像是否属于同一个人,常用于身份认证如人证核验。
-
人脸辨识 (Face Identification): 给定一张人脸图像,判断是否在注册库中,若在则返回具体的身份信息 , 常用于静态检索或动态布控 。
-
人脸聚类 (Face Clustering): 给定一批人脸图像,将相同人的图像归类到同一个类,不同人的划分为不同的类,常见的应用有智能相册、一人一档等。
本文旨在介绍一些人脸识别开源算法库和开源数据集,并在后续博文陆续分享人脸识别开源算法库的C++和Python实现代码调用Demo,以帮助开发人员加速人脸识别技术应用。
1. 人脸识别开源算法库
1.1 OpenCV人脸识别模块
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法。
官网:https://opencv.org/
Github: https://github.com/opencv/opencv
中国镜像: https://gitcode.net/opencv/opencv
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
OpenCV 4.5.4版本开始,DNN模块集成了高性能的人脸检测算法(使用模型YuNet,由OpenCV China团队贡献)和人脸识别算法(使用模型SFace,由北京邮电大学邓伟洪教授课题组贡献)。详见 https://github.com/opencv/opencv_zoo
Face Detection with YuNet
Face Recognition with SFace
1.2 Dlib人脸识别模块
Dlib 是一个十分优秀好用的机器学习库,其源码均由 C++ 实现,并提供了 Python 接口,可广泛适用于很多场景。
官网:http://www.dlib.net/ml.html
Github: https://github.com/davisking/dlib
Dlib提供训练好的人脸检测、人脸关键点检测、人脸识别模型供开发者使用,所以Dlib很适合用于人脸识别开发。模型下载地址: http://dlib.net/files/
1.3 SeetaFace6
2016年9月和2019年8月,中科视拓分别开源了SeetaFace1.0人脸识别引擎、SeetaFace2.0商用级人脸识别算法(Github: https://github.com/seetaface)。
2020年3月31日,中科视拓宣布开放SeetaFace6人脸识别算法(Github: https://github.com/SeetaFace6Open/index)。
SeetaFace6是最新开放的正式级商业版本,突破了之前社区版和企业版错开发布的情况,此次v6版本与商用版本同步推出。
SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别模型。
为了满足不同级别的应用需求,SeetaFace6将开放三个版本模型:
模型名称 | 网络结构 | 速度(I7-6700) | 速度(RK3399) | 特征长度 |
通用人脸识别 | ResNet-50 | 57ms | 300ms | 1024 |
带口罩人脸识别 | ResNet-50 | 34ms | 150ms | 512 |
通用人脸识别(小) | Mobile FaceNet | 9ms | 70ms | 512 |
1.4 DeepFace
DeepFace 是一个轻量级的 Python 人脸识别和面部属性分析(年龄、性别、情感和种族)框架。它是一个混合人脸识别框架,包含最先进的模型:VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID、ArcFace、Dlib 和 SFace.
主要功能:人脸检测、人脸对齐特征提取、人脸验证、人脸搜索、人脸聚类、人脸属性识别、人脸跟踪、人脸表情识别、人种识别、性别识别等。
Github:https://github.com/serengil/deepface
1.5 InsightFace
InsightFace 是一个开源的 2D 和 3D 深度人脸分析工具箱,主要基于 PyTorch 和 MXNet。它可以有效实现丰富多样的人脸识别、人脸检测和人脸对齐,并对训练和部署进行了优化。
Github:https://github.com/deepinsight/insightface
2. 人脸识别开源数据库
2.1 CelebA
CelebA 是由香港中文大学开源的人脸属性数据集,广泛用于人脸相关的计算机视觉任务,可用于人脸属性标识、人脸检测以及 landmark 标记等。该数据集包含 10177 个名人身份的 202599 张人脸图片,每张图片都做了特征标记,包含人脸 bbox 标注框、5 个人脸特征点坐标以及 40 个属性标记。
后续基于 CelebA 还开源了一些相关数据集:CelebA-Dialog 、CelebAMask-HQ、CelebA-Spoof。其中 CelebA-Dialog 是一个大规模的视觉-语言人脸数据集,含有丰富的细粒度标签,并根据其语义将一个属性划分为多个等级;CelebAMask-HQ 是由从 CelebA 数据集中挑选的 3 万张高分辨率人脸图像组成,每张图像都有对应 CelebA 的人脸属性的分割掩码。CelebAMask-HQ 的 mask 大小为 512 × 512,有 19 类属性特征,包括皮肤、鼻子、眼睛、眉毛、耳朵、嘴巴、嘴唇、头发、帽子、眼镜、耳环、项链、脖子、布等面部部位和装饰配件;CelebA-Spoof 是一个人脸活体检测数据集,包含 10177 个主题的 625537 张图像,43 个丰富的人脸、光照、环境和欺骗类型属性。在 43 个丰富的属性中,40 个属性属于活体图像,包括所有面部信息,如皮肤、鼻子、眼睛、眉毛、嘴唇、头发、帽子、眼镜;3个属性属于欺骗图像,包括欺骗类型、环境和照明条件。
下载地址:https://mmlab.ie.cuhk.edu.hk/projects/CelebA.html
2.2 LFW
全名是Labeled Faces in the Wild。无约束自然场景人脸识别数据集,该数据集由13000多张全世界知名人士互联网自然场景不同朝向、表情和光照环境人脸图片组成,共有5000多人,其中有1680人有2张或2张以上人脸图片。每张人脸图片都有其唯一的姓名ID和序号加以区分。
LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片,询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。
这个数据集是人脸评估一定会用到的一个数据集,基本都是正脸。这个数据集也是最简单的,基本主流算法都能跑到99%以上,貌似有6对label错了,所以最高正确率应该是99.9%左右。这个都跑不到99%的话别的数据集表现效果会更差。一般来说这个数据集是用来做人脸识别验证的。
下载链接:http://vis-www.cs.umass.edu/lfw/
2.3 MegaFace
MegaFace 是由华盛顿大学(University of Washington)计算机科学与工程实验室于2015年针对名为 ”MegaFace Challenge” 的挑战而发布并维护的公开人脸数据集,是目前最为权威热门的评价人脸识别性能的指标之一。数据集中的人脸图像均采集自Flickr creative commons dataset,共包含690,572个身份共1,027,060张图像。这是第一个在百万规模级别的人脸识别算法测试标准。
同LFW数据集,MegaFace 数据集中的图像也产生于自然场景,具备光照、表情、姿势和遮挡等干扰因素。但与LFW不同的是,MegaFace数据集中的人物身份均为普通人而非公众人物,并在收集过程中选取了图像的分辨率,并且保证了在图片来源在世界范围内的均匀分布。另外,在评测方法上,MegaFace 着眼于在百万级别的数据库中的1:N搜索性能。因此,相比于LFW数据集,MegaFace更贴近实际应用。
MegaFace挑战将从Flickr Dataset中挑选的百万张人脸图像作为测试时的干扰项(distractors),而使用的搜索测试集(probes)来自于FaceScrub 数据集,共包含530个名人的10万张人脸图像,且性别比例大致相同(男性265人共55,472张,女性265人共52,076张),同一身份间人脸图像的差异也较大。为了保证同LFW的可比性,发布方随机选择了其中80个超过50张图像的身份,共4000张图片,作为最终的搜索测试集。
与LFW相同,MegaFace评测也允许使用数据集以外的图片对模型进行训练。但由于MegaFace的百万人脸数据库均来自于普通人,在训练过程中作弊的难度很大,因此评测结果更加可信。
下载地址:https://megaface.cs.washington.edu/dataset/download.html
2.4 Glint360K
Glint360K是格灵深瞳开源,通过清理,合并和发布的面部识别数据集,包含 36 万类别的 1800 万张图像。
下载地址:https://github.com/deepinsight/insightface/tree/master/recognition/partial_fc#glint360k
2.5 WebFace260M
WebFace260M由芯翌科技与清华大学自动化系智能视觉实验室合作推出,完全基于全球互联网公开人脸数据。它的问世,一举打破了此前人脸数据集的规模:不仅规模最大,也是首次在人脸ID数目和图片数,分别达到了400万和2.6亿的规模。
在对WebFace260M进行清洗操作后,便得到了WebFace42M。据介绍,它是目前全球规模最大、可直接用于训练的干净人脸数据集:包含200万ID、4200万图片。
该数据集及其子集只能用于学术研究。目前,它仅对学校和研究所等非营利机构开放,对公司和企业不开放。如果要下载WebFace260M,请发送电子邮件至 info@face-benchmark.org
相关文章:

人脸识别开源算法库和开源数据库
目录 1. 人脸识别开源算法库 1.1 OpenCV人脸识别模块 1.2 Dlib人脸识别模块 1.3 SeetaFace6 1.4 DeepFace 1.5 InsightFace 2. 人脸识别开源数据库 2.1 CelebA 2.2 LFW 2.3 MegaFace 2.4 Glint360K 2.5 WebFace260M 人脸识别 (Face Recognition) 是一种基于人的面部…...

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗
一、需求 Excel 中,在一列(某范围内)查找另一列特定的值,并返回同一行中另一指定列的值, 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子: 假设你有以下数据&…...

MySql-日期分组
一、分别统计各时间各类型数据条数 数据库的 request_time字段 数据类型:timestamp 默认值:CURRENT_TIMESTAMP 例子: 2024-01-26 08:25:48 原数据: 1、将数据按照日期(年月日)形式输出 按照request_…...
有哪些方法可以在运行时动态生成一个Java类?
使用 Java 反射 API🚩: Java 的反射 API 允许在运行时查询和操作类和对象。虽然反射 API 本身不直接提供生成新类的功能,但可以用于动态调用构造函数、方法和访问字段,这在某些情况下可以作为动态生成类的一部分。 字节码操作库&…...
JAVA两个线程交替打印实现
方案1 Semaphore 机制 通过信息号机制来 协调两个线程,一个线程打印后,给另一个线程释放一个信号量 Semaphore semaphorea new Semaphore(1);Semaphore semaphoreb new Semaphore(0);Thread threada new Thread(new Runnable() {Overridepublic void…...
【C语言】学习C语言
C语言简介 C语言是一门十分流行的编程语言,由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。 C语言具有高效、可移植、灵活、简单等特点,被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。 本文将带你…...

C 深入指针(2)
目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的&#…...

FileLink跨网文件交换,推动企业高效协作|半导体行业解决方案
随着信息技术的迅猛发展,全球信息产业已经迎来了前所未有的繁荣与变革。在这场科技革命中,半导体作为信息产业的基础与核心,其重要性日益凸显,半导体的应用场景和市场需求将进一步扩大。 然而,在这一繁荣的背后&#x…...
代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇
583. 两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...

ASP.NET网络在线考试系统
摘 要 随着计算机技术的发展和互联网时代的到来,人们已经进入了信息时代,也有人称为数字化时代。数在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时也希望能够得到科学的评价,…...

天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码
天锐绿盾作为一款专注于数据安全与防泄密的专业解决方案,它确实提供了针对源代码防泄密的功能,帮助企业保护其核心的知识产权。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是天锐绿盾可能采…...

Day1| Java基础 | 1 面向对象特性
Day1 | Java基础 | 1 面向对象特性 基础补充版Java中的开闭原则面向对象继承实现继承this和super关键字修饰符Object类和转型子父类初始化顺序 多态一个简单应用在构造方法中调用多态方法多态与向下转型 问题回答版面向对象面向对象的三大特性是什么?多态特性你是怎…...
Spring 事务失效的几种情况
目录 1. 事务方法不是public 2. 自调用问题 3. 异常处理不当 4. 数据源或事务管理器配置错误 5. 事务传播行为不当 6. 代理方式不正确 7. 事务同步问题 1. 事务方法不是public 在Spring中,默认情况下,只有public方法上的Transactional注解才会被代…...

【Linux 命令操作】如何在 Linux 中使用多行注释呢?
文章目录 1. 给代码进行多行注释2. 给代码取消多行注释 1. 给代码进行多行注释 🐧① 首先用 vim 打开代码,按 Esc进入命令模式(Normal mode); 🐧② 然后按住 ctrl v 进入列模式; 🐧③ 再通过按 h(左)、j(…...

【RPC】Dubbo接口测试
关于rpc,推荐看看这篇 : 既然有HTTP协议,为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架: 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…...

PVZ2 植物克僵尸【第二期】
众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…...

libcity笔记:libcity/data/batch.py
1 Batch 2 BatchPAD...

【Java EE】多线程(二)Thread 类与常用方法
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...

AGV无人叉车 | 我们为什么要投资“智慧生产”
AGV 作为一种智能工业车辆机器人,无人叉车充分融合叉车技术和AGV技术,近年来在仓储物流领域的应用逐步扩大。在传统叉车厂商、传统AGV厂商、物流集成商及仓储机器人企业等各方力量推动下,无人叉车市场在竞合中快速发展,并促使无人…...

【C++】滑动窗口:将x减到0的最小操作数
1.题目 2.算法思路 这个题目难在要转化一下才能用滑动窗口。 题意是需要在数组的前后两段区间进行解题,但同时对两段区间进行操作是比较困难的,我们可以将中间这段区间只和与nums_sum-x(数组总和-x)进行比较,这样就可…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...