基于python的dlib库的人脸识别实现

1、环境搭建

基于dlib库的人脸识别环境配置需求如下:

conda create -n dlibFace python=3.6.4
conda activate dlibFacepip install dlib==19.8.1
pip install opencv-python==3.4.1.15
pip install tqdm
  • 安装如下:

2、模块介绍

2.1 源代码下载

源代码点击:下载源代码

2.2 源码文件介绍

  • 下载下来的源代码模型解压后目录结构如下:

  • 具体目录结构如下:
FaceRecognition_Dlib├─collect_face_data.py #离线图像采集├─config.py            #配置文件├─face_recognition.py  #离线人脸识别├─get_128_features.py  #提取128纬特征向量├─LICENSE├─README.md├─realtime_collect_face_data.py  #实时图像采集├─realtime_face_recognition.py   #实时人脸识别├─data  #数据│  ├─faceName.txt #人脸库名│  ├─csv│  │  └─features.csv #提取的128纬人脸特征数据│  ├─faceData  采集的人脸数据│  │  ├─person_0│  │  ├─person_1│  │  └─...│  ├─faceData_points #128纬特征可视化数据│  │  ├─person_0│  │  ├─person_1│  │  └─...│  └─video #待提取的数据文件夹│      └─...└─data_dlib #Dlib库中用于人脸特征提取和关键点检测的模型文件├─dlib_face_recognition_resnet_model_v1.dat└─shape_predictor_68_face_landmarks.dat

解释如下:

  • 图像采集:
  1. collect_face_data.py:离线图像采集,即通过离线的视频即可采集人脸图像数据.
  2. realtime_collect_face_data.py:实时图像采集,通过实时的摄像头采集人脸图像数据.
  • 配置文件:config.py
  • 提取128纬特征向量:get_128_features.py :从人脸图像中提取128维特征向量,并将其保存到CSV文件中.
  • 人脸识别:
  1. face_recognition.py:离线人脸识别,即通过离线的视频即可识别人脸的功能
  2. realtime_face_recognition.py:实时人脸识别,通过实时摄像头去实现人脸识别的功能.
  • 各种数据:data
  1.  faceName.txt :人脸库名,即里面是人脸数据每一个person_n人脸数据对应的每次,例如person_0里面存放的是"杨xx"的采集到的人脸图像,则该文件的第一行是"杨xx",以此类推.
  2. csv:features.csv提取的128纬人脸特征数据后保存的csv文件.
  3. faceData:采集的人脸数据:采集到的人脸数据库,每一个唯一面部占一个文件夹,例如person_0是采集到的第一个人脸数据,person_1是采集到的第二个人脸数据,以此类推.
  4. faceData_points :对每一个采集到的人脸数据(faceData文件夹下)进行128纬特征可视化数据,文件夹与faceData一一对应,即person_0\person_1等等以此类推.
  5. video:待提取的数据文件夹
  6. data_dlib:Dlib库中用于人脸特征提取和关键点检测的模型文件,下面有两个模型:(1)dlib_face_recognition_resnet_model_v1.dat:这是一个预训练的深度学习模型,用于从人脸图像中提取128维特征向量。它基于 ResNet 架构,能够提供高度准确的人脸特征描述。(2)shape_predictor_68_face_landmarks.dat:这是一个预训练的模型,用于检测人脸上的68个关键点(landmarks)。这些关键点包括眼睛、鼻子、嘴巴等面部特征点,对于人脸对齐和特征提取非常有用。

2.3 人脸识别的主要流程概括

人脸识别的主要流程:人脸采集-->提取128纬特征向量-->人脸识别,即:

人脸采集(collect_face_data.py\realtime_collect_face_data.py)-->提取128纬特征向量(get_128_features.py)-->人脸识别(face_recognition.py\realtime_face_recognition.py)

3、人脸采集

3.1 离线人脸采集

