基于Python的人脸识别系统设计与实现(论文+源码)_kaic

2024-05-02 14:04

本文主要是介绍基于Python的人脸识别系统设计与实现(论文+源码)_kaic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于Python的人脸识别系统设计与实现
摘 要

随着人工智能的发展,人脸识别系统在我们的生活中越来越被广泛应用。人脸识别系统是指能够从数字图像或视频源中识别人的技术。人脸识别系统可以通过多种方法工作,但是,它们通常是通过将给定图像中的面部特征与数据库中的人脸进行比较来工作的。人脸识别技术以前是作为一种计算机应用程序而发展起来的,但现在它在不同的移动平台上得到了广泛的应用,如人脸识别系统是一种比较常用的安全机制,可以与指纹和眼睛识别技术等生物识别系统进行比较。通过这项技术,用户可以轻松地解锁他们的移动电话,而不必输入他们的密码。同时它也被广泛应用于各种技术,如机器人开发等等..  鉴于人工智能的主流发展,本设计主要对人脸识别系统进行开发和拓展。
本设计应用python语言编写程序, 主要用到开源的dlib图像处理库。读取图片/视频或打开摄像头后,首先调用正脸检测器检测出人脸, 再用已经训练好的人脸关键点检测器定位人脸特征点,接着用ResNet人脸识别模型获得人脸的128个向量特征,再与数据库文件下所有jpg图片比较人脸的特征向量值并打印出来结果,结果小于阈值则时,判定为同一个人并弹出提示框显示识别结果,否则显示无识别结果。
除了基本的人脸识别功能,本设计还拓展了三个功能:美颜功能,瘦脸功能和人脸计数。界面上设置三个复选框,选定后读取图片或打开摄像头,可实现各个功能。
美颜功能主要是对人脸进行磨皮去痘,实际上是进行模糊处理。瘦脸功能则改变人的脸型,主要对相应特征点进行分割和压缩。而人脸计数返回图像中的人数。相关的算法会在下文中详细研究。


关键词:人工智能,Python,人脸识别,人脸美化   
ABSTRACT
With the development of artificial intelligence, face recognition system is widely used in our life. Face recognition system refers to the technology that can recognize people from digital images or video sources. Face recognition systems can work in a variety of ways, but they usually work by comparing facial features in a given image to faces in a database. Face recognition technology used to be developed as a computer application, but now it has been widely used in different mobile platforms. For example, Facial recognition system is more commonly employed as a security mechanism and can be compared to biometric systems such as fingerprint and eye recognition technology. A more recent use of this technology is in the mobile world, where latest mobile phone models have a built-in face recognition application. Through this technology, users can easily unlock their mobile phones without having to enter their password. It is also widely used in various technologies, such as robot development, etc.. In view of the mainstream development of artificial intelligence, this design mainly develops the face recognition system and expands its functions.
This design uses the python language to write programs and mainly using the open source image processing library : dlib. After reading the picture/video or opening the camera, first call the face detector to detect the face, then use the trained face key point detector to locate the face feature points, and then use the ResNet face recognition model to obtain the 128 vector features of the face, after that, compare the feature vector values of the face with all the jpg images in the database file and print the results. If the result is less than the threshold, it is determined to be the same person . meanwhile a prompt box will be shown to display the recognition result.
In addition to the basic face recognition function, the design also expands three functions: face beautification, face-lifting function and face counting. Set three check boxes on the interface. After selecting the image or opening the camera, it can implement corresponding functions.
The beauty function is mainly to skin the face to remove acne, in fact, it is blurred. The face-lifting function is to change the face shape, mainly to segment and compress the corresponding feature points and the face count returns the number of people in the image. The relevant algorithms will be studied in detail below.

Keywords:  Artificial Intelligence, Python, Face recognition, Face beautification
目录
1  绪论
1.1本设计的目的和意义
1.2系统开发背景
1.3存在的问题
1.4.需达到的技术要求
1.5指导思想
2  软件及关键技术简介
2.1 Python
2.2 Anaconda
2.3 conda
2.4 dlib库
2.5 OpenCV-Python
3  基本概念和理论基础
3.1 HOG(HISTOGRAM OF ORIENTED GRADIENT)特征描述子
3.2 深度残差网络(ResNet)
3.3 双线性插值法
3.4 双边滤波
3.4.1 概述
3.4.2 实现方法
3.5 高斯滤波
3.5.1 概述
3.5.2 高斯分布
3.5.3 高斯核
3.5.4 高斯滤波步骤
3.6 图片线性混合
4  软件功能设计
4.1 人脸识别模块
4.1.1功能概述
4.1.2 人脸检测和特征点检测阶段
4.1.3 识别阶段
4.1.4具体实现方法
4.1.5 具体实现代码
4.2 人脸美颜模块
4.2.1 功能概述
4.2.2 具体实现方法
4.2.3 具体实现代码
4.3 人脸计数模块
4.3.1 概述和实现方法
4.3.2 具体实现代码
4.4 瘦脸功能模块
4.4.1功能概述
4.4.2 具体实现方法
4.4.3 具体实现代码
4.5 UI界面设计模块
4.5.1 界面概述
4.5.2 具体实现代码
5  软件测试
5.1 测试环境
5.2 人脸识别功能模块测试
5.2.1 单人识别
5.2.2 多人识别
5.2.3 前置摄像头识别
5.3 美颜功能模块测试
5.3.1 图像人脸美颜测试
5.3.2 前置摄像头美颜测试
5.4 人脸计数功能模块测试
5.4.1图片人脸计数
5.4.2 前置摄像头人脸计数
5.5 瘦脸功能模块测试
5.5.1 图片瘦脸功能
5.5.2 前置摄像头瘦脸功能模块测试
6  总结与展望
6.1 总结
6.2 展望
参考文献
致谢
附录

