face recognition
1 人脸识别方法
1.1 tradtional
有一些算法分析眼睛,鼻子,颧骨,下巴的相对位置,尺寸,形状.
其他的处理方式将脸部图像进行标准化处理,并随后提取面部特征信息,仅保留有助于人脸识别的数据
识别算法主要包含两类:一种是几何(geometric)方法,在分析显著的视觉特征方面具有优势;另一种是光度测量(photometric)技术,在统计数据分析方面表现出色。同样地,识别算法可分为整体(holistic)模型和基于特征(feature-based)模型
常用的识别算法包括:
PCA(principal components analysis,主成分分析), applied to eigenface(eigenface), opencv is supported by
LDA(线性判别式分析, 线性鉴别分析), 基于OpenCV的支持, 使用基于鱼人识别算法(鱼面算法)
Fisher face与Eigen face方法基本相同,都是在全局地对图像数据进行主成分分析。
特别之处在于,在Fisher Face方法中认为同一人的面部图像在不同的光照条件下或从不同角度拍摄时的差异通常显著高于不同面部图像之间的差异。相比之下,在Eigenface方法中单纯提取主成分可能会导致仅能反映同一类别人群在不同光照条件下的特征。
Fisher face旨在增强类间差异并抑制同类间的分散程度.在算法设计方面,主要采用主成分分析法用于数据预处理阶段,随后基于两类间的差异性和内部一致性构建分类器模型,即通过线性判别分析技术实现目标分类任务.
基于弹性的分段图匹配技术弹性束图匹配
hidden Markov model,隐马尔科夫模型
基于张量的多维子空间学习方法能够有效建模数据之间的复杂关系;该方法通过张量表示高阶结构信息;该模型利用多线性映射提取特征之间的潜在关联
neuronal motivated dynamic link matching,神经元驱动的动态链接匹配
1.2 3-D识别
避免像其他技术那样容易受到光照影响,在特定视角下都能清晰辨识一个人面。
1.3 皮肤纹理分析
将人皮肤上显而易见的线条,模式,斑点转换到数学空间中
增加皮肤纹理分析,人脸识别的表现提高了20-25个百分点
1.4 混合技术
1.5热成像摄像机
Diego Socolinsky和Andrea Selinger(2004年)采用了具有低灵敏度和低分辨率特性的铁电电子传感器,并具备捕获长波热红外信号的能力。室内实验结果表明:纯视觉检测达到97.05%,长波热红外(LWIR)检测达到93.93%,两种方法融合后的准确率则提升至98.40%。
2 框架
2.1传统模型
该系统基于OpenCV平台实现了基于Eigen、Fisher和Haar特征的面部识别功能,并提供了一个具体的实例供参考
2.2 深度模型
DeepFaceLab,换脸模型
DeepFace represents a pioneering endeavor in facial recognition technology: it features 120 million parameters and provides a non-official implementation accessible via GitHub.
DeepId 作为顶级品牌,在经历了三个版本的迭代后依然保持卓越的表现。[非官方实现]:此链接指向 DeepId 的非官方实现版本。
FaceNet,出自google
3 实现
人脸识别流程
- 识别图片中的所有面部
- 精确定位图中每一幅面部表情,并且即便光线不足、拍摄角度各异的情况下
- 识别图片中的面部细节信息,如眼睛大小、脸部显示出来的年龄等
- 依据识别出的面部细节信息判断属于哪一个人
face_recognition
1 转成灰度度,提取hog特征.

2 不同面部姿势研究涉及脸部特征点估计技术(face landmark estimation),旨在准确识别出面部68个关键点位置(landmarks),例如:下巴顶端区域、眼睛外边界轮廓以及眉毛内部轮廓的位置。

在获得特征点图之后,在进行一系列几何变换操作时(包括旋转处理、尺度调整以及剪切运算),通过这些变换使眼睛和嘴唇更加集中于图像中心区域。
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)
<!-- tolerance,用于判断两张脸的距离,一般取0.6,当距离小于0.6时,认为是同一张脸 -->
results = face_recognition.compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.5)
AI写代码
4 深度相机
intel realsense
价格区间为1,000至2,000
github, 官网
应用场景
