我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python怎么构建人脸识别模型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python怎么构建人脸识别模型

这篇文章主要讲解了“Python怎么构建人脸识别模型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么构建人脸识别模型”吧!

01 介绍

你是否意识到,每当你上传照片到Facebook上,平台都会用人脸识别算法来识别图片中的人物?目前还有一些政府在用人脸识别技术来识别和抓捕罪犯。此外,最常见的应用就是通过自己的脸部解锁手机。

计算机视觉的子领域应用得非常广泛,并且全球很多商业活动都已经从中获益。人脸识别模型的使用在接下来的几年内还会继续增长,所以一起来了解如何从零开始构建人脸识别模型吧!

本文首先会介绍人脸识别模型的内部工作原理。随后结合一个简单的案例,我们将通过Python进行案例实践。在本文的***部分,你将完成你的***个人脸识别模型!

02 理解人脸识别的工作原理

为了理解人脸识别算法工作原理,我们首先来了解一下特征向量的概念。(译者注:此处的特征向量指机器学习的概念,不同于矩阵理论。)

每个机器学习算法都会将数据集作为输入,并从中学习经验。算法会遍历数据并识别数据中的模式。例如,假定我们希望识别指定图片中人物的脸,很多物体是可以看作模式的:

  • 脸部的长度/宽度。

  • 由于图片比例会被调整,长度和高度可能并不可靠。然而,在放缩图片后,比例是保持不变的——脸部长度和宽度的比例不会改变。

  • 脸部肤色。

  • 脸上局部细节的宽度,如嘴,鼻子等。

显而易见,此时存在一个模式——不同的脸有不同的维度,相似的脸有相似的维度。有挑战性的是需要将特定的脸转为数字,因为机器学习算法只能理解数字。表示一张脸的数字(或训练集中的一个元素)可以称为特征向量。一个特征向量包括特定顺序的各种数字。

举一个简单的例子,我们可以将一张脸映射到一个特征向量上。特征向量由不同的特征组成,如:

  • 脸的长度(cm)

  • 脸的宽度(cm)

  • 脸的平均肤色(R,G,B)

  • 唇部宽度(cm)

  • 鼻子长度(cm)

当给定一个图片时,我们可以标注不同的特征并将其转化为如下的特征向量:

Python怎么构建人脸识别模型

如此一来,我们的图片现在被转化为一个向量,可以表示为(23.1,15.8,255,224,189,5.2,4.4)。当然我们还可以从图片中衍生出无数的其他特征(如,头发颜色,胡须,眼镜等)。然而在这个简单的例子中,我们只考虑这五个简单的特征。

现在,一旦我们将每个图片解码为特征向量,问题就变得更简单。明显地,当我们使用同一个人的两张面部图片时,提取的特征向量会非常相似。换言之,两个特征向量的“距离”就变得非常小。

此时机器学习可以帮我们完成两件事:

  • 提取特征向量。由于特征过多,手动列出所有特征是非常困难的。一个机器学习算法可以自动标注很多特征。例如,一个复杂的特征可能是:鼻子长度和前额宽度的比例。手动列出所有的这些衍生特征是非常困难的。

  • 匹配算法:一旦得到特征向量,机器学习算法需要将新图片和语料库中的特征向量进行匹配。

既然我们对人脸识别如何工作有了基本的理解,让我们运用一些广泛使用的Python库来搭建自己的人脸识别算法。

03 案例学习

首先给定一些人物脸部的图片——可能是一些名人,如Mark Zuckerberg, Warren Buffett, Bill Gates, Shah Rukh Khan等,并把这些人脸看作我们的语料库。现在,我们给定一些其他名人的新图片(“新人物”),并判断这些“新人物”是否在语料库中。

以下是语料库中的图片:

Python怎么构建人脸识别模型

如图所示,我们所列举的名人有Barack Obama, Bill Gates, Jeff Bezos, Mark Zuckerberg, Ray Dalio 和Shah Rukh Khan。

现在,假定“新人物”如下:

Python怎么构建人脸识别模型

▲注:以上所有图片均来自Google图片

显而易见,这是Shah Rukh Khan。然而对电脑来说,这个任务很有挑战性。因为对于我们来说,我们可以轻易地将图片的多种特征结合来判断这是哪个人物。然而对电脑而言,学习如何识别人脸是非常不直观的。

有一个神奇但是简单的python库封装了以上提及的内容——可以根据脸部特征生成特征向量并且知道如何区分不同的脸。这个python库叫做face_recognition。它应用了dlib——一个现代C++工具包,其中包含了一些机器学习算法来帮助完成复杂的基于C++的应用。

Python中的face_recognition库可以完成大量的任务:

  • 发现给定图片中所有的脸。

  • 发现并处理图片中的脸部特征。

  • 识别图片中的脸。

  • 实时的人脸识别。

接下来,我们将探讨其中的第三种任务——识别图片中的脸。