1 绪论
1.1本设计的目的和意义

面孔是我们在社会生活中首要关注的焦点,在传递身份和情感方面起着重要的作用。在我们的一生中,我们可以识别出许多面孔,并且即使在多年的分离之后,我们也能一眼识别出面孔。即使由于不断变化的条件,包括年龄和外界干扰干扰,如胡须,眼镜或发型使视觉刺激存在较大差异,这项功能仍然是十分强大的。
随着科技的发展,人类社会对人工智能的渴望程度越来越大。人工智能的发展可以提供我们极大的便利。特别是可检测和识别人脸的计算机可以应用于各种任务,包括刑事识别、安全系统、图像和胶片处理、身份核实和人机交互。不幸的是,建立人脸检测和识别的计算模型相当困难,因为人脸是复杂的、多维的和有意义的视觉刺激。现在很多地方都在使用人脸检测,特别是像 picassa、photobucket 和 facebook 这样的图片网站。自动标记功能为图片共享创造了一个新的维度,让其他人了解到在图片中的人是谁。作为图像分析和理解最成功的应用之一,人脸识别受到了人们的重视,尤其是在过去的几年里。造成这一趋势的原因至少有两个:第一是商业和执法应用范围广泛,第二是经过 30 年的研究后可行技术的可获得性。此外,人脸的机器识别问题继续吸引图像处理、模式识别、神经网络、计算机视觉、计算机图形学和心理学等学科的研究人员。对于用户友好型系统的强烈需求是显而易见的,这种系统能够保护我们的资产,保护我们的隐私,而不会因为一个数字失去我们的身份。比如,一个人需要一个 PIN 从 ATM 机获取现金,一个计算机的密码来访问互联网,等等。而且对于那些视网膜、虹膜扫描或者指纹识别,它强烈需要识别人的配合,比如睁开双眼进行扫描、录入指纹等等,即使这些特征十分适合于识别人类这种生物。相比而言,人脸识别系统通常能在识别人不知情的情况下进行,那么就不需要进行强迫也能实现识别功能,因此可更广泛的应用于各个领域。如:
1.法律监督和执法:带有人脸识别功能的监控,预防盗窃和非法行为的发生、发生盗窃事件或其他非法行为后进行分析推理、识别到犯法人后在各个路口和海关进行人脸捕获,以此抓捕到犯罪嫌疑人。
2.信息安全:智能手机解锁屏幕、手机支付(包括Apple pay、支付宝、微信支付等)、各种社交软件的注册和登录、数据库登录、互联网登录、医疗和交易记录等等。
3.智能卡:代替国家身份证、护照、社保卡、手机卡、银行卡、驾驶证等等。 
4.娱乐:视频游戏、虚拟现实、VR真人游戏、室内人工智能。
于此同时,随着人脸识别技术慢慢成熟和数字图像处理技术不断的发展,人脸自动美化技术也逐渐受到人们的青睐。

