CV《物体识别与检测4 - 人脸验证》

本文是根据Andrew Ng的深度学习视频学习,自己总结的。这一系列先只学习关键技术和设计,具体的实例等下一期进行。

一:人脸验证
人脸识别包括人脸验证了人脸检测,人脸检测也属于物体检测范围,所以就不讲这个了,现在来看看人脸验证的实现。也就是在图像中识别到了人脸还需要知道是谁的脸,用于身份认证和识别系统。

接下来我就一起看看如何实现识别身份识别的人脸验证的模型系统。

二:one-shot设计
假如你的公司有100个人,你想建立刷脸门禁的系统,你的做法是什么呢?
A是你们公司的员工,刷脸可以进入,B不是公司员工,刷脸不可进入。
一个初步的设计就是建立一个卷积模型,输出一个100维度的one-shot向量,每次门禁的时候都会计算出这个人脸最后的one-sot向量,期望是如果是公司员工,会落入某个值是1,不是公司员工,所有输出都是接近0,这个想法也很朴素,但是却存在巨大的问题就是,要是有员工离职和入职的情况,那岂不是意味着每次都要更改和重新训练该模型,这个就是个灾难性的事件了。

三:相似度方法
现在换个思路,不用one-shot向量的办法,我们可以建立一个每一个员工的人脸数据库,下一次有员工入职,也给他建立一个类似的数据,有员工离职就是直接删除掉该员工的数据信息,当门禁刷脸的时候,直接拿员工的脸信息和所有的员工的信息作对比,如果找到最为相似的数据,就是验证到了某个员工的信息,如果找不到任何一个相似的数据,就不是该公司员工。这个方法的鲁棒性就很好。

那么怎么建立每个员工的人脸数据呢?我们用一个网络进行训练,输出一个128维度的向量,作为该员工的人脸信息的映射F(x)。

定义一个计算相似度的函数,计算两个数据之间的相似度。
在这里插入图片描述

这样一来,每次人脸刷卡的时候,就是用这个方式将用户与所有使用户的信息做对比,找出最小的那个类别。

对于两个不同的输入,运行相同的卷积神经网络,然后使用D函数比较它们,这一般叫做 Siamese网络架构。
在这里插入图片描述

那么怎么定义损失函数呢?有两个方法,下面将描述。

四:三元组损失法(Triplet loss)
训练数据集内每个样本都是一个三元组,分别是(A,P,N),A就是某个用户的本人人脸图像,P就是该用户的另一个图像,代表了用户自己,N就是别人的人脸图像,因此我们定义损失函数是:
在这里插入图片描述

这个情况下,会忽略一个问题,要是网络都是输出F(X)都是0,也能满足条件,且这个时候梯度下降可能会失效,参数得不到更新。这时候,我们需要更加严格一些的要求,用到了SVM的思路,给一个Margin,有一个缓冲区间。
在这里插入图片描述

这个时候,需要让Loss小于等于0,就是意思是同一个人的人脸数据的相似度要小于不同人的人脸相似度的,严格来说,不仅需要小,还需要更加小到一个范围。尽量使得数据区分度更大一些。修改这个目标,也就是,这个不能是刚好小于等于 0,应该是比 0 还要小,所以这个应该小于一个−a值。这个是margin的思想还是很厉害的。
因此得到损失函数:
在这里插入图片描述

数据集需要每个人提供多个人脸数据。

五:二分类损失法
除了三元组的损失方法,这里介绍另外一个思路,就是选取一对神经网络,选取 Siamese 网络,使其同时计算这些嵌入,比如说 还是得到一个128 维的嵌入,或者更高维,然后将其输入到逻辑回归单元,然后进行预测,如果是相同的人,那么输出是 1,若是不同的人,输出是 0。这就把人脸识别问题转换为一个二分类问题,训练这种系统时可以替换 Triplet loss 的方法。
如下图所示:
在这里插入图片描述

这个问题就变成了二分类方法
因此数据集合就变成了任意图像的二元组(X1,X2),标签是1或者0。1代表是一个人的人脸,0不是一个人人脸。计算的时候先得到(F(X1),F(X2)),然后再根据两个向量数据,通过损失计算输出y,比如下面的式子的形式。
在这里插入图片描述

同一个人人脸图像最后的损失尽可能是0,经过sigmoid函数后输出1,不是同一个人的人脸损失尽可能大,经过sigmoid函数后输出是0。这个b值就是为了防止上述说过的margin思想,避免出现F函数输出全是0的情况。

损失函数还可以求平方差,得到均方差的形式。

数据集同样需要每个人提供多个人脸数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值