人脸识别入门学习(一):人脸识别的一些基本概念

时间:2024-05-23 18:27:51

        人脸识别是一门非常非常庞杂的理论系统,我们需要由浅到深地学习,逐步构建人脸识别理论体系,学习过程任重道远。人脸识别的概念不用多说了,在生活中已经十分常见了,首先对人脸识别的一些最基础的概念做一些解释。

人脸识别的基本步骤?

  1. 在图像上选取一个(矩阵)区域作为观察窗口
  2. 提取窗口中的一些特征来对这个窗口进行描述
  3. 根据特征描述来判断该窗口是否框住了一张人脸

        不断重复上面三个步骤,将图像中所有窗口,从左上到右下依次遍历(滑动窗口),直到找到人脸或者遍历完所有窗口。

 

如何选择窗口的大小?

        选取的窗口大小应该与人脸的大小接近一致,窗口基本贴合人脸的外轮廓。但不同图像中人脸的大小不同,对应的窗口大小也不同。一种思路是分别用不同大小的窗口来检查图像,但这种方法很低效。换一种角度看,既然改变窗口大小很低效,那么我们可以通过改变图像大小,对人脸进行缩放,来适应固定大小的窗口。称之为图像金字塔

人脸识别入门学习(一):人脸识别的一些基本概念

 

        通过构建图像金字塔,并允许窗口与人脸的贴合有一定的误差,我们就可以检测不同位置、不同大小的人脸了。

 

如何提取特征并描述一个窗口?

        从人的视觉上看,一张图像的所有信息都可以很直观的呈现出来。但机器没有视觉,他所感知到的就是图像区域各个像素点颜色值排列组成的矩阵,是密密麻麻的0和1,所以机器从一个窗口中提取出来的数据也是01串,我们对这些密密麻麻的01串进行一系列复杂的计算之后,将其抽象为特征向量,即这个窗口的特征。总而言之,特征提取过程就是从原始的输入数据变换到对应的特征向量的过程。

 

如何用特征来判断窗口是否包含人脸?

        我们将窗口划分为两类:一类是包含人脸的窗口,称之为人脸窗口;另一类是不包含人脸的窗口,称之为非人脸窗口。而最终判断的过程就是将图像中所有窗口不断分类的过程。 由于窗口中提取的特征是由数值构成的特征向量,所以我们是通过可计算的数学模型来对特征进行处理,这个数学模型我们称之为分类器。分类器以特征向量为输入,通过一系列的计算,输出这个窗口对应的类别。可以给两个类别定义成标签,人脸窗口为1,非人脸窗口为-1。

        总而言之,我们通过将从窗口中的提取到的特征向量,送入分类器中进行计算,得到该窗口的标签,来判断该窗口是否包含人脸。

 

如何构建分类器?

        考虑一个最简单的分类器:将特征向量每一维上的数相加,得到一个sum值,如果这个sum大于某个数T,那么就表示这个窗口中包含着人脸;若小于T,则表示这个窗口中不包含人脸。

        这个T就是分类器的参数,分类器可以有一个或者多个参数,这些参数共同决定了机器对窗口的判断。那么我们如何来选择这个参数呢?机器并不懂人类的需求,我们也无法确定怎么选参数才能使判断的正确率更高。那么一个可行的方法就是:

        给机器一个训练集,其中包括了许多窗口和其对应的标签,机器通过整理学习这些带着“答案”的窗口的特征向量,不断调整自身的参数值来使训练成绩更高,就像做练习题一样。然后我们再给机器一个测试集,包括了许多不带标签的窗口,让机器使用之前通过测试集所训练出来的参数来对这些窗口进行判断,也就是“考试”。如果考试成绩够了,例如判断正确率大于80%,那么我们就认为这个参数已经足够优了,随即终止训练;若是训练时间过于长了,或者机器认为自己的“成绩”无法再通过训练来提高,那么这时我们也应该终止训练。

        总而言之,构建分类器的方法就是:设定目标,向机器输入训练集和测试集来让机器自发地调整参数,从而达到我们想要的效果。

        至此,人脸识别所需的几大最基本的要素都已构建完成。但如此简单的人脸识别系统效率非常低,需要做一些突破,我们之后再讲。