(1) 介绍

        首先,准备一个视频,用于采集人脸面部数据,数据存放在./data/video/目录下,然后在collect_face_data.py文件下找到视频文件路径位置,把准备的视频的文件的路径替换上去,示例如下:

说明:准备的视频里面要能清晰的看到人物的脸,而且视频中只有一个人脸,视频示例如下:

(2) 人脸采集

  • 第一步:点击运行collect_face_data.py:会出现如下画面

  •  第二步:按键盘"n"键输入,创建文件夹,然后按在目标红框锁定人脸面部时,按"s"键进行保存,多保存几张,然后按"q"键结束采集,如下:

最终人像采集成功,采集到的人像保存在data/faceData/目录下,如下,因为我前面已经有三个人人像数据(即person_0\person_1\person_2),所以从第四个开始保存,即从person_3开始:

(3)标签配置

        找到./data/faceName.txt文件打开,因为person_3是第四个人像采集文件,所以在faceName.txt文件中的第四行输入对应的人物名字,因为我这个是AI生成的视频,我暂且命名为"AI仙女",所以我在第四行中手动填入"AI仙女",如下:

注意:person_x和faceName.txt文件里面的人名必须是一一对应,即例如我的person_0文件夹里面是LiuDeHua的图像,则faceName.txt的第一行就是"LiuDeHua",person_1是"BingBing",则第二行就是"BingBing",以此类推.

3.2 实时人脸采集

(1)介绍

   实时人脸采集用realtime_collect_face_data.py模块,实时人脸采集不需要事先准备视频,而是运行时打开摄像头采集摄像头前的实时人像.不过,值得注意的是,实时人像采集不需要像上述离线采集一样手动配置标签,而是运行该模块时,首先弹出框输入人物标签名字.

(2)实时人脸采集

  • 第一步:点击运行realtime_collect_face_data.py模块:弹出如下GUI界面,手动输入当前所以采集的人像对应的名字,例如"YangMouMou":

  •  第二步:点击ok后,就会打开摄像头开始采集人像:

会提示倒计时3秒,倒计时结束后开始采集当前摄像头面前的人像,采集人像的过程中自动创建文件夹自动采集人像,采集完成后会提示是否继续采集其他人像,点击yes是继续采集其他人像,点击no结束当前采集,如下图:

采集结束后在对应的文件夹下可以看到已经采集了5张图像,表示人像已经采集成功了:

打开faceName.txt文件,发现人物对应的名字已自动保存在该文件里面了,如下:

4、提取128纬特征向量

(1)介绍

    运行get_128_features.py模块提取128纬特征向量,该模块的主要功能是从人脸图像中提取128维特征向量,并将其保存到CSV文件中。它支持两种模式:导入所有特征和仅更新部分特征。提取特征的过程中,还会绘制人脸框和关键点,并保存结果图像。

(2)提取128纬特征向量

  • 第一步:点击运行该模块提取128纬特征向量,如下:

        因为./data/faceData/目录下有五个人物的图像数据集,即分别是person_0到person_4,所以要对每一个文件夹下的人像都进行提取128纬的特征向量.

  • 第二步:提取的128纬特征向量保存在./data/csv/目录下features.csv文件,如下:

  • 第三步:绘制人脸框和关键点的图像保存在./data/faceData_points/目录下,如下:

5、人脸识别

5.1 离线人脸识别

(1)介绍

        运行face_recognition.py模块进行人脸识别,是通过运行该模块去识别离线的视频或者人物的面部,视频可以进行多人识别.

(2)人脸识别

  • 第一步:同理,替换需要识别的视频或者图像文件的路径,如下:

  •  第二步:点击运行face_recognition.py模块进行人脸识别:

识别成功!!!

  •  多人识别:该模块可以同时识别多个人

5.2 实时人脸识别

(1)介绍

        运行realtime_face_recognition.py模块进行人脸识别,是通过运行该模块去实时识别人脸,即运行该模块打开当前摄像头,去实时的识别摄像头面前的人物,可以进行多人识别.

