孪生网络_孪生网络代码 - CSDN
精华内容
参与话题
  • Siamese Network:孪生网络 简单理解

    千次阅读 2019-05-28 17:40:29
    还有一种网络叫伪孪生网络 直观理解就是左右两边的网络结构是不同的。 2在图中的网络中 左右两个网络的作用是用于提取输入图片的特征。特征提取器 比如在人脸领域,输入两个人的人脸图片信息...

    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当进行人脸识别的时候,我们使用网络对需判别的人脸进行特征提取,把提取出来的特征和我们库中保存的特征进行比对。

    并输出结果

    展开全文
  • 孪生神经网络(Siamese Network)详解

    千次阅读 2019-10-27 12:34:49
    这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。 第二类,分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。 2. 文章创新点 解决以上两个问题,本文...

    1. 要解决什么问题?

    主要解决以下两类分类问题:

    • 第一类,分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。
    • 第二类,分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。

    2. 文章创新点

    解决以上两个问题,本文提出了以下解决方法:

    1. 提出了一种思路:将输入映射为一个特征向量,使用两个向量之间的“距离”(L1 Norm)来表示输入之间的差异(图像语义上的差距)。

    2. 基于上述思路设计了Siamese Network。每次需要输入两个样本作为一个样本对计算损失函数。
      1)用的softmax只需要输入一个样本。
      2)FaceNet中的Triplet Loss需要输入三个样本。

    3. 提出了Contrastive Loss用于训练。

    3. 网络结构

    在这里插入图片描述
    Siamese Network有两个结构相同,且共享权值的子网络。分别接收两个输入X1X1与X2X2,将其转换为向量Gw(X1)与Gw(X2),再通过某种距离度量的方式计算两个输出向量的距离Ew。

    4. Contrastive Loss损失函数

    在孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。contrastive loss的表达式如下:
    $$
    其中
    在这里插入图片描述

    代表两个样本特征X1X_1X2X_2 的欧氏距离(二范数)P 表示样本的特征维数,Y 为两个样本是否匹配的标签,Y=1 代表两个样本相似或者匹配,Y=0 则代表不匹配,m 为设定的阈值,N 为样本个数。

    观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。

    • 当 Y=1(即样本相似时),损失函数只剩下
      在这里插入图片描述
      即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。
    • 当 Y=0 (即样本不相似时),损失函数为
      在这里插入图片描述
      即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。

    [注意这里设置了一个阈值margin,表示我们只考虑不相似特征欧式距离在0~margin之间的,当距离超过margin的,则把其loss看做为0(即不相似的特征离的很远,其loss应该是很低的;而对于相似的特征反而离的很远,我们就需要增加其loss,从而不断更新成对样本的匹配程度)]

    5. 最后

    展开全文
  • 论文笔记:孪生神经网络(Siamese Network)

    万次阅读 多人点赞 2018-11-05 16:20:09
    Siamese Network 原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》 1、四个问题 要解决什么问题? 用于解决类别很多(或者说不确定),然而训练样本的类别数较少...

    Siamese Network
    原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》

    1、四个问题

    1. 要解决什么问题?
      • 用于解决类别很多(或者说不确定),然而训练样本的类别数较少的分类任务(比如人脸识别、人脸认证)
      • 通常的分类任务中,类别数目固定,且每类下的样本数也较多(比如ImageNet)
    2. 用了什么方法解决?
      • 提出了一种思路:将输入映射为一个特征向量,使用两个向量之间的“距离”(L1 Norm)来表示输入之间的差异(图像语义上的差距)。
      • 基于上述思路设计了Siamese Network。每次需要输入两个样本作为一个样本对计算损失函数。
        • 常用的softmax只需要输入一个样本。
        • FaceNet中的Triplet Loss需要输入三个样本。
      • 提出了Contrastive Loss用于训练。
    3. 效果如何?
      • 文中进行了一个衡量两张人脸的相似度的实验,使用了多个数据库,较复杂。
      • siamese network现在依然有很多地方使用,可以取得state-of-the-art的效果。
    4. 还存在什么问题?
      • contrastive loss的训练样本的选择需要注意,论文中都是尽量保证了50%的正样本对和50%的负样本对。

    2、论文概述

    2.1、问题的提出与解决方案

    • 分类问题:
      • 第一类,分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。
      • 第二类,分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。
    • 文中提出的解决方案:
      • learn a similar metric from data。核心思想是,寻找一个映射函数,能够将输入图像转换到一个特征空间,每幅图像对应一个特征向量,通过一些简单的“距离度量”(比如欧式距离)来表示向量之间的差异,最后通过这个距离来拟合输入图像的相似度差异(语义差异)。

    2.2、网络结构概述

    在这里插入图片描述

    • 数学符号描述
      • 输入数据:X1X_1X2X_2X2X_2^{'}。其中X1X_1X2X_2属于同一类,X1X_1X2X_2^{'}属于不同类。
      • 模型:GWG_W。其中WW表示模型参数,GWG_W的作用就是将输入数据XX转换为一组特征向量。
      • 距离(文中称其为energy function):EWE_W。用于衡量两个输入向量转换为向量之后,两个向量之间的距离。
        • 如果采用L1距离,则公式为:EW(X1,X2)=GW(X1)GW(X2)E_W(X_1, X_2)=\| G_W(X_1) - G_W(X_2) \|

    2.3、Contrastive Loss损失函数

    在这里插入图片描述

    • YY表示X1X_1X2X_2是否属于同一类。为同类,则为0;不同类,则为1。
    • PP表示输入的总样本数,ii表示当前样本的下标。
    • LGL_G表示两个样本为同类时的损失函数,LIL_I表示两个样本未不同类时的损失函数。
    • 使用Contrastive Loss的任务主要是设计合适的LGL_GLIL_I损失函数,当为同类时,使得LGL_G尽可能小;当不同类时,使得LIL_I尽可能大。文中给出的函数如下图,现在也不常用了,推导步骤略。

    在这里插入图片描述

    L=12Nn=1Nyd2+(1y)max(margind,0)2L=\frac{1}{2N}\sum_{n=1}^Nyd^2+(1-y)max(margin-d,0)^2

    展开全文
  • 什么是孪生网络,以及其应用

    万次阅读 2017-03-06 11:29:37
    孪生神经网络是一类包含两个或更多个相同子网络的神经网络架构。 这里相同是指它们具有相同的配置即具有相同的参数和权重。 参数更新在两个子网上共同进行。 孪生神经网络在涉及发现相似性或两个可比较的事物之间...

    翻译自quora What are Siamese neural networks, what applications are they good for, and why?

    孪生神经网络是一类包含两个或更多个相同子网络的神经网络架构。 这里相同是指它们具有相同的配置即具有相同的参数和权重。 参数更新在两个子网上共同进行。
    孪生神经网络在涉及发现相似性或两个可比较的事物之间的关系的任务中流行。 一些例子是复述评分,其中输入是两个句子,输出是它们是多么相似的得分; 或签名验证,确定两个签名是否来自同一个人。 通常,在这样的任务中,使用两个相同的子网络来处理两个输入,并且另一个模块将取得它们的输出并产生最终输出。 下面的图片来自Bromley et al (1993)[1]。 他们为签名验证任务提出了一个孪生体系结构。
    这里写图片描述
    孪生结构之所以在这些任务中表现的比较好,有如下几个原因

    • 子网共享权重意味着训练需要更少的参数,也就意味着需要更少的数据并且不容易过拟合。
    • 每个子网本质上产生其输入的表示。 (图片中的“签名特征向量”)。如果您的输入是相同类型的,例如匹配两个句子或匹配两个图片,使用类似的模型来处理类似的输入是有意义的。 这样,您就有了具有相同语义的表示向量,使得它们更容易比较。 -

    问题回答,一些最近的研究使用孪生体系结构来评分问题和答案候选人之间的相关性[2]。 所以一个输入是一个问句,另一个输入是一个答案,输出和问题的答案是相关的。 问题和答案看起来不完全相同,但如果目标是提取相似性或它们之间的联系,孪生体系结构也可以很好地工作。

    引用了如下的两篇文章
    [1]Signature Verification using a “Siamese”
    Time Delay Neural Network

    [2]ABCNN: Attention-Based Convolutional Neural Network
    for Modeling Sentence Pairs

    展开全文
  • siamese(孪生) 网络

    万次阅读 2017-11-05 15:36:03
    siamese 网络, 是05年Yann Lecun提出来的。它的特点是它接收两个图片作为输入,而不是一张图片作为输入。 文献资料: 摘抄自caffe github的issue697 Siamese nets are supervised models for metric learning ...
  • 孪生网络

    千次阅读 2019-02-20 20:15:44
    孪生网络(Siamese network) 孪生神经网络用于处理两个输入"比较类似"的情况。 比如,我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合; 伪孪生网络(pseudo-siamese ...
  • 孪生网络Siamese Network 简介

    千次阅读 2019-03-07 20:44:14
    1 简介 架构: 对比损失函数...其中,Dw为以下表达式,网络输出的欧式距离。 2 实践 class SiameseNetwork(nn.Module): def __init__(self): super(SiameseNetwork, self).__init__() self.cnn1 =...
  • 在mnist数据集上简单实现了孪生网络的tensorflow代码,包括训练过程,测试过程和图示过程。代码包中自带图像,可以直接运行。
  • 在caffe的孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。contrastive loss的表达式如下:  其中d=||an−bn||2,代表...
  • 孪生网络Siamese Network发展历程

    千次阅读 2018-09-03 21:37:48
    孪生网络又称为连体网络,网络中的连体是通过共享权值来实现。孪生网络最早是出现在1993年的论文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美国支票上的签名验证,即验证支票上...
  • 先放资料 论文 pytorch教程 官网例子 孪生网络相关资料 1.最初的论文 论文Learning to Compare Image Patches via Convolutional Neural Networks ...孪生网络的论文很多,没有太多时间阅读,之...
  • 本文为北京航空航天大学陶飞教授应邀在CIMS大会上做了题为《五维数字孪生模型及十个领域应用探索》的学术报告。 会后,陶飞教授应邀将报告内容进行了整理,带领北航数字孪生技术研究小组与国内10多家合作企业共同...
  • 参考论文:Siamese Network Features for Image Matching 会议水平:2016 23rd International Conference on Pattern Recognition (ICPR) 1. 摘要和贡献 在计算机视觉应用领域,如运动结构分析、多视图3D重建、...
  • 基于全连接孪生网络的目标跟踪(siamese-fc)

    万次阅读 多人点赞 2016-11-18 15:19:29
    Fully-Convolutional Siamese Networks for Object Tracking这两年可以说deeplearning已经占领了visual object tracking这个领域,但是对于跟踪问题来说,这些基于DL的做法虽然能够很好的提升跟踪的效果,但是在时效...
  • 参考论文:Zagoruyko S, Komodakis N. Learning to compare image patches via convolutional neural networks[J]. computer vision and pattern recognition, 2015: 4353-4361. 会议水平:CVPR2015 ...
  • Siamese network(孪生神经网络)

    千次阅读 2019-03-16 21:52:32
    一.概述 Siamese Network 是一种神经网络的框架,而不是具体的某种网络,就像seq2seq一样,具体实现上可以使用RNN也可以使用CNN。 Siamese network就是“连体的神经网络”,神经...孪生神经网络有两个输入(Input1...
  • 快速入门 - Digital Twin(数字孪生)

    千次阅读 2019-03-22 22:36:46
    Digital Twin - 快速入门Digital Twin怎么翻译Digital Twin(数字孪生)定义1、Digital Twin(数字孪生)的学术定义2、Digital Twin(数字孪生)的业界定义3、Digital Twin(数字孪生)的根本Digital Twin(数字孪生)是...
  • 参看论文:Tao R, Gavves E, Smeulders A W, et al. Siamese Instance Search for Tracking[J]. computer vision and pattern recognition, 2016: 1420-1429. 会议水平:CVPR2016 投稿单位:...
  • keras的siamese(孪生网络)实现

    千次阅读 2018-11-13 09:48:41
    代码位于keras的官方样例,并做了微量修改和大量学习
  • 基础版本实验:选用...single lstm 孪生网络  数据是4w的pair对 训练曲线如下图:   最终任务测试集上的准确率(和本任务中dssm的准确率做对比), 如下图所示: 本任务lstm singe (正:负 = 1:2) ...
1 2 3 4 5 ... 20
收藏数 4,290
精华内容 1,716
关键字:

孪生网络