深度学习笔记(43) Siamese网络

深度学习笔记(43) Siamese网络


1. Siamese网络

深度学习笔记(42) 人脸识别 提到的函数 d d d的作用:
输入两张人脸,然后告诉它们的相似度

实现这个功能的一个方式就是用Siamese网络

在这里插入图片描述
经常看到这样的卷积网络,输入图片x(1)
然后通过一些列卷积,池化和全连接层
最终得到这样的特征向量(编号1)

有时这个会被送进softmax单元来做分类,但在这里不会这么做
关注的重点是这个向量(编号1),假如它有128个数,它是由网络深层的全连接层计算出来的
要给这128个数命个名字,把它叫做f(x(1))
可以把f(x(1))看作是输入图像x(1)的编码,取这个输入图像(编号2)
在这里是大雄的图片,然后表示成128维的向量


2. 建立人脸识别系统

建立一个人脸识别系统的方法就:

在这里插入图片描述
如果要比较两个图片的话,例如这里的第一张(编号1)和第二张图片(编号2)
要做的就是把第二张图片喂给有同样参数的同样的神经网络
然后得到一个不同的128维的向量(编号3),这个向量代表或者编码第二个图片
要把第二张图片的编码叫做f(x(2))
用x(1)和x(2)仅仅代表两个输入图片
他们没必要非是第一个和第二个训练样本,可以是任意两个图片

最后如果相信这些编码很好地代表了这两个图片,要做的就是定义 d d d
将x(1)和x(2)的距离定义为这两幅图片的编码之差的范数:

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

这里提到的很多观点,都来自于Yaniv Taigman,Ming Yang,Marc’ Aurelio Ranzato,Lior Wolf的论文
他们开发的系统叫做DeepFace


3. 训练网络

不要忘了这两个网络有相同的参数,所以实际要做的就是训练一个网络
它计算得到的编码可以用于函数 d d d,它可以告诉你两张图片是否是同一个人
更准确地说,神经网络的参数定义了一个编码函数f(x(i))

在这里插入图片描述
如果给定输入图像x(i),这个网络会输出x(i)的128维的编码
要做的就是学习参数,使得如果两个图片x(i)和x(j)是同一个人
那么得到的两个编码的距离就小

前面几个幻灯片我都用的是x(1)和x(2),其实训练集里任意一对x(i)和x(j)都可以
相反,如果x(i)和x(j)是不同的人,那么会想让它们之间的编码距离大一点

如果改变这个网络所有层的参数,会得到不同的编码结果
要做的就是用反向传播来改变这些所有的参数,以确保满足这些条件


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(42) 人脸识别
深度学习笔记(41) 候选区域
深度学习笔记(40) YOLO
深度学习笔记(39) Anchor Boxes
深度学习笔记(38) 非极大值抑制


谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氢键H-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值