有一些算法分析眼睛,鼻子,颧骨,下巴的相对位置,尺寸,形状.
其他算法对脸进行归一化,然后压缩脸部数据,只保存对人脸识别有用的数据
识别算法可以分为2种,几何(geometric),用于查看显著的特征,光学测量(photometric),是一种统计方法,将图片蒸馏成特征值,与模板的特征值比较用于减小方差.也可以把识别算法分为整体(holistic)模型和基于特征(feature-based)模型
常用的识别算法包括:
PCA(principal component analysis,主成分分析),使用eigen face(特征脸),opencv支持
LDA(linear discriminant analysis,线性鉴别分析),
使用Fisher face(鱼面算法),opencv支持
Fisher face与Eigen face思路差不多,都是从整体上对图像信息做主成分分析.
不同的是,Fisher face认为同一个人由于光照和角度带来的差异往往要大于不同人之间的差异,而Eigen face单纯的提取主成分可能得到的是同一个类别不同光照条件的特征.
Fisher face试图最大化类间散度同时最小化类内散度.算法实现上则是首先PCA做初步筛选,然后以类间散度和类内散度为准则做LDA(Linear Discriminant Analysis,线性判别分析).
elastic bunch graph matching,弹性束图匹配
hidden Markov model,隐马尔科夫模型
multilinear subspace learning,多线性子空间学习,使用张量(tensor)表示
neuronal motivated dynamic link matching,神经元驱动的动态链接匹配
不会像其他技术一样会受到光照的影响,
在一定的可视角度内都可以分辨出一张脸
FaceCept3D
将人皮肤上显而易见的线条,模式,斑点转换到数学空间中
增加皮肤纹理分析,人脸识别的表现提高了20-25个百分点
Diego Socolinsky and Andrea Selinger (2004),使用了低敏感度,低分辨率的铁电(ferroelectric)电子传感器,具备获取长波热红外(longwave thermal infrared,LWIR)的能力.室内的测试结果,纯视觉检测有97.05%,LWIR有93.93%,融合后准确率为98.40%
dlib
opencv
FaceRecognizer(eigen face, fisher face, haar),实例
DeepFaceLab,换脸模型
DeepFace,奠基之作: 120M个参数, 非官方实现
DeepId,最强,目前已经三代,非官方实现
FaceNet,出自google
1 转成灰度度,提取hog特征.
2 脸部的不同姿势
脸部特征点估计,face landmark estimation,找到脸部的68个特定位置(landmarks),如:下巴的顶部,眼睛的外轮廓,眉毛的内部轮廓.
拿到特征点图后,对图像进行旋转,缩放,错切(shear),使得眼睛和嘴更靠近中心
3 对脸部编码
可以采用人类可以感知的方式(眼睛的颜色,耳朵的尺寸,鼻子的长度),将库中的人脸照片按照这种方式编码,拿到一张未知的照片,与库中的照片进行对比,找到特征最接近的图片,当库存照片数量很大时,查找过程会很久.
google在facenet中提出的128特征量作为脸部的描述方式,与词向量的训练方式类似.
4 根据脸向量找到最接近的人
face_locations = face_recognition.face_locations(face_image, number_of_times_to_upsample=2)
face_encodings = face_recognition.face_encodings(face_image, known_face_locations=face_locations, num_jitters=100)
results = face_recognition.compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.5)
深度相机对比
intel realsense
价格:1000~2000
github,官网
应用
3D检测,
AVOD,
OpenPTrack,Real-time 3D Pose Tracking,出自UCLA