deeplearning.30人脸识别

人脸验证

输入一张图片,以及某人的ID或者名字,系统要做的是验证是否图片上的人和信息是否匹配。进行识别时,面临的问题是一次学习问题,数据库中一个图片和摄像拍到的图片,进行对比,通过数据库中一个训练样例来进行机器学习。解决方法是学习‘similarity’函数,即输入两张图片,获得这两张图片的差异值,来验证是否两张照片是同一个人。
设置一个超参数τ,差异值小于τ则表示两张图是同一个人。
在这里插入图片描述
所以数据库中每个人只有一张照片,当进行人脸识别时,拍到新的照片与数据库中的照片依次进行比对,使用上述函数,来确定是哪一个人。

Siamese network

使用Siamese network进行实现上述的d(similarity)函数。我们经常看到的是下图所示的卷积网络,输入一个图,经过卷积运算最后得出特征向量。
在这里插入图片描述
在输入一张图,使用该网络,最后得到该图的特征向量,那么我们把此时的两个特征向量命名为f(x1)和f(x2),要判断是否是同一人,d函数=f(x1)-f(x2)的范数。
在这里插入图片描述

Triplet损失

要想得到人脸识别神经网络的一些优质参数,像上文提到的人脸的特征向量,我们需要定义一个三元组损失函数然后应用梯度下降。为什么叫三元组损失,因为是同时看三张图片,一张实验图片,一张相似图片,一张差异很大的图片。我们假设实验图片是A,相似图片是P,差异图片是N。期望是f(A)和f(N)之间的距离很小,即两图片的特征向量差异很小。可以用下式进行表达。
在这里插入图片描述
但是一种特殊情况,当所有图片的特征向量都为0时,也满足上述公式,所以要解决这个问题需要对上述公式进行变形。这里添加的α是一个超参数,术语也叫做间隔。
在这里插入图片描述
现在定义损失函数,基于三元组的,加一个max函数,意思是只要括号内左侧小于0,那么该损失函数的值L就等于0,所以就满足了我们需要绿线部分小于0的要求。

在这里插入图片描述
整个网络的成本函数J定义应为单个三元组损失的总和。
在这里插入图片描述

面部验证与二分类方法

另一种进行人脸验证的方法是选取一对神经网络,如Siamese网络,使其同时计算特征向量,然后将两个特征向量输入到逻辑回归单元,然后进行预测,如果是同一个人则输出1,不是同一个人则输出0.这就转换成了一个二分类问题。
在这里插入图片描述
这里的y是怎么预测的,可以通过sigmoid函数,计算特征向量中,对应元素的差值。并可以增加相应的权重和偏差,当然这两个参数是需要进行训练。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值