跟我学算法-人脸识别(Siamese network) 推导

Siamese network 训练神经网络存在两种形式:

第一种:通过Siamese network 和 三元组损失函数 来训练图片之间的间隔

第二种: 通过Siamese network 和 sigmoid函数来实现二分类的训练

第一种情况:

      

在最后一层使用得是128, 1,

d(x(1), x(2)) = abs(f(x(1) - f(x(2)) 通过对每个维度相减求平方

三元组损失函数

选取目标人物图片和相同人物图片,以及一张不同人物图片。构成两组距离

训练得过程中,使得abs(f(A)- f(P))^ 2+ α < abs(f(A) - f(N)) ^ 2 

loss(A, P, N) = max(abs(f(A)- f(P))^ 2 - abs(f(A) - f(N)) ^ 2  +  α , 0)

在训练时候,一个人至少需要10张图

为了使得训练得时候更加得有难度,我们在挑选图片得时候尽量使得d(A, P)约等于 d(A, N)

第二种方式:
       通过Siamese network + sigmoid函数来实现最终得判别

通过两个图片128维得向量,相减,即求X^2, 进行一次全连接操作,输出结果,根据loss进行训练.

原文地址:https://www.cnblogs.com/my-love-is-python/p/9790136.html