导航:首页 > 编程语言 > python视频人脸特征向量提取

python视频人脸特征向量提取

发布时间:2023-01-14 04:31:28

⑴ 那位大神能告诉我“人脸识别”思路c#写需要用到什么

您好,是这样的:
① 人脸检测与分割。从任意的场景中、视频数据中检测人脸的存在,提取出一个人脸及各个区域部分。在人脸上自动标记出我们需要的特征点, 例如外眼点、内眼点、眉间点、鼻下点、颌下点、嘴角点,等等。这个领域的研究目前已经出现了许多的成熟的方法,在这里就不一一介绍了。
② 人脸的规范化。计算出人脸在尺度和旋转等方面的变化,得到摄像过程中人脸的实际位置,将库中的人脸三维模型也变化到同样的位置。这是几何特征识别的一个关键的问题。由于人脸的几何特征的相似性比较,受人脸拍摄角度的影响很大,当人脸偏转超过一定的角度的时候,许多重要的特征点在二维上不可见了,因此也无法计算出对应的特征向量。如果不能将人脸模型和照片保持在同样的偏转环境下,识别的可信性就不具备。
③ 人脸表征。采用标记出的特征点的几何特性(例如:特征点分布欧氏距离、B样条曲面等方法)表示出数据库中的已知人脸和检测出的人脸。对同一个照片的特征点采取多层次描述的方法,形成多个几何特征向量,这种多层次描述的方法可以有效的降低人脸识别过程中的误识现象的出现。同样,识别的过程也是采取多分类器合作的模式识别方法。
④ 人脸识别。根据获得的人脸照片特征点,计算出人脸的偏转角度,同时计算出多个特征向量,从数据库中取出已知的人脸特征点信息,构建出三维人脸特征点拓扑模型,对此模型进行偏转,使之与二维人脸照片的拍摄环境一致。计算出三维模型的多个特征向量,通过面貌特征的多层次描述、多分类器合作的模式识别方法,对投影结果与二维相应照片进行相似性度量。在进行识别时,对每个分类器设定一个阀值,对所有的特征向量的结果也设置一个阀值,一旦所有的度量结果都达到阀值的要求,即认定此次识别是成功的,否则继续从数据库中读数据,进行识别。

⑵ 对于人脸图像,应该怎么来提取特征向量

http://wenku..com/view/20556451f01dc281e53af088.html

⑶ 有一张人脸的侧脸图像,如何用python及相关的库来计算人脸转过的角度。

这个很难办到,不过可以通过判断关键点的特点进行判断,但是准确率不高
前言
很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的我自己。其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。
一点区分
对于大部分人来说,区分人脸检测和人脸识别完全不是问题。但是网上有很多教程有无无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的。其实,人脸检测解决的问题是确定一张图上有木有人脸,而人脸识别解决的问题是这个脸是谁的。可以说人脸检测是是人识别的前期工作。今天我们要做的是人脸识别。
所用工具
Anaconda 2——Python 2
Dlib
scikit-image
Dlib
对于今天要用到的主要工具,还是有必要多说几句的。Dlib是基于现代C++的一个跨平台通用的框架,作者非常勤奋,一直在保持更新。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等等,涉猎甚广。更重要的是,Dlib的文档非常完善,例子非常丰富。就像很多库一样,Dlib也提供了Python的接口,安装非常简单,用pip只需要一句即可:
pip install dlib
上面需要用到的scikit-image同样只是需要这么一句:
pip install scikit-image
注:如果用pip install dlib安装失败的话,那安装起来就比较麻烦了。错误提示很详细,按照错误提示一步步走就行了。

人脸识别
之所以用Dlib来实现人脸识别,是因为它已经替我们做好了绝大部分的工作,我们只需要去调用就行了。Dlib里面有人脸检测器,有训练好的人脸关键点检测器,也有训练好的人脸识别模型。今天我们主要目的是实现,而不是深究原理。感兴趣的同学可以到官网查看源码以及实现的参考文献。今天的例子既然代码不超过40行,其实是没啥难度的。有难度的东西都在源码和论文里。
首先先通过文件树看一下今天需要用到的东西:

准备了六个候选人的图片放在candidate-faces文件夹中,然后需要识别的人脸图片test.jpg。我们的工作就是要检测到test.jpg中的人脸,然后判断她到底是候选人中的谁。另外的girl-face-rec.py是我们的python脚本。shape_predictor_68_face_landmarks.dat是已经训练好的人脸关键点检测器。dlib_face_recognition_resnet_model_v1.dat是训练好的ResNet人脸识别模型。ResNet是何凯明在微软的时候提出的深度残差网络,获得了 ImageNet 2015 冠军,通过让网络对残差进行学习,在深度和精度上做到了比
CNN 更加强大。
1. 前期准备
shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat都可以在这里找到。
然后准备几个人的人脸图片作为候选人脸,最好是正脸。放到candidate-faces文件夹中。
本文这里准备的是六张图片,如下:

