面试问题:2018年华中赛(人脸识别算法的研究)

1. 赛题背景

本问题的识别对象是明星,且要在一张有着数十人的图片中识别出这三个明星。

2. 系统流程图初步设计

面试问题:2018年华中赛(人脸识别算法的研究)_第1张图片

3. 面试问题

3.1 人脸数据库是如何构建的?构建时需要注意些什么?

由于本问题的识别对象是明星,且要在一张有着数十人的图片中识别出这三个明星。因此我对这三个明星分别构建了三个人脸数据库,在每个人对应的人脸数据库中,我放入了三十多张该明星的正脸图,且要保证,每一张图片中只能出现这个明星的一个人的人脸。

3.2 如何得到人脸的68个特征点的坐标值的?

利用Python语言,导入dlib库和OpenCV,加载预训练模型shape_predictor_ 68_face_landmarks.dat后就可以得到人脸上的68个特征点的坐标值。
面试问题:2018年华中赛(人脸识别算法的研究)_第2张图片
面试问题:2018年华中赛(人脸识别算法的研究)_第3张图片
面试问题:2018年华中赛(人脸识别算法的研究)_第4张图片

3.3 什么是人脸的五官形状指数?

人脸的五官形状指数包括脸型指数、鼻型指数、眼型指数、唇型指数、眉毛高度指数。这是我们查阅相关文献得到的。

3.4 如何计算出人脸的五官形状指数?

通过68个特征点的坐标值可以计算出人脸的五官形状指数,其中的计算公式为:脸型指数=头长/脸宽、鼻型指数=鼻子长度/鼻子宽度、眼型指数=眼睛长度/眼睛宽度、唇形指数=嘴唇长度/嘴唇宽度、眉毛高度指数=眉中到眼睑中心长度/上庭。
计算方法是:将关键坐标点对应的坐标值带入对应的指数计算公式即可计算出相应指数。

3.5 怎么计算待识别的人脸的五官形状指数和人脸数据库中的人脸的平均五官形状指数的相关程度?

根据空间向量模型,来计算待识别的人脸的五官形状指数和人脸数据库中的人脸的平均五官形状指数的相关程度。
首先定义一个二维矩阵,矩阵的行由待识别的人脸和人脸数据库中的人脸组成,矩阵的列由人脸的五个五官指数名称组成。然后将待识别人脸的五官形状指数和人脸数据库中的平均五官形状指数填入矩阵中。然后分别计算各个待识别人脸的行向量和人脸数据库的行向量的余弦值。此余弦值就代表了待识别的人脸的五官形状指数和人脸数据库中的人脸的平均五官形状指数的相关程度。
如果两个向量的关系越接近,则他们的余弦值就越大,也就代表待识别人脸和数据库中的人脸的相关程度越高。

3.6 为什么要通过人脸的五官形状指数来计算相关程度,直接用68个特征点的坐标值不可以吗?

因为68个特征点的坐标值不是一个规范值,它们可能出现在图片中的任何位置,无法做到标准化。因此需要将这68个特征点的坐标值进行处理,得到一个标准的可以比较的值,例如,我们选择的就是将它们标准化为人脸的五官形状指数。

3.7 最后如何得到匹配结果?

举例来说。向系统中输入一张图片,图片中有若干个人脸,首先计算出人脸数据库中的所有人的人脸和这个图片中所有待识别人脸的相关程度,然后对每个待识别人脸都根据相关程度把人脸数据库中的人脸降序排列,再人为设定一个阈值,大于此阈值且为最高值的人脸数据库中的人脸作为待识别人脸的最佳匹配人脸,若人脸数据库中的所有人的人脸与待识别人脸的相关程度均小于阈值,则认为该待识别人脸不在设定好的人脸数据库中,无法识别。至此,该系统就实现了识别人脸的功能。

你可能感兴趣的:(面试,人脸识别)