1.2系统开发背景
在这个世纪的大部分时间,甚至上个世纪的部分时间(达尔文,1872年),对人脸识别的兴趣在各个科学学科中都发挥着重要的作用,认知心理学家对人脸识别这一现象很感兴趣,因为有证据表明,人们对人脸的感知与其他有图案的物体不同,因此,人脸可能代表了一类“特殊”的刺激。神经科学家对此也特别感兴趣,因为有证据表明,这种能力是由离散的神经回路辅助的,因此,它代表了一种特殊的大脑功能。人类成长心理学家也认为人脸识别这一能力十分重要,因为人脸在婴儿和看护者之间提供了一个早期的沟通渠道(在语言出现之前)。此外,进化心理学家和动物行为学家对人脸识别也抱有十分大的期待,因为它似乎是一种“特殊”的能力,是通过进化压力来选择的,并在物种间保持不变。
人脸识别作为图像分析与理解中最成功的应用之一,近年来受到了广泛的关注。至少有两个原因可以解释这一趋势:第一个是广泛的商业和执法应用,第二个是经过30年的研究,可行技术的可用性。根据早期科学家对人脸识别的研究,人脸识别其实就是检测和提取人脸特征点,根据特征点进行识别。人脸识别技术在我国也被广泛的应用。人脸识别不仅在互联网、交通、安全等领域占据发展主流,同时还在建筑设计、金融、医疗保险、海外旅游移民等方面也得到广泛的应用和认可。
虽然目前的机器识别系统已经达到了一定的成熟程度,但是它们的成功受到许多实际应用所施加的条件的限制。例如,在光照和/或姿态发生变化的户外环境中获得的人脸图像的识别在很大程度上仍然是一个未解决的问题。换句话说,目前的系统距离人类感知系统的能力还很远。
因为国家的昌盛,我们的生活水平在不断的提高,我们不再满足于物资生活,精神需求也越来越广泛,比如我们更追求外表的美观。以至于现在市面上出现各种类型的PS软件。人们可以借助此类软件来处理自己的皮肤,或者身材,实际上就是使用了相应的图像处理技术来美化人脸或者身材,能展现更美丽的自己,这受众多女性朋友的青睐。于此同时,随着数码相机的发展,用相机拍下的照片的像素,或者说分辨率也越来越高,以至于能够清晰的展示出人脸的各个细节,当然包括了痘痘、雀斑、皱纹等等,这就暴露了一些人们不想暴露的点。因为爱美是人的本性,所以在得到这些照片后,大部分女性朋友都会在PS软件上重新进行美化处理,但是PS过程是相当繁琐和枯燥的,如果需要PS多张人脸,则需要重复一样的步骤,这真的十分浪费时间。事实上为了迎合大众的需求,一部分数码相机,比如柯达相机中,就将这两个步骤结合在一起了。也就是在数码相机上加入自动人脸美化或者瘦脸的功能,人们只要拍照,拍摄完后相机会自动的处理图片中的人脸。怎么处理呢?其实就是利用数字图像处理的一些算法,去除人脸上的痘痘、雀斑、皱纹等等,达到磨皮的作用,同时又不会去除掉人脸的特征。除此之外还能够实现自动瘦脸等等功能。

1.3存在的问题
虽然目前的机器识别系统已经达到了一定的成熟程度,但是它们的成功受到许多实际应用所施加的条件的限制。在变化的户外环境中获得的人脸图像的识别在很大程度上仍然是一个未解决的问题。换句话说,目前的系统距离人类感知系统的能力还很远。
例如影响人脸识别的诸多因素:
(1)复杂场景
 
图1.1复杂场景下的人脸识别
(2)表情变化
 
图1.2 表情变化下人脸发生变化
(3)光照变化:
 
图1.3 光照方向不同时人脸产生的不同视觉效果

(4)年龄变化:
 
图1.4 随着年龄变化人脸的改变

(5)姿态变化:
 
图1.5 各种姿态变化

变化是绝对的,不变是相对的。模式识别(图像识别)的基本任务就是从变化中寻找不变的本质。图像处理不是科学,是门艺术。同时,虽然美化瘦脸功能的技术已有产品上市,但是美化的同时会使图像有事产生过度模糊、或者人脸变形的现象,因此总的来说这类技术还是不够成熟,需要我们更深入的研究。
1.4.需达到的技术要求
本设计主要要求使用python语言实现人脸识别功能,因为本设计的研究方向不是人脸识别的底层算法,所以使用已经训练好的模型进行人脸识别。其中使用了dlib库中的人脸检测方法,它的算法可以是HOG(HISTOGRAM OF ORIENTED GRADIENT)特征算法或者卷积神经网方法、于此同时利用近期设计的深度残差网络(ResNet)人脸识别方法。它的识别速度不仅快,可以达到10帧每秒,而且识别精度也相对较高,因此在开发中此方法深受人工智能爱好者的青睐[2]。
除此了基础的人脸识别功能,本设计还要实现的功能有:人脸美化、人脸计数及瘦脸功能。详细的算法和实现会在下文中提到。
1.5指导思想
人脸识别的商业和执法应用范围从静态、控制格式的照片到不受控的视频图像,构成了广泛的技术挑战,需要同样广泛的技术,从图像处理、分析、理解和模式识别。人脸识别问题的一般表述为:使用现有的、存储人脸的数据库,对给定的图像或者视频中的人脸进行检测,识别场景中的一个或多个人并返回结果,做出响应。可用诸如人种、年龄、性别、面部表情或语言等附带信息可用于缩小搜索范围(增强识别)。该问题的解决方案涉及从杂乱场景中分割人脸(人脸检测)、从人脸区域中提取特征、识别或验证(图 1)。在识别问题中,系统的输入是一个未知的面孔,系统从已知个体的数据库中验证和确定的身份。
 
