赞
踩
重磅干货,第一时间送达
目前我们在互联网和论文中看到的大多数面部识别算法都是以图像为基础进行处理。这些方法在检测和识别来自摄像头的图像、或视频流各帧中的人脸时效果很好。但是,他们无法区分现实生活中的人脸和照片上的人脸,因为这些算法处理的是2D帧。
现在,让我们想象一下,如果我们想要实现一个面部识别开门器。该系统可以很好地区分已知面孔和未知面孔,保证只有特定人员才能访问。尽管如此,任意一个陌生人只要拥有他们的照片就很容易进入该区域,这时3D检测器(类似于Apple的FaceID)就被纳入考虑范围。但是,如果我们没有3D探测器怎么办?
奥巴马脸部照片识别案例❌
本文旨在实现一种基于眨眼检测的面部活动检测算法来阻止照片的使用。该算法通过网络摄像头实时工作,并且仅在眨眼时才显示该人的姓名。程序流程如下:
1.对网络摄像头生成的每一帧图像,进行面部检测。
2.对于每个检测到的脸部区域,进行眼睛检测。
3.对于检测到的每只眼睛,进行眨眼检测。
4.如果在某个时刻检测到眼睛合上后又睁开了,则认为该人眨了眨眼,程序将显示他的名字(对于面部识别开门器,我们将授权该人进入)。
为了检测和识别面部,我们需要安装face_recognition库,该库提供了非常棒的深度学习算法来查找和识别图像中的人脸。特别是face_locations,face_encodings和compare_faces函数是3个最常用的函数。face_locations函数有两种可使用两种方法进行人脸检测:梯度方向的Histrogram(HOG)和Convolutional神经网络(CNN)。由于时间限制,选择了HOG方法。face_encodings函数是一个预训练的卷积神经网络,能够将图像编码为128个特征的向量。这些向量的信息足够以区分两个不同的人。最后,使用compare_faces计算两个嵌入向量之间的距离。它将允许算法识别从摄像头帧中提取的面部,并将其嵌入矢量与我们数据集中的所有编码面部进行比较。最接近的向量对应于同一个人。
1.已知的人脸数据集编码
就我们的算法而言,它能够识别我们自己和巴拉克·奥巴马。分别选择了约10张图片。以下是用于处理和编码已知面孔数据库的代码。def process_and_encode(images):known_encodings = []known_names = []print("[LOG] Encoding dataset ...")for image_path in tqdm(images):# Load imageimage = cv2.imread(image_path)# Convert it from BGR to RGBimage &
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。