Siamese 网络(Siamese network)

本文介绍了Siamese网络在人脸识别中的应用,通过编码相似度计算,以及如何使用三元组损失函数进行参数训练。重点讲解了网络架构、编码概念和目标函数设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:Coursera吴恩达深度学习课程

上个文章One-Shot学习/一次学习(One-shot learning)中函数d的作用就是输入两张人脸图片,然后输出相似度。实现这个功能的一个方式就是用Siamese网络

上图是常见的卷积网络,输入图片x^(1),然后经过卷积层、池化层和全连接层,最终得到特征向量。假如它有128个数,它是由网络深层的全连接层计算出来的,给这128个数命个名字,f(x^(1)),可以看成是图像x^(1)的编码。建立一个人脸识别系统的方法就是:如果要比较两个图片的话,把第二张图片x^(2)喂给有同样参数的神经网络,然后得到一个不同的128维向量。这里x^(1)和x^(2)仅代表两个输入图片,是任意两个图片

接下来定义d,将x^(1)和x^(2)的距离定义为这两种图片编码之差的范数

对于两个不同的输入,运行相同的卷积神经网络,然后比较它们,这一般叫做Siamese网络架构(Siamese neural network architecture)。这里提到的很多观点,都来自于Yaniv Taigman,Ming Yang,Marc’ Aurelio Ranzato,Lior Wolf的这篇论文DeepFace closing the gap to human level performance,他们开发的系统叫做DeepFace。怎么训练这个Siamese神经网络呢?

 

由于两个网络有相同的参数,因此就是训练一个网络。我们要做的就是学习参数,如果两张图片是同一个人,那两个编码的距离就很小;如果是不同的人,编码距离就大一些。如果你改变这个网络所有层的参数,你会得到不同的编码结果,你要做的就是用反向传播(back propagation)来改变这些所有的参数,以确保满足这些条件。

现在我们已经了解了Siamese网络架构,并且知道想要网络输出什么,即什么是好的编码。但是如何定义实际的目标函数(define an objective function),能够让神经网络学习并做到我们刚才讨论的内容呢?在下一个文章里,我们会看到如何用三元组损失函数达到这个目的。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值