python dlib opencv人脸识别准确度_使用Python,OpenCV和深度学习实现面部识别
背景知识视频教程深度学习:Python中的卷积神经网络 - 国外课栈viadean.comOpenCV深度学习简介 - 国外课栈viadean.comPython:用于预测性分析 - 国外课栈viadean.com在本文中,您将学习如何使用以下方法在图像和视频流中执行面部识别:OpenCVPythonDeep Learning如我们所见,我们今天将在此处使用的基于深度学习的面部嵌入技术(1)
背景知识视频教程
深度学习:Python中的卷积神经网络 - 国外课栈viadean.com
OpenCV深度学习简介 - 国外课栈viadean.com
Python:用于预测性分析 - 国外课栈viadean.com
在本文中,您将学习如何使用以下方法在图像和视频流中执行面部识别:
OpenCV
Python
Deep Learning
如我们所见,我们今天将在此处使用的基于深度学习的面部嵌入技术(1)高度准确,并且(2)能够实时执行。
使用Python,OpenCV和深度学习
我们将简要讨论基于深度学习的面部识别的工作原理,包括“深度度量学习”的概念。
于此,我将安装实际执行面部识别所需的库。
最后,我们将对静止图像和视频流实施人脸识别。
我们将发现,我们的人脸识别实现将能够实时运行。
了解深度学习人脸识别嵌入
秘诀是一种称为深度度量学习的技术。
如果您有任何深度学习的经验,那么您就会知道我们通常会训练网络以:
接受单个输入图像
并为该图像输出分类/标签
但是,深度度量学习是不同的。
相反,我们试图输出单个标签(甚至是图像中对象的坐标/边界框),而是输出一个实值特征向量。
对于dlib面部识别网络,输出特征向量是128-d(即128个实值数字的列表),用于量化面部。使用三胞胎来训练网络:
在这里,我们向网络提供了三个图像:
这些图像中的两个是同一个人的示例面孔。
第三张图片是我们数据集中的一张随机面孔,与其他两张图片不是同一个人。
作为示例,让我们再次考虑上面的图,其中提供了三张图片:一张是Chad Smith,另一张是Will Ferrell。
我们的网络对人脸进行量化,为每个人构建128维嵌入(量化)。
通常的想法是,我们将调整神经网络的权重,以使两个Will Ferrel的128天测量值彼此更接近,而距Chad Smith的测量值则更远。
我们用于人脸识别的网络体系结构基于He等人的“深度残差图像识别学习”论文中的ResNet-34,但层数更少,滤镜数量减少了一半。
该网络本身是由戴维斯·金(Davis King)训练的,具有约300万张图像的数据集。在野外贴标(LFW)数据集上,网络与其他最新方法进行了比较,达到了99.38%的准确性。
Davis King(dlib的创建者)和Adam Geitgey(face_recognition模块的作者,我们将很快使用)都写了详细的文章,介绍基于深度学习的面部识别的工作原理:
深度度量学习提供高质量的人脸识别 (Davis)
深度学习的现代人脸识别(Adam)
我强烈建议您阅读以上文章,以获取有关深度学习面部嵌入如何工作的更多详细信息。
安装人脸识别库
为了使用Python和OpenCV执行人脸识别,我们需要安装两个附加的库:
dlib
face_recognition
由戴维斯·金(Davis King)维护的dlib库包含我们对“深度度量学习”的实现,该学习用于构建用于实际识别过程的人脸嵌入。
由Adam Geitgey创建的face_recognition库包含了dlib的面部识别功能,使其更易于使用。
假设您的系统上已安装OpenCV。
在此,开始安装dlib和face_recognition软件包。
注意:对于以下安装,如果您正在使用Python虚拟环境,请确保您在其中。 我强烈建议使用虚拟环境隔离项目-这是Python的最佳做法。 如果您已遵循OpenCV安装指南(并安装了virtualenv + virtualenvwrapper),则可以在安装dlib和face_recognition之前使用workon命令。
安装不支持GPU的dlib
安装支持GPU的dlib
安装face_recognition包
安装imutils
人脸识别数据集
人脸识别项目结构
使用OpenCV和深度学习对人脸进行编码
识别图像中的人脸
识别视频中的人脸
使用OpenCV和深度学习
使用Python,OpenCV和dlib的面部标志
实时面部标志检测
检测眼睛,鼻子,嘴唇和下颚
睡意检测
眨眼检测
脸部齐整
快速面部标志检测
源代码
面部识别 - 国外课栈viadean.com
更多推荐
所有评论(0)