1.
卷积神经网络的基本原理以及几个核心概念都介绍完了。接下来我们进入人脸识别的环节,总体分为四步:第一步就是人脸边框检测,第二步就是图像校准,第三步是图像转向量,第四步是向量对比。
第一步人脸边框检测。一张图片上,有可能不止一张脸,而是有多张脸。不管有多少张脸,我们先把符合人脸特征的边框找到,并且把边框给截取出来。
怎么截取?定位。就是根据人脸特征来进行定位,就像刚刚所说的,如果某个位置有一只眼睛,其对称的地方也有一只眼睛,那(机器)就能找到眼部位置,进而也能找到眼角部分。在人脸识别中,边框特征范围非常重要,因为机器依靠这些,就可以划出完整的脸部位置。机器可以参照的主要特征之一是下巴,因为嘴角可以张开或者合闭,但是下巴一般不会有太大变动。第二个是眉毛——找到眼睛了,眉毛就好找了。第三个是鼻梁、鼻尖,上、下嘴唇。
将这些特征都找到后,就要找到脸的边框——可能为方脸、瓜子脸以及圆脸,机器会在脸部边框上生成一些点,之后使用图形边框(如圆边框)去进行对比,发现差了一点,它就会不停调整系数,直到完全符合。
但截取时,脸附近需要留出一定距离,不能完全按照边框去截取,例如,上图中的头发部分,(人)可能戴了帽子,因此机器就不能进行完全截取,而是在周围留出一定空间,再把图片截取出来。如果一张脸有多个点,那就截出多个人脸的边框。
第二步就是校准图像。这个概念其实跟计算机处理数据的思路一致。不管你给机器图片、语音、数字、字符串,或者是别的一些数据,它都会将其转化为计算机可以识别的数据。
人脸校准也是,给机器的头不管是歪头、低头还是仰着头——位置都不正,那就先将脸边框截出来,为每个点进行定位(如下图中的绿点),再根据点定位出一个坐标,跟真正摆正的脸的坐标进行对比,二者相差的角度,就是头歪的角度,将图像反向旋转一下,图像就变正了。
这个效果也是非常有用的,因为它可以减少不必要的误差。机器学习也是这样,当你给它一堆没有处理过的数据进行训练的时候,它最终训练出来的结果不仅有可能是不好的,还有可能是相反的,为你做出的决定都是错误的。比如做商品智能推荐,如果输入的数据没有经过处理,甚至所设置的维度都是没有用的,机器可能会往错误的方向去做推荐。
因此对数据的处理非常重要,要去掉不必要的误差,并将所有的算法都放在真正有用的计算上面——这个思想很重要。
第三个是图像转向量。该图像转向量是怎么生成的?就是卷积、池化操作过后生成的图像向量。向量既有大小又有方向,如果两个向量间的夹角非常小,那这两个向量就非常接近。
通过比较向量间的夹角,可以判断两个目标是否相似。例如,我们需要判断计算机视觉相关的两篇文章是否相似,首先我们要找到两篇文章,将其中一篇文章的关键词提取出来——一个关键词就是一个向量,所有关键词都找出来以后,计算一下向量的方向和大小。另外一篇也进行同样的操作,最后机器再对两组向量进行对比,如果几乎重合,则说明两篇文章的内容非常相似。向量的作用,在机器学习中是非常重要的。
图像转向量之后,就需要把这个向量计算出来,然后和目标函数的向量做对比,再用余项定理求出它们之间的夹角——前面两篇相似文章的对比,就使用了这一定理。这一向量与目标向量不一定要完全重合,夹角在很小的情况下,只要在阈值之内,就可以判断二者相似,而阈值都是人为设置好的。
最后一步就是向量对比。相同的人脸,对应的向量距离小;不同的人脸,向量距离自然就大。
向量计算中的有一个名词——内积,它是对应元素乘积的求和,可以计算出刚才上面所提到的夹角。公式为:
。夹角越小,说明两张人脸越相似。
https://baijiahao.baidu.com/s?id=1609461101481604823&wfr=spider&for=pc
第40月第9天 卷积神经网络 人脸识别
原文地址:https://www.cnblogs.com/javastart/p/12169876.html