大家好,欢迎大家来到本节课。本次课给大家分享人脸识别的算法。从这里开始,我们就先看一下人脸识别算法所面临的挑战吧。
●人脸验证( Face Identifcation)。就是检测A、B是否属于同一个人。只需要计算向量之间的距离,设定合适的报警阈值( threshold )即可。
●人脸识别( Face Recognition)。这个应用是最多的,给定一-张图片,检测数据库中与之最相似的人脸。显然可以被转换为一个求距离的最近邻问题。
●人脸聚类( Face Clustering) 。在数据库中对人脸进行聚类,直接用K-Means即可。
看一下之前提出的人脸是被算法deepface。
其实,这个就类似于聚类算法中的,缩小类内距离,扩大类间距离。论文中指出,把阈值设置为1.1时,对人脸的分类效果是最好的。
如果把阈值设置为1.1,那么在第一行的两张图片是同一个人,第二行的两张图片也是同一个人,第三行的两张图片也是同一个人。
如果竖着看,因为两张图片之间的距离阈值都大于1.1,所以被判断为不是同一个人。
算法的整个训练过程就在于此。
算法模型的整体结构是什么样的呢?
算法模型的结构如下:主要是由一个batch输入层和一个深度卷积神经网络组成,这个深度卷积神经网路指的是用于提取特征的Googlenet,然后进行L2归一化,然后得到的是一个嵌入的人脸特征,最后欧式距离计算人脸特征之间的差异,将这些差异组成一个三元组损失函数,就可以利用这个损失函数来训练这个神经网络模型。
如果这么细分为五个步骤,其实还是很好理解的。
我们通过一张图来看一下,绿色的范围指的是同一类,到了红色的范围,就不是同一类
这其实是这个论文里的诠释
论文中指出,这里需要最小化anchor与正样本之间的距离,最大化anchor与负样本之间的距离。其实他的核心就是缩小类内距离,扩大类间距离。
从PPT下方我们就可以看出,加入了α之后,anchor与负样本之间的距离变大了,这就使得anchor与正样本之间的距离缩小了。
在模型算法训练好之后,实际当中,算法是怎么进行对比的呢?
其实是这样的,输入一张人脸的图片,同样是经过算法进行特征提取,使用得到的特征向量进行计算欧式距离,判断是不是同一人。
这就是使用的一个深度卷积神经网络,这个网络使用了1*1,3*3,7*7的卷积核,这也是这篇文章的创新之一,这几个卷积分别有他们的作用,作者通过对卷积的改进,起到减少参数量的作用,这样是可以提高运算速度的。
这个表格,说明了每个inception模块的参数设置,这个其实是和下面这个网络是一样的,具体是不是一样的,其实还是要去对照一下的,
这张图的网络结构比起上一张来看可以更加直观的理解这个模型。
人脸聚类是什么呢?
人脸聚类就是将提取到相近的特征的图片都聚集在一起,这和单纯的人脸验证相比,效果更佳惊人。从聚类效果来看,这对头部姿势变化,年龄阶段不同,遮挡不同,光照条件变化,人脸表情变化具有鲁棒性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。