她们分别是

然后准备四张需要识别的人脸图像,其实一张就够了,这里只是要看看不同的情况:

可以看到前两张和候选文件中的本人看起来还是差别不小的,第三张是候选人中的原图,第四张图片微微侧脸,而且右侧有阴影。
2.识别流程
数据准备完毕,接下来就是代码了。识别的大致流程是这样的:
3.代码
代码不做过多解释,因为已经注释的非常完善了。以下是girl-face-rec.py
# -*- coding: UTF-8 -*-
import sys,os,dlib,glob,numpy
from skimage import io
if len(sys.argv) != 5:
print "请检查参数是否正确"
exit()
# 1.人脸关键点检测器
predictor_path = sys.argv[1]
# 2.人脸识别模型
face_rec_model_path = sys.argv[2]
# 3.候选人脸文件夹
faces_folder_path = sys.argv[3]
# 4.需识别的人脸
img_path = sys.argv[4]
# 1.加载正脸检测器
detector = dlib.get_frontal_face_detector()
# 2.加载人脸关键点检测器
sp = dlib.shape_predictor(predictor_path)
# 3. 加载人脸识别模型
facerec = dlib.face_recognition_model_v1(face_rec_model_path)
# win = dlib.image_window()
# 候选人脸描述子list
descriptors = []
# 对文件夹下的每一个人脸进行:
# 1.人脸检测
# 2.关键点检测
# 3.描述子提取
for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
print("Processing file: {}".format(f))
img = io.imread(f)
#win.clear_overlay()
#win.set_image(img)
# 1.人脸检测
dets = detector(img, 1)
print("Number of faces detected: {}".format(len(dets)))
for k, d in enumerate(dets):
# 2.关键点检测
shape = sp(img, d)
# 画出人脸区域和和关键点
# win.clear_overlay()
# win.add_overlay(d)
# win.add_overlay(shape)
# 3.描述子提取,128D向量
face_descriptor = facerec.compute_face_descriptor(img, shape)
# 转换为numpy array
v = numpy.array(face_descriptor)
descriptors.append(v)
# 对需识别人脸进行同样处理
# 提取描述子,不再注释
img = io.imread(img_path)
dets = detector(img, 1)
dist = []
for k, d in enumerate(dets):
shape = sp(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
d_test = numpy.array(face_descriptor)
# 计算欧式距离
for i in descriptors:
dist_ = numpy.linalg.norm(i-d_test)
dist.append(dist_)
# 候选人名单
candidate = ['Unknown1','Unknown2','Shishi','Unknown4','Bingbing','Feifei']
# 候选人和距离组成一个dict
c_d = dict(zip(candidate,dist))
cd_sorted = sorted(c_d.iteritems(), key=lambda d:d[1])
print "\n The person is: ",cd_sorted[0][0]
dlib.hit_enter_to_continue()

4.运行结果
我们在.py所在的文件夹下打开命令行,运行如下命令
python girl-face-rec.py 1.dat 2.dat ./candidate-faecs test1.jpg
由于shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat名字实在太长,所以我把它们重命名为1.dat和2.dat。
运行结果如下:
The person is Bingbing。
记忆力不好的同学可以翻上去看看test1.jpg是谁的图片。有兴趣的话可以把四张测试图片都运行下试试。
这里需要说明的是,前三张图输出结果都是非常理想的。但是第四张测试图片的输出结果是候选人4。对比一下两张图片可以很容易发现混淆的原因。
机器毕竟不是人,机器的智能还需要人来提升。
有兴趣的同学可以继续深入研究如何提升识别的准确率。比如每个人的候选图片用多张,然后对比和每个人距离的平均值之类的。全凭自己了。

⑷ 用Keras生成面部Python实现

可采用的机器学习数据集:

两者都包含人脸图像。我把这两个组合成一个文件夹。

最常听到的两种图像生成技术是生成对抗网络(GAN)和LSTM网络。

LSTM训练的时候速度非常慢,GAN训练会快得多。实际结果花不到半小时,模糊的面孔就会开始出现。随着时间的推移,图像会更加逼真。

有许多GAN变种。我使用的一种称为深度卷积神经网络(DCGAN)。DCGAN的优点在于它使用了卷积层。卷积神经网络目前是存在的最佳图像分类算法。

生成对抗网络是由一位名叫Ian Goodfellow的研究员发明的,并于2014年引入了GAN。

GAN非常强大。利用正确的数据,网络架构和超参数,您可以生成非常逼真的图像。

将来,一些高级版本的GAN或其他一些内容生成算法可能会让我们做一些很酷的事情:

但GAN是如何运作的呢?

GAN实际上不是一个神经网络,而是两个。其中之一是Generator。它将随机值作为输入并生成图像。

第二是discriminator。它试图确定图像是假的还是真的。

训练GAN就像一场竞赛。Generator试图在愚弄discriminator时变得尽可能好。discriminator试图尽可能地将假图像与真实图像分开。

这将迫使他们两个都改善。理想情况下,这将在某种程度上导致以下情况:

在现实中,您需要确保一切正常(数据、体系结构、超参数)。GAN对超参数值的微小变化非常敏感。

导入库

第一步是导入所有需要的Python库。

FaceGenerator类

这段Python代码初始化了训练所需的一些重要变量。

将训练数据加载到模型中

此函数将文件夹的名称作为输入,并将该文件夹中的所有图像作为numpy数组返回。所有图像的大小都调整为__init__函数中指定的大小。

Shape=(图像的数量,宽度,高度,通道)。

神经网络

这两个函数定义了generator和discriminator。

神经网络模型训练

对于每个epoch:

训练结束后:

此函数可用于在训练后生成新图像。

训练GAN很难,当你成功时,这种感觉会非常有益。

此Python代码可以轻松用于其他图像数据集。请记住,您可能需要编辑网络体系结构和参数,具体取决于您尝试生成的图像。

⑸ python人脸识别所用的优化算法有什么

python三步实现人脸识别

Face Recognition软件包

这是世界上最简单的人脸识别库了。你可以通过Python引用或者命令行的形式使用它,来管理和识别人脸。

该软件包使用dlib中最先进的人脸识别深度学习算法,使得识别准确率在《Labled Faces in the world》测试基准下达到了99.38%。

它同时提供了一个叫face_recognition的命令行工具,以便你可以用命令行对一个文件夹中的图片进行识别操作。

特性

在图片中识别人脸

找到图片中所有的人脸

这里是一个例子:

1
  • https://github.com/ageitgey/face_recognition/blob/master/examples/recognize_faces_in_picture
  • ⑹ 如何线上部署用python基于dlib写的人脸识别算法

    python使用dlib进行人脸检测与人脸关键点标记

    Dlib简介:

    首先给大家介绍一下Dlib

    我使用的版本是dlib-18.17,大家也可以在我这里下载:

    之后进入python_examples下使用bat文件进行编译,编译需要先安装libboost-python-dev和cmake

    cd to dlib-18.17/python_examples

    ./compile_dlib_python_mole.bat 123

    之后会得到一个dlib.so,复制到dist-packages目录下即可使用

    这里大家也可以直接用我编译好的.so库,但是也必须安装libboost才可以,不然python是不能调用so库的,下载地址:

    将.so复制到dist-packages目录下

    sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/1

    最新的dlib18.18好像就没有这个bat文件了,取而代之的是一个setup文件,那么安装起来应该就没有这么麻烦了,大家可以去直接安装18.18,也可以直接下载复制我的.so库,这两种方法应该都不麻烦~

    有时候还会需要下面这两个库,建议大家一并安装一下

    9.安装skimage

    sudo apt-get install python-skimage1

    10.安装imtools

    sudo easy_install imtools1

    Dlib face landmarks Demo

    环境配置结束之后,我们首先看一下dlib提供的示例程序

    1.人脸检测

    dlib-18.17/python_examples/face_detector.py 源程序:

    #!/usr/bin/python# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt## This example program shows how to find frontal human faces in an image. In# particular, it shows how you can take a list of images from the command# line and display each on the screen with red boxes overlaid on each human# face.## The examples/faces folder contains some jpg images of people. You can run# this program on them and see the detections by executing the# following command:# ./face_detector.py ../examples/faces/*.jpg## This face detector is made using the now classic Histogram of Oriented# Gradients (HOG) feature combined with a linear classifier, an image# pyramid, and sliding window detection scheme. This type of object detector# is fairly general and capable of detecting many types of semi-rigid objects# in addition to human faces. Therefore, if you are interested in making# your own object detectors then read the train_object_detector.py example# program. ### COMPILING THE DLIB PYTHON INTERFACE# Dlib comes with a compiled python interface for python 2.7 on MS Windows. If# you are using another python version or operating system then you need to# compile the dlib python interface before you can use this file. To do this,# run compile_dlib_python_mole.bat. This should work on any operating# system so long as you have CMake and boost-python installed.# On Ubuntu, this can be done easily by running the command:# sudo apt-get install libboost-python-dev cmake## Also note that this example requires scikit-image which can be installed# via the command:# pip install -U scikit-image# Or downloaded from . import sys

    import dlib

    from skimage import io

    detector = dlib.get_frontal_face_detector()

    win = dlib.image_window()

    print("a");for f in sys.argv[1:]:

    print("a");

    print("Processing file: {}".format(f))
    img = io.imread(f)
    # The 1 in the second argument indicates that we should upsample the image
    # 1 time. This will make everything bigger and allow us to detect more
    # faces.
    dets = detector(img, 1)
    print("Number of faces detected: {}".format(len(dets))) for i, d in enumerate(dets):
    print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
    i, d.left(), d.top(), d.right(), d.bottom()))

    win.clear_overlay()
    win.set_image(img)
    win.add_overlay(dets)
    dlib.hit_enter_to_continue()# Finally, if you really want to you can ask the detector to tell you the score# for each detection. The score is bigger for more confident detections.# Also, the idx tells you which of the face sub-detectors matched. This can be# used to broadly identify faces in different orientations.if (len(sys.argv[1:]) > 0):
    img = io.imread(sys.argv[1])
    dets, scores, idx = detector.run(img, 1) for i, d in enumerate(dets):
    print("Detection {}, score: {}, face_type:{}".format(
    d, scores[i], idx[i]))5767778798081

    我把源代码精简了一下,加了一下注释: face_detector0.1.py

    # -*- coding: utf-8 -*-import sys

    import dlib

    from skimage import io#使用dlib自带的frontal_face_detector作为我们的特征提取器detector = dlib.get_frontal_face_detector()#使用dlib提供的图片窗口win = dlib.image_window()#sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始向后依次获取图片路径for f in sys.argv[1:]: #输出目前处理的图片地址
    print("Processing file: {}".format(f)) #使用skimage的io读取图片
    img = io.imread(f) #使用detector进行人脸检测 dets为返回的结果
    dets = detector(img, 1) #dets的元素个数即为脸的个数
    print("Number of faces detected: {}".format(len(dets))) #使用enumerate 函数遍历序列中的元素以及它们的下标
    #下标i即为人脸序号
    #left:人脸左边距离图片左边界的距离 ;right:人脸右边距离图片左边界的距离
    #top:人脸上边距离图片上边界的距离 ;bottom:人脸下边距离图片上边界的距离
    for i, d in enumerate(dets):
    print("dets{}".format(d))
    print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}"
    .format( i, d.left(), d.top(), d.right(), d.bottom())) #也可以获取比较全面的信息,如获取人脸与detector的匹配程度
    dets, scores, idx = detector.run(img, 1)
    for i, d in enumerate(dets):
    print("Detection {}, dets{},score: {}, face_type:{}".format( i, d, scores[i], idx[i]))

    #绘制图片(dlib的ui库可以直接绘制dets)
    win.set_image(img)
    win.add_overlay(dets) #等待点击
    dlib.hit_enter_to_continue()041424344454647484950

    分别测试了一个人脸的和多个人脸的,以下是运行结果:

    运行的时候把图片文件路径加到后面就好了

    python face_detector0.1.py ./data/3.jpg12

    一张脸的:

    两张脸的:

    这里可以看出侧脸与detector的匹配度要比正脸小的很多

    2.人脸关键点提取

    人脸检测我们使用了dlib自带的人脸检测器(detector),关键点提取需要一个特征提取器(predictor),为了构建特征提取器,预训练模型必不可少。

    除了自行进行训练外,还可以使用官方提供的一个模型。该模型可从dlib sourceforge库下载:

    arks.dat.bz2

    也可以从我的连接下载:

    这个库支持68个关键点的提取,一般来说也够用了,如果需要更多的特征点就要自己去训练了。

    dlib-18.17/python_examples/face_landmark_detection.py 源程序:

    #!/usr/bin/python# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt## This example program shows how to find frontal human faces in an image and# estimate their pose. The pose takes the form of 68 landmarks. These are# points on the face such as the corners of the mouth, along the eyebrows, on# the eyes, and so forth.## This face detector is made using the classic Histogram of Oriented# Gradients (HOG) feature combined with a linear

    ⑺ 爆肝!用Python制作抖音爆款视频!

    前几天我在抖音上刷到一个慢慢变老的视频,播放量居然有 30W+,当时就在想这视频 Python 可不可以做?经过一番搜索,我找到了腾讯云的人脸年龄变化 API,上面介绍说只要用户上传一张人脸图片,基于人脸编辑与生成算法,就可以输出一张人脸变老或变年轻的图片,并支持实现人脸不同年龄的变化。

    第一步,在注册账号之后,打开 API 密钥管理页面( https://console.cloud.tencent.com/cam/capi )获取到 SecretId 和 SecretKey。

    第二步,安装腾讯云的 SDK

    在人脸年龄变化 API 中有一个 AgeInfo 参数,它包含了 Age 和 FaceRect 两个属性,其中 FaceRect 属性必须填人脸在照片中基于左上角的 X、Y 坐标和人脸的高度与宽度。所以先要调用人脸检测与分析 API 得到这些数据。

    下面的示例图是在网络图片中截取的。

    示例结果

    在上面已经得到了各个人脸的 X、Y、Width、Height 属性,加上变老的年龄 Age,就可以请求年龄变化 API 了。

    这里需要注意的是 models 模块,人脸检测 models 模块是在 tencentcloud.iai.v20200303 包下,人脸年龄变化的 models 是在 tencentcloud.ft.v20200304 下,两个 models 模块并不兼容。

    示例结果

    最后的视频可以将图片一张一张插入 PPT 幻灯片,点击保存为视频。

    用 Python 制作抖音素材,下一个 30W+ 播放量等着你。

    ⑻ LVQ神经网络的预测---人脸朝向识别,人脸特征向量提取具体的做法

    第一你匿名 第二你没有给分 第三这里面牵扯到模式识别和机器学习的很有技术含量的问题
    我本来想告诉你的 看你没啥诚意 就决定忍了

    ⑼ 人脸识别算法的简介

    人脸识别(Facial Recognition),就是通过视频采集设备获取用户的面部图像,再利用核心的算法对其脸部的五官位置、脸型和角度进行计算分析,进而和自身数据库里已有的范本进行比对,后判断出用户的真实身份。人脸识别技术基于局部特征区域的单训练样本人脸识别方法。第一步,需要对局部区域进行定义;第二步,人脸局部区域特征的提取,依据经过样本训练后得到的变换矩阵将人脸图像向量映射为人脸特征向量;第三步,局部特征选择(可选);后一步是进行分类。分类器多采用组合分类器的形式,每个局部特征 对应一个分类器,后可用投票或线性加权等方式得到终识别结果。 人脸识别综合运用了数字图像/视频处理、模式识别、计算机视觉等多种技术,核心技 术是人脸识别算法。目前人脸识别的算法有 4 种:基于人脸特征点的识别算法、基于整幅 人脸图像的识别算法、基于模板的识别算法、利用神经网络进行识别的算法。
    作为人脸识别的第一步,人脸检测所进行的工作是将人脸从图像背景中检测出来,由于受图像背景、亮度变化以及人的头部姿势等因素影响使人脸检测成为一项复杂研究内容。检测定位:检测是判别一幅图像中是否存在人脸,定位则是给出人脸在图像中的位置。定位后得到的脸部图像信息是测量空间的模式,要进行识别工作,首先要将测量空间中的数据映射到特征空间中。采用主分量分析方法,原理是将一高维向量,通过一个特殊的特征向量矩阵,投影到一个低维的向量空间中,表征为一个低维向量,并且仅仅损失一些次要信息。通过对经过检测和定位过的人脸图像进行特征提取操作可以达到降低图像维数,从而可以减小识别计算量,提高识别精度的作用。人脸识别系统采用基于特征脸的主 成分分析法(PCA),根据一组人脸训练样本构造主元子空间,检测时,将测试图像投影到 主元空间上,得到一组投影系数,再和各已知的人脸图像模式比较,从而得到检测结果。

    阅读全文

    与python视频人脸特征向量提取相关的资料

    热点内容
    php面向对象的程序设计 浏览:504
    数据挖掘算法书籍推荐 浏览:894
    投诉联通用什么app 浏览:150
    web服务器变更ip地址 浏览:954
    java正则表达式验证邮箱 浏览:360
    成熟商务男装下载什么软件app 浏览:609
    加密2h代表长度是多少厘米 浏览:23
    拍卖程序员 浏览:101
    电脑的图片放在哪个文件夹 浏览:274
    unsignedintjava 浏览:216
    编译器下载地址 浏览:42
    什么是面对对象编程 浏览:708
    b站服务器什么时候恢复 浏览:721
    6p相当于安卓机什么水准 浏览:498
    能否给隐藏相册加密 浏览:596
    糖心app改什么名 浏览:824
    战地1控服务器如何部署 浏览:395
    xp还原系统输入命令 浏览:324
    mysql命令行版本 浏览:305
    如何进入itunes找文件夹 浏览:834