你可以在github的如下链接中获取face_recognition库的源代码。

04 Python应用

这部分包括使用face_recognition库搭建简单人脸识别系统的代码。这是一个应用操作的部分,我们将在下一部分解读代码来理解更多细节。

# import the libraries  import os  import face_recognition  # make a list of all the available images  images = os.listdir('images')  # load your image  image_to_be_matched = face_recognition.load_image_file('my_image.jpg')  # encoded the loaded image into a feature vector  image_to_be_matched_encoded = face_recognition.face_encodings(      image_to_be_matched)[0]  # iterate over each image  for image in images:      # load the image      current_image = face_recognition.load_image_file("images/" + image)      # encode the loaded image into a feature vector      current_image_encoded = face_recognition.face_encodings(current_image)[0]      # match your image with the image and check if it matches      result = face_recognition.compare_faces(          [image_to_be_matched_encoded], current_image_encoded)      # check if it was a match      if result[0] == True:          print "Matched: " + image      else:          print "Not matched: " + image

文件结构如下:

facialrecognition:

  • fr.py

  • my_image.jpg

  • images/

  • barack_obama.jpg

  • bill_gates.jpg

  • jeff_bezos.jpg

  • mark_zuckerberg.jpg

  • ray_dalio.jpg

  • shah_rukh_khan.jpg

  • warren_buffett.jpg

我们的根目录,facialrecognition包括:

  • fr.py的形式的人脸识别代码。

  • my_image.jpg – 即将被识别的图片(“新人物”)。

  • images/ – 语料库。

如果你按照前文创建文件结构并执行代码,如下是你能得到的结果:

Matched: shah_rukh_khan.jpg  Not matched: warren_buffett.jpg  Not matched: barack_obama.jpg  Not matched: ray_dalio.jpg  Not matched: bill_gates.jpg  Not matched: jeff_bezos.jpg  Not matched: mark_zuckerberg.jpg

显而易见,新名人是Shah Rukh Khan 并且我们的人脸识别系统可以识别!

05 理解Python代码

现在让我们解读代码来,并理解其工作原理:

# import the libraries  import os  import face_recognition

以上是引入操作。我们将通过已经建好的os库来读入语料库中的所有图片,并且通过face_recognition来完成算法部分。

# make a list of all the available images  images = os.listdir('images')

这个简单的代码将帮助我们识别语料库中所有图片的路径。一旦执行这些代码,我们可以得到:

images = ['shah_rukh_khan.jpg', 'warren_buffett.jpg', 'barack_obama.jpg', 'ray_dalio.jpg', 'bill_gates.jpg', 'jeff_bezos.jpg', 'mark_zuckerberg.jpg']

现在,以下代码将加载新人物的图片:

# load your image  image_to_be_matched = face_recognition.load_image_file('my_image.jpg')

为了保证算法可以解析图片,我们将人物脸部图片转化为特征向量:

# encoded the loaded image into a feature vector  image_to_be_matched_encoded = face_recognition.face_encodings(      image_to_be_matched)[0]

剩余的代码相对简单:

# iterate over each image  for image in images:      # load the image      current_image = face_recognition.load_image_file("images/" + image)      # encode the loaded image into a feature vector      current_image_encoded = face_recognition.face_encodings(current_image)[0]      # match your image with the image and check if it matches      result = face_recognition.compare_faces(          [image_to_be_matched_encoded], current_image_encoded)      # check if it was a match      if result[0] == True:          print "Matched: " + image      else:          print "Not matched: " + image

此时,我们:

  • 对每个图像进行循环操作。

  • 将图像解析为特征向量。

  • 比较语料库中已经加载的图片和被识别的新人物图片。

  • 如果两者匹配,我们就显示出来。如果不匹配,我们也要显示结果。

如上所示,结果显示这个简单的人脸识别算法进行得很顺利。让我们尝试将my_image替换为另一个图片:

Python怎么构建人脸识别模型

当你再次运行这个算法,将会看到如下结果:

Not matched: shah_rukh_khan.jpg  Not matched: warren_buffett.jpg  Not matched: barack_obama.jpg  Not matched: ray_dalio.jpg  Not matched: bill_gates.jpg  Not matched: jeff_bezos.jpg  Not matched: mark_zuckerberg.jpg

很明显,系统没有将马云识别为以上的任何一个名人。这意味着我们的算法在以下方面都表现得很好:

  • 正确地识别那些在语料库中存储的人。

  • 对语料库中不存在的人物进行标注。

06 人脸识别算法的应用

