Siamese 意为 暹罗猫 孪生 双子
也恰好描述了这个网络的结构
1孪生 是指这个网络结构中的Network_1和Network_2
这两个网络的结构一般是相同的,并且参数是共享的 即参数是一致的。
还有一种网络叫伪孪生网络 直观理解就是左右两边的网络结构是不同的。
2在图中的网络中 左右两个网络的作用是用于提取输入图片的特征。特征提取器
比如在人脸领域,输入两个人的人脸图片信息,两个网络分别提取这两个人脸图片中不同部分。
3 我们通过使用两个网络 提取出来了两个图片的特征 接下来我们计算特征之间的差距distance。
之后返回网络的输出结果 :这两张图片是否属于同一个人。
4关于这个网络结构的损失函数 也可理解为 计算distance的地方
我们设定:
Gw(PT) = Gw(X1,X2) 指两个特征上属于同一个人的误差
Gw(PF) = Gw(X1,X2) 指两个特征上不属于同一个人的误差
损失函数
Loss = Gw(PT) - Gw(PF) + α
我们要使损失函数最小
相当于使Gw(PT) 尽可能的小 可以理解为 这个网络 识别两张图片属于 一个人 能力 尽可能的厉害/准确
相当于使Gw(PF)尽可能的大(因为有负号) 可以理解为 这个网络 区分/判别两张图片不属于 一个人 能力 尽可能的厉害/准确
其中 参数 α 是为了避免损失函数的值为0 而设定的
因为在损失函数为0 的时候 优化过程中 求导求梯度会出现问题
接下来要说的是在网络上了解到项目中的可行步骤
1我们在公开的数据集上训练我们的这个网络,使其有较好的特征提取能力
2假如项目中要对一个公司的人进行人脸识别。我们可以使用训练好的网络对公司的每一个员工人脸信息使用网络进行特征提取。并保存起来。
3当进行人脸识别的时候,我们使用网络对需判别的人脸进行特征提取,把提取出来的特征和我们库中保存的特征进行比对。
并输出结果