首页 > 编程知识 正文

手机上写python(如何用手机编写python)

时间:2023-05-04 21:36:15 阅读:77600 作者:3927

本文首先介绍人脸识别模型的内部工作原理。 然后,结合简单的案例,在Python上进行案例分析。 在正文的最后一部分,你将完成你的第一个脸部识别模型!

目录

了解人脸识别机制案例学习Python APP了解python码应用人脸识别算法了解人脸识别机制

为了了解人脸识别算法的工作原理,让我们先了解特征向量的概念。 译者注:这里的特征向量是机器学习的概念,与矩阵理论不同。 )

每个机器学习算法都以数据集为输入,从中学习经验。 算法遍历数据并识别数据中的模式。 例如,假设您想识别指定图像中人物的脸部。 很多物体可以被视为图案。

私信小编007可以获得几十套PDF和大量的学习资料哦。

脸部长度(厘米)脸部宽度(厘米)脸部平均肤色(r,g,b )嘴唇宽度(厘米)鼻子长度(厘米) ) ) ) ) ) )。

给定图像时,我们可以标记不同的特征,并将其转换为以下特征向量。

这样,我们的照片被转换为向量,可以表示为(23.1、15.8、255、224、189、5.2、4.4 )。 当然,无数其他特征也可以从图像中派生出来,如头发的颜色、胡子和眼镜。 但是,在这个简单的例子中,只考虑这五个简单的特征。

现在,如果将每个图像解码为特征向量,问题会更简单。 很明显,如果使用同一个人的两张脸部图像,提取的特征向量非常相似。 也就是说,两个特征向量的“距离”变得非常小。

这时,机器学习可以让我们完成两件事:

提取特征向量。 由于特征太多,手动列出所有特征非常困难。 一个机器学习算法可以自动标记很多特征。 例如,一个复杂的特征可能是鼻子的长度和额头的宽度的比率。 手动列出所有这些派生特征非常困难。 匹配算法:得到特征向量后,机器学习算法需要将新图像与语料库中的特征向量匹配。 我们基本了解人脸识别是如何工作的,所以让我们利用广泛使用的Python库构建自己的人脸识别算法。

个案研究

首先,给出标记Zuckerberg、Warren Buffett、Bill Gates、Shah Rukh xqdxmt等名人脸,将这些脸视为我们的语料库。 现在,给其他名人的新照片“新人物”,判断这些“新人物”是否在语料库里。

语料库的图像如下所示。

如图所示,我们列举的名人有Barack Obama、Bill Gates、聪明羽毛、Mark Zuckerberg、Ray Dalio和Shah Rukh xqdxmt。

现在,假设“新人物”如下。

注:以上所有图片均来自谷歌图片。

很明显,这是Shah Rukh xqdxmt。 但是,对计算机来说,这个任务很有挑战性。 因为对我们来说,组合了照片的很多特征,很容易就能判断出它是哪个人物。 但是对计算机来说,学习如何识别人脸是非常不直观的。

一个很棒但很简单的python库中封装了上述内容——,我们知道如何根据脸部特征生成特征向量,从而区分不同的脸部。 此python库称为face_recognition。 包括用于应用dlib——现代c工具包完成复杂的基于c的APP应用的机器学习算法。

Python的face_recognition库可以执行许多任务,包括:

找到给定照片的所有脸。 找出照片中的脸部特征进行处理。 识别照片中的脸。 实时脸部识别。 接下来,对其进行研究

中的第三种任务——识别图片中的脸。

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

附链接:

https://github.com/ageitgey/face_recognition

事实上,这里有一些如何安装face_recognition库的指导。

附链接:

https://github.com/ageitgey/face_recognition#installation-options

在你安装face_recognition之前,还需要安装dlib包。你可以从如下链接中找到安装dlib的指导。

附链接:

https://gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf

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.pymy_image.jpgimages/barack_obama.jpgbill_gates.jpgjeff_bezos.jpgmark_zuckerberg.jpgray_dalio.jpgshah_rukh_jjdls.jpgwarren_buffett.jpg

我们的根目录,facialrecognition包括:

fr.py的形式的人脸识别代码。my_image.jpg – 即将被识别的图片(“新人物”)。images/ –语料库。

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

Matched: shah_rukh_jjdls.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 xqdxmt 并且我们的人脸识别系统可以识别!

理解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_jjdls.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替换为另一个图片:

仁爱的水蜜桃再次运行这个算法,将会看到如下结果:

Not matched: shah_rukh_jjdls.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

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

正确地识别那些在语料库中存储的人。对语料库中不存在的人物进行标注。

人脸识别算法的应用

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

面部身份验证:Apple在iPhones中引入了Face ID以用于面部身份验证。一些银行也尝试使用面部身份验证来解锁。用户服务:马来西亚的一些银行安装了新的人脸识别系统,用于识别有价值的银行客户,以便银行为其提供个人服务。进而银行可以通过维持这类用户并提升用户满意度来获取更多收益。保险行业:很多保险公司正在通过运用人脸识别系统来匹配人的脸和ID提供的照片,使赔付过程变得更简单。

尾记

综上所述,人脸识别是一个有趣的问题并且有很多强大的案例。这些应用可以有效地从各个方面为社会服务。尽管将这些技术商业化可能会带来伦理风险,但我们会把这个问题留到下次讨论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。