人脸识别是一个成熟的研究方向,已被广泛地应用在工业界和学术界。例如,一个罪犯在中国被捕可能就得益于人脸识别系统:系统识别了他的脸并发出警报。由此可见,面部识别可以用来减少犯罪。还有许多其他有趣的人脸识别案例:

  • 面部身份验证:Apple在iPhones中引入了Face ID以用于面部身份验证。一些银行也尝试使用面部身份验证来解锁。

  • 用户服务:马来西亚的一些银行安装了新的人脸识别系统,用于识别有价值的银行客户,以便银行为其提供个人服务。进而银行可以通过维持这类用户并提升用户满意度来获取更多收益。

  • 保险行业:很多保险公司正在通过运用人脸识别系统来匹配人的脸和ID提供的照片,使赔付过程变得更简单。

感谢各位的阅读,以上就是“Python怎么构建人脸识别模型”的内容了,经过本文的学习后,相信大家对Python怎么构建人脸识别模型这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python怎么构建人脸识别模型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python怎么构建人脸识别模型

这篇文章主要讲解了“Python怎么构建人脸识别模型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么构建人脸识别模型”吧!01 介绍你是否意识到,每当你上传照片到Faceboo
2023-06-16

怎么用Python实现人脸识别

这篇文章主要讲解了“怎么用Python实现人脸识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现人脸识别”吧!1.安装最好是使用 Linux 或 Mac 环境来安装,W
2023-06-02

怎么用Python代码实现人脸识别

这篇文章主要介绍“怎么用Python代码实现人脸识别”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Python代码实现人脸识别”文章能帮助大家解决问题。正文:环境要求:Ubuntu17.10P
2023-06-29

Python怎么实现AI智能人脸识别

本篇文章为大家展示了Python怎么实现AI智能人脸识别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言现在人脸识别这东西层出不穷,基本上很多东西都用到,比如现在火车站都是用人脸识别来过关卡,确实
2023-06-02

如何用DL4J对人脸识别模型进行攻击

如何用DL4J对人脸识别模型进行攻击,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、前言 下面就来介绍一下如何用DeepLearning4J对人脸识别模型进行FGS
2023-06-19

Python如何搭建人脸识别考勤系统

这篇文章给大家分享的是有关Python如何搭建人脸识别考勤系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。人脸识别的实际应用人脸识别目前正被用于让世界更安全、更智能、更方便。有几个用例:寻找失踪人员零售犯罪安全
2023-06-22

Python中基于Opencv怎么实现人脸识别

这篇文章主要讲解了“Python中基于Opencv怎么实现人脸识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中基于Opencv怎么实现人脸识别”吧!检测人脸。这应该是最基本的
2023-06-02

Python怎么实现人脸识别微笑检测

这篇文章主要介绍“Python怎么实现人脸识别微笑检测”,在日常操作中,相信很多人在Python怎么实现人脸识别微笑检测问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么实现人脸识别微笑检测”的疑
2023-06-21

怎么在python中使用LBPH实现人脸识别

怎么在python中使用LBPH实现人脸识别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(
2023-06-14

python opencv怎么实现人脸识别考勤系统

小编给大家分享一下python opencv怎么实现人脸识别考勤系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python可以做什么Python是一种编程语言
2023-06-14

java人脸识别登录怎么实现

要实现Java人脸识别登录,需要进行以下步骤:1. 收集人脸图像:通过摄像头或者上传照片等方式,收集用户的人脸图像,并将其保存在数据库中。2. 人脸检测:使用人脸检测算法对用户输入的图像进行检测,确定图像中是否有人脸。3. 人脸特征提取:对
2023-05-25

基于Python的人脸识别功能怎么实现

这篇文章主要介绍“基于Python的人脸识别功能怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python的人脸识别功能怎么实现”文章能帮助大家解决问题。一、 人脸检测人脸检测是指从图像
2023-07-05

怎么使用Python实现简单的人脸识别

小编给大家分享一下怎么使用Python实现简单的人脸识别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、首先梳理一下实现人脸识别需要进行的步骤:流程大致如此,在此之前,要先让人脸被准确的找出来,也就是能准确区分人脸的分类
2023-06-14

人脸识别java方法怎么实现

人脸识别是一项复杂的技术,需要使用专业的算法和工具来实现。以下是一些实现人脸识别的Java方法:1. 使用OpenCV库:OpenCV是一个广泛使用的计算机视觉库,其中包含了许多用于人脸识别的算法和工具。可以使用Java绑定库来调用Open
2023-06-11

java人脸识别算法怎么使用

Java人脸识别算法可以通过以下步骤使用:1. 下载并安装Java人脸识别库,如OpenCV。2. 准备人脸图像数据集,包括正面、侧面等不同角度的人脸图像。3. 通过Java代码将图像加载到内存中,并使用OpenCV提供的算法进行人脸检测和
2023-06-05

怎么使用Python实现人脸离线识别系统

本篇内容介绍了“怎么使用Python实现人脸离线识别系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先看看现在的研究现状。如上的发展趋势
2023-07-06

uniapp app人脸识别功能怎么实现

这篇文章主要介绍“uniapp app人脸识别功能怎么实现”,在日常操作中,相信很多人在uniapp app人脸识别功能怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”uniapp app人脸识别功能怎
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录