(2)实时人脸识别

  •  第一步:点击运行realtime_face_recognition.py模块进行人脸识别:

人脸识别成功,至此人脸识别任务到处完成.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu问题 -- 允许ssh使用root用户登陆

目的 新重装的系统, 普通用户可以使用ssh登陆服务器, 但是root不能使用ssh登陆 方法 vim 编辑ssh配置文件 sudo vim /etc/ssh/sshd_config找到 PermitRootLogin 这一行, 把后面值改成 yes 重启ssh sudo service sshd restart然后使用root账号登陆即可

DAY6 线程

作业1&#xff1a; 多线程实现文件拷贝&#xff0c;线程1拷贝一半&#xff0c;线程2拷贝另一半&#xff0c;主线程回收子线程资源。 代码&#xff1a; #include <myhead.h> sem_t sem1; void *copy1()//子线程1函数 拷贝前一半内容 {int fd1open("./1.txt",O…

第六十四周周报 TCN-LSTM

文章目录 week 64 TCN-LSTM摘要Abstract1. 题目2. Abstract3. 文献解读3.1 Introduction3.2 创新点 4. 网络结构4.1 数据分析4.2 混合深度学习框架的开发 5. 实验结果6.结论 week 64 TCN-LSTM 摘要 本周阅读了题为A hybrid deep learning approach to improve real-time effl…

单元测试时报错找不到@SpringBootConfiguration

找到问题出现原因&#xff1a; 错误表示 Spring Boot 在运行测试时无法找到 SpringBootConfiguration 注解。 通常&#xff0c;SpringBootTest注解用于加载 Spring Boot 应用上下文&#xff0c;但它需要找到一个带有SpringBootConfiguration&#xff08;或者Configuration&am…

【图像压缩感知】论文阅读:Content-Aware Scalable Deep Compressed Sensing

tips&#xff1a; 本文为个人阅读论文的笔记&#xff0c;仅作为学习记录所用。本文参考另一篇论文阅读笔记 Title&#xff1a; Content-Aware Scalable Deep Compressed Sensing Journal&#xff1a; TIP 2022 代码链接&#xff1a; https://github.com/Guaishou74851/CASNet…

浙大版《C语言程序设计(第4版)》题目集(一)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

谷歌AI进军教育,这将改变未来?

近日&#xff0c;谷歌&#xff08;Google&#xff09;正式发布了一款名为“Learn About”的全新人工智能工具&#xff0c;这犹如一颗耀眼的新星&#xff0c;在教育领域掀起了一阵波澜。这款产品具有诸多令人瞩目的亮点&#xff0c;为学习者带来了全新的学习体验。 个性化的学习…

Python酷库之旅-第三方库Pandas(218)

目录 一、用法精讲 1021、pandas.DatetimeIndex.inferred_freq属性 1021-1、语法 1021-2、参数 1021-3、功能 1021-4、返回值 1021-5、说明 1021-6、用法 1021-6-1、数据准备 1021-6-2、代码示例 1021-6-3、结果输出 1022、pandas.DatetimeIndex.indexer_at_time方…

MATLAB用到的矩阵基础知识(矩阵的乘和矩阵的逆)

1. 矩阵乘法 方法: 设第一个矩阵为 A A A,第二个矩阵为 B B B,则 A A A的第一行乘 B B B的第一列,先想乘再相加,作为目标矩阵的一个元素。 前提条件: 所以我们可以看到矩阵相乘的前提条件:第一个矩阵的列数等于第二个矩阵的行数。否则,我们就无法进行行和列的相乘。 最…

SpringBoot+MyBatis+MySQL的Point实现范围查找

前言 最近做了一个功能&#xff0c;需要通过用户当前位置点获取指定范围内的数据。由于后端存储用的是 MySQL&#xff0c;故选择使用 MySQL 中的 Point 实现范围查找功能。ORM 框架用的是 MyBatis&#xff0c;MyBatis 原生并不支持 Point 字段与 POJO 的映射&#xff0c;需要自…