图1.6 人脸识别的框架
 
图1.7人脸识别的框架

此外,图像处理不是科学,是门艺术。我们需要深刻领悟图像对象的特点,根据对象的本质特征选用针对性的图像处理方案。

2 软件及关键技术简介
2.1 Python
Python是一种高级编程语言,同时它与java、C++语言一样也是面向对象的,但与另外的面向对象的编程语言区别却很大,使用过这几种语言的程序员都不得不赞赏python语言的精简和方便[10]。不仅如此,python可以同时在各个不同的操作系统中搭建环境和使用,而且用python语言编写的代码不需要做改变,所以它给程序员提供的功能是毫无质疑的。此外,Python另外的强大之处在于,它的应用领域范围十分广,遍及人工智能、科学计算、Web开发、系统运维、大数据及云计算、金融、游戏开发等。为什么python能实现这么强大的功能呢?主要是因为它具有庞大的库(包括标准库和第三方库),并且它大部分的库都是开源的,开源的库经过不断的使用和完善是使python持续发展的主要原因。通过引用库来实现不同领域的各种功能。然而,于此同时,正是由于库的数量庞大,对于管理这些库以及对库作及时的维护成为既重要但复杂度又高的事情。

2.2 Anaconda
Anaconda中文是森蚺,一种非常肥大的蟒蛇。简单来说你可以把Anaconda当作是Python的懒人包,支持Linux,Mac,Windows系统,包含了Python常用的资料分析、机器学习、视觉化的套件。并且自带了专门用来解决软件环境依赖问题的 conda 包管理系统。 可以在Anaconda下随意切换python的版本,并且可以在Anaconda prompt下方便的安装第三方包,其实在下载时就已经自动为我们装上除了标准库外其他常用的库了。比较特别一点的是,Anaconda是利用conda命令来管理包和环境,使用起来十分方便[6]。

2.3 conda 
conda是用来管理包和环境的管理工具。它适用的语言有:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。conda为Python项目而创造,但可适用于上述的多种语言。适用平台:Windows, macOS, Linux。它的作用有:①快速安装、运行和升级包及其依赖项。②在计算机中便捷地创建、保存、加载和切换环境。

2.4 dlib库
Dlib是一个C++包,它拥有各种机器学习、深度学习相关的库,而且它可以在不同环境下使用,特别是在图像处理领域运用十分广泛。同时dlib所有的设计都是高度模块化的,执行速度快,并且通过一个干净的、现代的C++ API简单地使用。特别的是,因为Dlib是开源的,我们可以免费的使用它,只需要直接在环境下安装即可,十分方便。并且Dlib不依赖第三方库,无须安装和配置,可用在window、Mac OS、Linux系统上。
为什么用Dlib来做人脸识别呢? 因为我们需要3个重要的模型,分别是:人脸检测器,人脸关键点检测器、人脸识别模型,而这3个模型Dlib库中都有,并且后两者还是已经训练好的,比如此设计我使用的是训练好的ResNet人脸识别模型,我们只需直接调用就行,是相当方便的了。ResNet即深度残差网络,为什么用这个模型呢? 如果我们让网络对残差进行学习,得到的人脸识别结果在深度和精度上都比 CNN 更加强大。因为它的强大使他的发明者何凯明在2015年获得ImageNet的冠军,因此目前此算法在人脸识别领域占据领先位置。
Dlib的拥有许多解析文档和开源、高级的图像处理算法。Dlib有debug模式,在debug模式下可以调试代码,查看变量和对象随着程序运行的变化,快速定位错误点。同时Dlib也有说明文档,每个类和函数都在文档中有做详细的说明。除此之外,Dlib还提供了大量的实例,作为程序员重要的参考资料。

2.5 OpenCV-Python
是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性。OpenCV-Python是一个Python绑定库,旨在解决计算机视觉问题。Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码行表达思想,而不会降低可读性。与C / C++等语言相比,Python速度较慢。也就是说,Python可以使用C / C++轻松扩展,这使我们可以在C / C++中编写计算密集型代码,并创建可用作Python模块的Python包装器。这给我们带来了两个好处:首先,代码与原始C / C++代码一样快(因为它是在后台工作的实际C++代码),其次,在Python中编写代码比使用C / C++更容易。OpenCV-Python是原始OpenCV C++实现的Python包装器。OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得使用类似于Numpy的各种其他的库(如SciPy和Matplotlib)集成更容易。

这篇关于基于Python的人脸识别系统设计与实现(论文+源码)_kaic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954417

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time