精华内容
下载资源
问答
  • Siamese

    2019-11-22 09:50:27
    Siamese

    Siamese


    • -Model(pytorch版本

    《Fully-Convolutional Siamese Networks for Object Tracking》
    —基于SiameseFC的目标跟踪
    作者:Luce Bertinetto Jack Valmadre
    单位:University of Oxford
    发表会议及时间:CVPR 2016

    一 论文导读

    二 论文精读

    三 代码实现

    四 问题思索

    展开全文
  • Siamese Networks

    2018-09-13 17:39:45
    Fully-Convolutional Siamese Networks for Object Tracking
  • Siamese网络

    2020-07-20 21:34:46
    Siamese网络

    Siamese网络

    Few Shot Learning

    首先看一个例子:
    在这里插入图片描述
    上图有一个Support set,其中的数据很少,不足以支持神经网络的训练。现在我们有一个Query,其类型是 Support set 中的一类。那么我们怎么通过 Support set 找到 Query 的所属分类。当然了我们人一眼就能分辨。但是怎么让机器去识别呢?
    Few Shot Learning 可以解决上面这种情况,其通过很少的样本做分类或回归。
    看两个 Few Shot Learning 中的几个概念:
    kk-way nn-shot Support Set,其中 kk 是 Support Set 中的类别个数,nn 是每个类别中的样本数,上图是一个 33-way 22-shot Support Set。
    Query 要辨别的目标。
    解决上面问题的思路就是:训练一个神经网络其可以计算出 Query 与 Support Set 中 kk 个类别的之间的相似度。与Query相似度越高的类别,是Query类别的概率越大。
    值得注意的是:Support set 中的数据并不出现在训练集中。

    Siamese网络介绍

    Siamese网络可以通过训练,计算出数据之间的相似度。 Siamese译为‘孪生’,‘连体’。
    通过一个函数(或神经网络)将输入映射到目标空间,在目标空间使用简单的距离(欧式距离等)进行相似度对比。在训练阶段最小化来自相同类别的一对样本的损失函数值,最大化来自不同类别的一对样本的损失函数值。
    如下图:
    在这里插入图片描述
    上图中的红色框中的网络结构相同。

    训练神经网络

    处理训练集

    训练上面的siamese神经网络首先要有数据集。我们处理训练数据如下图所示:
    在这里插入图片描述
    同一类别的选两张组合在一起,称为正样本,标签为1。
    不同一类别的选两张组合在一起,称为负样本,标签为0。

    训练网络

    在这里插入图片描述
    首先,用siamese网络分别提取 X1X1X2X2 的特征 h1h1h2h2,然后计算 z=h1h2z=|h1-h2|zz 表示两个特征之间的区别。然后使用Dense layers 处理 zz, 得到一个标量,然后用sigmoid激活函数做分类。
    简单代码实现:
    在这里插入图片描述
    结果可以看下图所示:
    在这里插入图片描述
    上图中 Query 与Support Set 中的兔子最相似,那么Query的类别就是兔子。

    Triplet Loss

    上面介绍的一种siamese网络是双连体,那么我们也可以设计成三连体,其训练方式称为Triplet Loss。如下图:
    在这里插入图片描述

    Triplet Loss 训练数据集处理

    在这里插入图片描述

    训练网络在这里插入图片描述

    根据上面我们定义损失函数
    损失函数应鼓励最小化 d+d^+,即最小化同类别之间的距离;鼓励最大化dd^-,即最大化不同类别之间的距离。
    我们指定一个margin,如果 d>=d++margind^->=d^++margin ,我们认为这组数据分类正确,Loss=0Loss=0,如果条件不满足,说明分不开正负样本,则 Loss=dd++marginLoss = d^--d^++margin。综上 Loss=max{0dd++margin}Loss =max\{ 0,d^--d^++margin\}
    简单代码实现:
    在这里插入图片描述
    结果比较如图:
    在这里插入图片描述
    上图中 Query 与Support Set 中的兔子距离最小,那么Query的类别就是兔子。

    两种形式网络代码实现

    代码1
    代码2

    展开全文
  • Siamese Network理解(附代码)

    万次阅读 多人点赞 2017-02-02 17:15:40
    本文主要通过论文来讲解下siamese network。 提起siamese network一般都会引用这两篇文章: 《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming Distance ...

    author:DivinerShi

    文章地址:http://blog.csdn.net/sxf1061926959/article/details/54836696

    提起siamese network一般都会引用这两篇文章:
    《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming Distance Metric Learning》。

    本文主要通过论文《Learning a Similarity Metric Discriminatively, with Application to Face Verification》来理解siamese网络。

    介绍

    Siamese网络是一种相似性度量方法,当类别数多,但每个类别的样本数量少的情况下可用于类别的识别、分类等。传统的用于区分的分类方法是需要确切的知道每个样本属于哪个类,需要针对每个样本有确切的标签。而且相对来说标签的数量是不会太多的。当类别数量过多,每个类别的样本数量又相对较少的情况下,这些方法就不那么适用了。其实也很好理解,对于整个数据集来说,我们的数据量是有的,但是对于每个类别来说,可以只有几个样本,那么用分类算法去做的话,由于每个类别的样本太少,我们根本训练不出什么好的结果,所以只能去找个新的方法来对这种数据集进行训练,从而提出了siamese网络。siamese网络从数据中去学习一个相似性度量,用这个学习出来的度量去比较和匹配新的未知类别的样本。这个方法能被应用于那些类别数多或者整个训练样本无法用于之前方法训练的分类问题。

    主要思想

    主要思想是通过一个函数将输入映射到目标空间,在目标空间使用简单的距离(欧式距离等)进行对比相似度。在训练阶段去最小化来自相同类别的一对样本的损失函数值,最大化来自不同类别的一堆样本的损失函数值。给定一组映射函数这里写图片描述,其中参数为W,我们的目的就是去找一组参数W。使得当这里写图片描述这里写图片描述属于同一个类别的时候,相似性度量这里写图片描述是一个较小的值,当这里写图片描述这里写图片描述属于不同的类别的时候,相似性度量这里写图片描述较大。这个系统是用训练集中的成对样本进行训练。当这里写图片描述这里写图片描述来自相同类别的时候,最小化损失函数这里写图片描述,当这里写图片描述这里写图片描述来自不同类别的时候,最大化这里写图片描述。这里的这里写图片描述除了需要可微外不需要任何的前提假设,因为针对成对样本输入,这里两个相同的函数G,拥有一份相同的参数W,即这个结构是对称的,我们将它叫做siamese architecture。
    在这篇论文中,作者用这个网络去做面部识别,比较两幅图片是不是同一个人,而且这个网络的一个优势是可以去区分那些新的没有经过训练的类别的样本。

    Siamese也算是降维方法的一种。常见的降维方法有PCA、LDA、Kernel-PCA、MDS、LLE、LB、ISOmap、FA等不做具体介绍。

    网络结构

    这里写图片描述
    上图是论文中的网络结构图,左右两边两个网络是完全相同的网络结构,它们共享相同的权值W,输入数据为一对图片(X1,X2,Y),其中Y=0表示X1和X2属于同一个人的脸,Y=1则表示不为同一个人。即相同对为(X1,X2,0),欺骗对为(X1,X2’,1)针对两个不同的输入X1和X2,分别输出低维空间结果为这里写图片描述这里写图片描述,它们是由这里写图片描述这里写图片描述经过网络映射得到的。然后将得到的这两个输出结果使用能量函数这里写图片描述进行比较。
    这里写图片描述
    损失函数定义

    我们假设损失函数只和输入和参数有关,那么我们损失函数的形式为:
    这里写图片描述
    其中这里写图片描述是第i个样本,是由一对图片和一个标签组成的,其中LG是只计算相同类别对图片的损失函数,LI是只计算不相同类别对图片的损失函数。P是训练的样本数。通过这样分开设计,可以达到当我们要最小化损失函数的时候,可以减少相同类别对的能量,增加不相同对的能量。很简单直观的方法是实现这个的话,我们只要将LG设计成单调增加,让LI单调递减就可以了,但是我们要保证一个前提就是,不相同的图片对(image pairs)距离肯定要比相同图片对的距离大,那么就是要满足:
    这里写图片描述
    所以论文中用了一个
    这里写图片描述
    作为总的损失函数,可以满足这个condition1。论文中进行了各种假设的证明已经单调性的证明,这里不再重复。
    最后给出一个精确的对单个样本的损失函数:
    这里写图片描述
    其中
    这里写图片描述
    ,Q是一个常量。
    这里写图片描述
    上图说明了收敛性。
    总结思想

    其实讲了这么多,主要思想就是三点:
    1、输入不再是单个样本,而是一对样本,不再给单个的样本确切的标签,而且给定一对样本是否来自同一个类的标签,是就是0,不是就是1
    2、设计了两个一模一样的网络,网络共享权值W,对输出进行了距离度量,可以说l1、l2等。
    3、针对输入的样本对是否来自同一个类别设计了损失函数,损失函数形式有点类似交叉熵损失:
    这里写图片描述
    最后使用获得的损失函数,使用梯度反传去更新两个网络共享的权值W。

    优点

    这个网络主要的优点是淡化了标签,使得网络具有很好的扩展性,可以对那些没有训练过的类别进行分类,这点是优于很多算法的。而且这个算法对一些小数据量的数据集也适用,变相的增加了整个数据集的大小,使得数据量相对较小的数据集也能用深度网络训练出不错的效果。

    实验设计

    实验的时候要注意,输入数据最好打乱,由于这样去设计数据集后,相同类的样本对肯定比不相同的样本对数量少,在进行训练的时候最后将两者的数据量设置成相同数量。

    总结

    本文解释的只是最早提出的siamese网络结构,提出的是一种网络结构思想,具体的使用的网络形式完全可以自己定义。包括损失函数,相似度距离的定义等。比如将损失函数的这里写图片描述用hige loss代替等。
    《Hamming Distance Metric Learning》这篇论文对siamese进一步改进,提出了一个triple net,主要贡献是将成对样本改成了三个样本,输入由(X1,X2,Y)变成了(X1,X2,X1’),表示X1和X1’是相同类别的样本,X1和x2是不同样本的类别。
    《Learning to Compare Image Patches via Convolutional Neural Networks》这篇论文写得也很好,将两个网络进行合并,输入的成对标签直接同时输入同一个网络。
    代码

    使用tensorflow在mnist上实现的siamese net

    参考文献2的官方code

    参考文献

    [1] S. Chopra, R. Hadsell, and Y. LeCun. Learning a similarity metric discriminatively, with application to face verification. In Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on, volume 1, pages 539–546. IEEE, 2005.
    [2] Mohammad Norouzi, David J. Fleet, Ruslan Salakhutdinov, Hamming Distance Metric Learning, Neural Information Processing Systems (NIPS), 2012.

    展开全文
  • Siamese model

    2020-12-28 13:51:18
    <div><p>Is it possible to build a siamese model for fine tuning specially for the text inference task ?</p><p>该提问来源于开源项目:IndicoDataSolutions/finetune</p></div>
  • Siamese RankNet

    2020-11-30 00:41:31
    s possible to implement the Siamese Ranknet using TF Ranking: http://www.eggie5.com/130-learning-to-rank-siamese-network-pairwise-data</p> <p><img alt="" src=...
  • Siamese Loss

    千次阅读 2019-05-06 11:02:18
    Siamese Loss 参考:https://blog.csdn.net/sxf1061926959/article/details/54836696 孪生网络中的Siamese Loss,来自Yann LeCun的论文《Learning a Similarity Metric Discriminatively, with Application to ...
    
    

    孪生网络中的Siamese Loss,来自Yann LeCun的论文《Learning a Similarity Metric Discriminatively, with Application to Face Verification》,最小化把相同类的数据之间距离,最大化不同类之间的距离
    引入了siamese网络结构的思想,具体使用的网络形式完全可以自己定义
    在这里插入图片描述
    主要思想:
    1、输入不再是单个样本,而是一对样本,不再给单个的样本确切的标签,而且给定一对样本是否来自同一个类的标签,是就是0,不是就是1
    2、设计了两个一模一样的网络,网络共享权值W,对输出进行了距离度量,可以说l1、l2等。
    3、针对输入的样本对是否来自同一个类别设计了损失函数,损失函数形式有点类似交叉熵损失:

    在这里插入图片描述
    最后使用获得的损失函数,使用梯度反传去更新两个网络共享的权值W。

    注:损失函数中的2Qe2.77QEw2Qe^{-\frac{2.77}{Q}E_{w}},可以用hinge loss代替。

    优点: Siamese网络是一种相似性度量方法。传统的用于区分的分类方法是需要确切的知道每个样本属于哪个类,需要针对每个样本有确切的标签。而且相对来说标签的数量是不会太多的。当类别数量过多,每个类别的样本数量又相对较少的情况下,这些方法就不那么适用了。其实也很好理解,对于整个数据集来说,我们的数据量是有的,但是对于每个类别来说,可以只有几个样本,那么用分类算法去做的话,由于每个类别的样本太少,我们根本训练不出什么好的结果,所以只能去找个新的方法来对这种数据集进行训练,从而提出了siamese网络。siamese网络从数据中去学习一个相似性度量,用这个学习出来的度量去比较和匹配新的未知类别的样本。这个方法能被应用于那些类别数多或者整个训练样本无法用于之前方法训练的分类问题。

    代码实现:

    #注:label=1,同一人;label=0,不同人。
    def siamese_loss(model1, model2, y):
        # L(W,Y,X1,X2) = Y*2/Q*||CNN(p1i)-CNN(p2i)||^2 + (1-Y)*2*Q*exp(-2.77/Q*||CNN(p1i)-CNN(p2i)||
        margin = 5.0
        Q = tf.constant(margin, name="Q", dtype=tf.float32)
        E_w = tf.sqrt(tf.reduce_sum(tf.square(model1 - model2),1))
        pos = tf.multiply(tf.multiply(tf.to_float(y), 2/Q), tf.square(E_w))
        neg = tf.multiply(tf.multiply(tf.to_float(1-y),2*Q),tf.exp(-2.77/Q*E_w))
        loss = pos + neg
        loss = tf.reduce_mean(loss, name="loss")
        return model1, model2, loss
    

    注:博众家之所长,集群英之荟萃。

    在这里插入图片描述

    展开全文
  • Siamese network

    2019-07-14 07:49:58
    Siamese和Chinese有点像。Siam是古时候泰国的称呼,中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思,这是为什么呢? 十九世纪泰国出生了一对连体婴儿,当时的...
  • Siamese Network

    2018-11-29 20:39:58
    Siamese Network 可以看成是对输入图片的一个 哈夫曼编码
  • Siamese:孪生神经网络在Pytorch当中的实现 目录 实现的内容 Achievement 所需环境 Environment 注意事项 Attention 文件下载 Download 预测步骤 How2predict 训练步骤 How2train 参考资料 Reference 实现的...
  • Siamese RPN

    2020-06-24 14:46:01
    Paper : High Performance Visual Tracking with Siamese Region Proposal Network Code : unofficial 摘要 之前在阅读SiamFC的时候就感觉目标追踪与物体检测在候选框生成上可以有很多互相借鉴的地方,而且SiamFC...
  • Siamese:孪生神经网络在Keras当中的实现 目录 实现的内容 Achievement 所需环境 Environment 注意事项 Attention 文件下载 Download 预测步骤 How2predict 训练步骤 How2train 参考资料 Reference 实现的内容 ...
  • Siamese 详解

    千次阅读 2018-11-15 11:16:45
    本博客引用: ...摘要 Siamese网络用途,原理,如何训练? 背景 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只给你一张照...
  • Siamese资料

    2018-04-24 21:51:49
    推荐: ...http://vra.github.io/2016/12/13/siamese-caffe/ http://vision.ia.ac.cn/zh/senimar/reports/Siamese-Network-Architecture-and-Applications-in-Computer-Vision.p...
  • Siamese FC

    2019-10-23 15:53:47
    关于Siamese FC 的理解 摘要 1.传统上的目标跟踪解决:使用单一视频学习外观模型,(目标在视频会改变,特征也在改变特征提取太单一了)进行目标在线更新,这限制了学习模型的丰富性。2.决定采用深度学习的表达能力...
  • Fully-Convolutional Siamese Networks for Object Tracking Project page: http://www.robots.ox.ac.uk/~luca/siamese-fc.html The code in this repository enables you to reproduce the experiments of our ...
  • Siamese:孪生神经网络在tf2(tensorflow2)当中的实现 目录 实现的内容 Achievement 所需环境 Environment 注意事项 Attention 文件下载 Download 预测步骤 How2predict 训练步骤 How2train 参考资料 Reference ...
  • 详解Siamese网络

    万次阅读 多人点赞 2018-11-14 19:23:11
    Siamese网络用途,原理,如何训练? 背景 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只给你一张照片(训练集样本少),并且员工会离职、入职(每次变动都要重新训练...
  • Siamese network example

    2021-01-10 09:24:29
    <div><p>I have followed all the steps of the Siamese network example but the loss function keeps oscillating: <p><img alt="capture" src=...
  • Siamese Network简介

    2019-08-02 06:47:06
    Siamese Network简介 Siamese Network 是一种神经网络的框架,而不是具体的某种网络,就像seq2seq一样,具体实现上可以使用RNN也可以使用CNN。 简单的说,Siamese Network用于评估两个输入样本的相似度。网络的...
  • Siamese系列文章

    2021-01-07 20:48:01
    目标跟踪之Siamese网络 单目标跟踪paper小综述 SiamFC SiamRPN 1.SiamRPN阅读笔记:High Performance Visual Tracking with Siamese Region Proposal Network 写的很好,重点看!!!! 2.【论文笔记】CVPR2018_Siam...
  • Siamese 网络(Siamese network) 该网络可用于进行人脸识别验证,例如输入两张人脸,告诉两者之间的相似度,如果相似度较高则认为该目标为要找的人物。 Siamese 网络(Siamese network):对于两个不同的输入,...
  • 这是来自商汤的一篇文章 发表在CVPR...3.Siamese-RPN framework 3.1 孪生特征提取子网络 3.2 候选区域提取子网络 3.3 训练阶段:端到端训练孪生RPN 4. Tracking as one-shot detection 5. 实验 6. 结论 ...
  • siamese_tensorflow_mnist

    2018-11-29 22:58:22
    Siamese Tf测试代码。加入qq群可在群文件中免费下载。
  • siamese(孪生)网络

    2021-01-27 11:18:02
    siamese网络,是05年YannLecun提出来的。它的特点是它接收两个图片作为输入,而不是一张图片作为输入。下面介绍原始的孪生网络: 目的:比较两幅图片是否相似,或者说相似度是多少输入:两幅图片输出:一个相似度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,341
精华内容 536
关键字:

siamese