1、人脸识别/AI,2018.09.07,face detection/AI/week report,汇报人:芥末酱,前 言,人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别。它集成了人工智能、机器学习、模型理论、视频图像处理等多样专业技术。随着智能手机的快速普及,可以通过手机镜头在手机上做基于人脸识别的身份注册、认证、登录等,使身份认证进程更安全、方便。由于人脸比指纹等视觉辨识度更高,所以刷脸的应用前景更广阔。,目录/Contents,01,人脸识别.应用,02,人脸图像.预处
2、理,03,人脸图像.特征检测,04,人脸图像.匹配与识别,01,人脸识别.初识,人脸识别分为两大类:一是回答我是谁的问题,即辨认(Identification),二是回答这个人是我吗?即(Verification)。正常人眼的识别准确率是97%,而目前专业的人脸识别研究企业机构可让其精确度高达99%以上,若结合眼纹等多因子验证,准确率能达到99.99%。且以人脸识别技术为核心的系统,能解决人脸识别在现实应用场景中面临的众多问题。,应用场景/Application scenario,02,人脸图像.预处理,预处理是人脸识别过程中的一个重要环节。输入图像由于图像采集环境的不同,如光照明暗程度、以及
3、设备性能的优劣等,往往存有噪声,对比度不够等缺点。因此我们需要对其进行图像预处理。,图像预处理/Image preprocessing,灰度化/Grayscale,灰度变换方法/Gray scale transformation method,rgbImage=imread(Lena.jpg);grayImage=rgb2gray(rgbImage);J1=imadjust(grayImage,0 1,0 1,2.5);J2=imadjust(grayImage,0 1,0 1,1.5);J3=imadjust(grayImage,0 1,0 1,0.67);J4=imadjust(grayI
4、mage,0 1,0 1,0.4);subplot(1,5,1);imshow(J1);title(gamma=2.5);subplot(1,5,2);imshow(J2);title(gamma=1.5);subplot(1,5,3);imshow(grayImage);title(原灰度图像);subplot(1,5,4);imshow(J3);title(gamma=0.67);subplot(1,5,5);imshow(J4);title(gamma=0.4);,左图是一张进行灰度变换的灰度图。先从左上角看,该像素的灰度值为254。然后下一个灰度值143,对其进行映射,得到的值是一个比
5、143少的数。matlab当中常用的灰度变换函数是:imadjust(I,low_in;high_in,low_out;high_out,gamma),几何变换/Geometric transformation,%平移 se=translate(strel(1),20 20);img2=imdilate(img1,se);figure,imshow(img2);imwrite(img2,a2.jpg);,I=imread(baby.bmp);height,width,dim=size(I);tform1=maketform(affine,0,1,0;1,0,0;0,0,1);I1=imtran
6、sform(I,tform1,nearest);,%旋转img3=imrotate(img1,90);figure,imshow(img3);imwrite(img3,a3.jpg);,%缩放img4=imresize(img1,2);figure,imshow(img4);imwrite(img4,a4.jpg);,平移,转置,旋转,缩放,图像增强/Image enhancement,归一化/Normalized,所谓图像归一化,就是通过一系列变换,将待处理的原始图像转换成相应的唯一标准形式(该标准形式图像对平移、旋转、缩放等仿射变换具有不变特性)。,1、什么是归一化?,图像归一化使得图像可
7、以抵抗几何变换的攻击,也就是转换成唯一的标准形式以抵抗仿射变换。,2、为什么归一化?,线性函数归一化(Min-Max scaling)0均值标准化(Z-score standardization),3、数据归一化的方法有哪些?,03,人脸图像.特征检测,所谓人脸检测,就是给定任意一张图片,找到其中是否存在一个或多个人脸,并返回图片中每个人脸的位置和范围。即找出特征点。在模式识别领域,一句重要的话是:“Features matter”。获得好的特征是识别成功的关键。,深度学习.特征点/DeepLearning,特征点检测.算法 在人脸检测的基础上,根据输入的人脸图像,自动定位出面部关键特征点,如
8、眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮廓点等,输入:人脸外观,输出:人脸特征点集合。,人脸对齐.算法以看作在一张人脸图像搜索人脸预先定义的点(也叫人脸形状),通常从一个粗估计的形状开始,然后通过迭代来细化形状的估计。方法包括:AAM(Active Appearnce Model)ASM(Active Shape Model),特征点定位.算法利用CNN,由粗到细,实现人脸关键点的精确定位。一般网络结构分为3层:level 1、level 2、level 3。每层都包含多个独立的CNN模型。,特征点提取.算法需要一个特征提取器(predictor),构建特征提取器可以训练模型。要下载dlib提
9、供的已经训练好的关键点提取模型。,特征点检测算法/Base on CNN,人脸对齐算法/Face alignment,仿射变换以求人脸对齐,import cv2import numpy as npfrom matplotlib import pyplot as plt img=cv2.imread(lena.jpg,1)rows,cols,channel=img.shape/仿射函数,将3个原图点坐标,和得到结果图的3个点坐标,生成参数带入函数得到结果pts1=np.float32(50,50,200,50,50,200)pts2=np.float32(10,100,200,50,100,25
10、0)M=cv2.getAffineTransform(pts1,pts2)dst=cv2.warpAffine(img,M,(cols,rows)plt.subplot(121),plt.imshow(img),plt.title(Input)plt.subplot(122),plt.imshow(dst),plt.title(Output)plt.show(),特征点定位算法/Feature location,F1定位所有的5个关键点,EN1用于定位:左眼+右眼+鼻子 三个特征点,NM1用于定位:左嘴角+右嘴角+鼻子 三个特征点。,level1粗定位,包含3个CNN,每两个CNN负责预测同一
11、个关键点,然后取平均得到这一点的精确预测。输入为在level1输出的关键点周围的局部裁剪图像。,level2精确定位,包含10个CNN,level3更精确定位,结构和作用与level2一致,10个CNN,两两平均,只是输入的图像是在leve2关键点基础上做了更小的裁剪。,特征提取算法/Feature extraction,首先,需要一个特征提取器(predictor),构建特征提取器可以训练模型。要下载dlib提供的已经训练好的关键点提取模型。因为我的人脸图片是不同角度的,所以不一定能够检测到人脸,所以当检测不到人脸时,依次旋转图片60度,再次检测,直到能够检测到人脸为止,如果旋转了360度还
12、是检测不到人脸的话,那么认为该图片中不存在人脸。,关键点提取,提取-保存,保存68个关键点,对照着左图,比如说想获取鼻尖的坐标,那么横坐标就是shapes0.part30.x(),其余的类似。,特征提取算法/Feature extraction,#include#include#include#include#include#include using namespace dlib;using namespace std;int main()trycv:VideoCapture cap(0);/.先初始化,打开视频if(!cap.isOpened()cerr Unable to connect
13、 to camera endl;return 1;,关键点提取,frontal_face_detector detector=get_frontal_face_detector();shape_predictor pose_model;deserialize(shape_predictor_68_face_landmarks.dat)pose_model;while(cv:waitKey(30)!=27)/Grab a framecv:Mat temp;cap temp;cv_image cimg(temp);/Detect faces std:vector faces=detector(ci
14、mg);/Find the pose of each face.std:vector shapes;for(unsigned long i=0;i faces.size();+i)shapes.push_back(pose_model(cimg,facesi);if(!shapes.empty()for(int i=0;i 68;i+)circle(temp,cvPoint(shapes0.part(i).x(),shapes0.part(i).y(),3,cv:Scalar(0,0,255),-1);/shapes0.part(i).x();/68个/Display it all on th
15、e screenimshow(Dlib特征点,temp);,04,人脸图像.匹配与识别,提取的人脸图像的特征数据与数据库中存储的特征模板进行搜索匹配,通过设定一个阈值,当相似度超过这一阈值,则把匹配得到的结果输出。根据相似程度对人脸的身份信息进行判断。这一过程又分为两类:一类是确认(1:1)另一类是辨认(1:N)。,人脸识别/Face recognition,通过计算特征向量之间的欧氏距离来得到人脸相似程度。在LFW上面取得了当时最好的成绩,识别率为99.63%。,原理,1.先导入模型参数 2.然后导入两张图片,分别获取其经过模型后得到的128维特征向量 3.最后计算两个向量的欧氏距离,步骤,
16、欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。,计算欧氏距离,欧氏距离/Euclidean Distance,精确度比较/Accuracy Comparison,SeetaFace由中科院计算所山世光带领研究组研发。代码基于C+实现,不依赖第三方库。但存在缺陷:1)人脸检测速度很慢 无法达到实时 2)人脸对齐模块其实不是很前沿 因为只有五个点3)实验过demo,相似度基本没有达到0.8,DeepFace在使用前需要进行3D对齐处理。在训练的时没有进行对齐,采用了通过对图片进行翻转,切片等处理计算出对应的特征向量,生成的特征向量拼接成高维向量并采用PCA再次进行降维。,Face+人脸特征点检测最好的实现之一就是Face+.他们在300 Faces in-the-Wild Landmark Detection Challenge,2013取得了冠军。他们提供了一个易用的API。,FaceNet直接进行端对端学习一个从图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1