one-shot learning、Siamese网络、Triplet loss、面部验证和二分类

目录

1.one-shot learning(一次学习)

one-shot learning就是对某一类别只提供一个或者少量的训练样本。

而很小的训练集不足以训练一个稳健的神经网络。

为了解决这个问题,需要首先训练一个 similarity function:d(img1,img2),用于表示两张图片的差异程度

d(img1,img2)<=,我们认为两张图一样(为设定的阈值)。

待识别图片分别和数据库中的人脸图片进行上述这样一个判断,就能达到人脸识别的效果。

2.Siamese网络

one-shot learning、Siamese网络、Triplet loss、面部验证和二分类_第1张图片

该神经网络定义了一个编码函数(encoding):,给定输入为的话。

如果图片是同一个人,d(img1,img2)=要尽可能得小

我们需要做的就是通过反向传播去不断调整网络的参数。

3.Triplet loss(三元组损失函数)

该函数的定义基于anchor、positive、negative三张图片(简写为A,P,N),A和P相像,A和N不相像。

one-shot learning、Siamese网络、Triplet loss、面部验证和二分类_第2张图片

定义loss 函数,α为间隔参数,>0(为了防止所有图像的f都是0向量)。

定义cost 函数,使用该成本函数进行梯度下降,来训练你的网络。

如何选择训练的三元组(A,P,N)?

如果随机选择的话,d(A,P)+α<=d(A,N)很容易满足,这样网络很难从中学到什么。

所以要选择那些难训练的(A,P,N),比如d(A,P)≈d(A,N)这种情况。

4.面部验证和二分类(face verification and binary classification)

将人脸验证转换为二分类问题。

输入一对图片,输入0或1。最后一个单元可以是逻辑回归单元。

one-shot learning、Siamese网络、Triplet loss、面部验证和二分类_第3张图片

人脸验证vs人脸识别:人脸验证是提供人脸图片和name/ID,判断是否一致。人脸识别是提供人脸图片,输出name/ID。

你可能感兴趣的:(深度学习,Siamese网络,Triplet,loss,one-shot,人脸识别)