人脸识别之facenet原理

facenet是谷歌提出的一种新的人脸识别的方法,该方法在LFW数据集上的准确度已经达到了99.6%,目前是该数据集上检测的最好记录。关于facenet的官方介绍看链接论文地址 。 

facenet 不同于传统的CNN方法。传统的CNN先通过网络进行处理,然后将处理后的结构利用SVM方法进行分类。该方法是直接通过学习将特征变为欧式平面上的一个点,然后通过比较点之间的距离来进行判断。

在模型的训练中,采用了一个被称为triple  loss的方法进行,其具体如下:也就是说对于组内的距离要尽可能的小,对于组间的距离要尽可能的大。

根据上述原理定义了对应的损失函数为:

学习的目标就是最小化上述损失函数,对于上述函数要找出所有的三元组合是一个很大的工作量。所以在实现的过程中,我们在positive中选择一个最不像的,在negative中选择一个最像的(因为这样算出的损失距离是最大的距离,优化这样的损失函数即可,当采用这种方式算出来的值都能达到要求时,其他更小的也能达到要求)。

采用上述方法选择三元组时也存在一个弊端,在选取最近和最远的元素时也需要遍历所有的样本,遍历所有的样本也有很大的工作量。对此,可以采用分批查找的方式。因为图片的执行是分批的,我们可以在每批图片处理的时候找出对应的符合条件的positive和negative的样本。为了保证该方法选出的数据合理。在生成对应的批图片时保证每个人平均有40张图片并且随机加入反例进去(不知道为啥)。同时在选取negative时遵循semi-hard约束条件:

网路结构:

  对于facennet的执行方式如下:

 从上图可以看出网络结构是一个黑盒的过程。目前使用的主要是两种网络结构,一种是Zelier&Fefgus提出的网络结构,该结构主要有22层,140M参数。另一种是基于谷歌的Inception模型为基础的结构(下一篇的代码是基于该网络模型进行的)。该模型的参数较小。通过减小Inception模型的参数和大小生成了NNS1,NNS2的网络结构。由于NNS1和NNS2的参数较小,可以在移动端使用。下图给出了第一种网路结构。

 

 

对于实验中参数的影响在这里就不介绍了,可以自己看文献了解。

注意:文献中说明了网络最终输出的是128维的向量,并且区分是否为同一人的阀值为1.1

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值