共享门店模式:创新零售的新篇章

​在消费升级和数字化转型的双重浪潮下&#xff0c;传统零售业正面临前所未有的挑战与机遇。其中&#xff0c;共享门店模式作为一种创新的商业模式&#xff0c;正逐渐成为实体店铺应对电商冲击、提升运营效率和市场竞争力的重要途径。本文将深入解析共享门店模式的内涵、优势、…

通过JS删除当前域名中的全部COOKIE教程

有时候需要通过JS来控制一下网站的登录状态&#xff0c;就例如:网站登出功能&#xff0c;我们可以直接通过JS将所有COOKIE删除&#xff0c;COOKIE删除之后&#xff0c;网站自然也就退出了。 那么今天我就给大家分享一段JS的函数&#xff0c;通过调用这段函数就可以实现删除COO…

QT开发之版本选择

在选择Qt开发版本时&#xff0c;以下是一些建议&#xff1a; 1. **稳定性和广泛使用**&#xff1a;Qt5系列是目前使用最广泛的版本&#xff0c;其中一些长期支持&#xff08;LTS&#xff09;版本因其稳定性和长期维护而受到推荐。 2. **Qt5 LTS版本推荐**&#xff1a;以下是一…

docker desktop运行rabittmq容器,控制台无法访问

docker desktop运行rabittmq容器&#xff0c;控制台无法访问 启动过程&#xff1a;…此处缺略&#xff0c;网上一大堆 原因 原因是在Docker上运行的RabbitMQ&#xff0c;默认情况下是没有启用管理插件和管理页面的 解决办法 使用命令 docker exec -it 容器id /bin/bash 进…

C++中的栈(Stack)和堆(Heap)

在C中&#xff0c;堆&#xff08;heap&#xff09;和栈&#xff08;stack&#xff09;是两种用于存储数据的内存区域。理解它们的原理和区别&#xff0c;对于优化代码性能和确保代码的安全性至关重要。以下是对C中堆栈的详细解析&#xff0c;包括它们的分配方式、优缺点、应用场…

爬虫开发工具与环境搭建——环境配置

第二章&#xff1a;爬虫开发工具与环境搭建 第二节&#xff1a;环境配置 在进行爬虫开发之前&#xff0c;首先需要配置好开发环境。一个良好的开发环境不仅能提高开发效率&#xff0c;还能避免因环境不一致带来的问题。以下是环境配置的详细步骤&#xff0c;涵盖了Python开发…

wpf的C1FlexGrid可见表格合并计算操作

计算动态加载行后的部分字段的计算求和操作 表格上添加事件触发ItemsSourceChanged属性&#xff0c;触发事件 <c1:C1FlexGrid Name"CfgSaleOrderReviewItem" Style"{StaticResource Green}" ItemsSource"{Binding SaleOrderList,ModeTwoWay}"…

计算机图形学在游戏开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机图形学在游戏开发中的应用 计算机图形学在游戏开发中的应用 计算机图形学在游戏开发中的应用 引言 计算机图形学的基本概念…

计算机视觉和机器人技术中的下一个标记预测与视频扩散相结合

一种新方法可以训练神经网络对损坏的数据进行分类&#xff0c;同时预测下一步操作。 它可以为机器人制定灵活的计划&#xff0c;生成高质量的视频&#xff0c;并帮助人工智能代理导航数字环境。 Diffusion Forcing 方法可以对嘈杂的数据进行分类&#xff0c;并可靠地预测任务的…

大学语文教材电子版(第十一版)教学用书PDF及课件

大学语文课件&#xff1a;https://caiyun.139.com/m/i?005CiDusEVWnR 《大学语文》&#xff08;第十一版&#xff09;主编&#xff1a;徐中玉 齐森华 谭帆。 大学语文教材电子版教师用书PDF第一课《齐桓晋文之事》艺术赏析&#xff1a; 孟子四处游说&#xff0c;养成善辩的…