Siamese Network (原理篇)

article/2025/9/30 20:24:46

1. Siamese Network 用途

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

2. Siamese Network主要思想

主要思想是通过一个函数将输入映射到目标空间,在目标空间使用简单的距离(欧式距离等)进行对比相似度。在训练阶段去最小化来自相同类别的一对样本的损失函数值,最大化来自不同类别的一堆样本的损失函数值。给定一组映射函数,其中参数分别为权重w和偏好b。Siamese Network的目的就是寻找这样的一系列参数w,b;使得当X1和X2来自同一个类别时(或者是最相似时),损失函数(空间距离)取得极小值;当样本X1`和X2`来自不同的类别时(或者是不相似),损失函数(空间距离)取得极大值。因此,孪生网络需要用一对图像进行训练,这里的是一切可以满足可微分条件的函数。因为针对成对样本输入,这里两个相同的函数φ(·),拥有一份相同的参数w,b,即这个结构是对称的,我们将它叫做siamese architecture。 

更具体的细节可以参考下面文章,作者分析得很详细。《Learning to Compare Image Patches via Convolutional Neural Networks》。

推荐CVPR2005年的文章。 Learning a similarity metric discriminatively, with application to face verification.  http://yann.lecun.com/exdb/publis/pdf/chopra-05.pdf 这是第一个利用Siamese network做的系统匹配工作,作者是大神Yann Lecun

3. CVPR05论文分析

3.1 网络结构

作者用的网络结构非常的简单,如下:

   

作者采用的是权重共享的方式,而且作者并没有使用偏置b。图中的Gw和我们前文的Sw,b指的是一个事。

训练过程中,输入的是一对图像和他们的标签(X1,X2,Y)。其中Y=0表示X1和X2属于同一属性图像,Y=1则表示非同一属性图片。即相同对为(X1,X2,0),欺骗对为(X1,X2’,1)针对两个不同的输入X1和X2,分别输出特征空间结果为。然后对这两个结果使用能量函数进行判断。能量函数设计如下:

3.2 损失函数

假设损失函数只与输入的图相对、标签、网络权重相关(w, X1,X2,Y)。那么损失函数可以定义为如下形式:

其中,LG表示相同类别相似性测度;LI表示不同类别相似性测度。n表示为训练样本。

通过这样分开设计,可以达到当我们要最小化损失函数的时候,可以减少相同类别对的能量,增加不相同对的能量。很简单直观的方法是实现这个的话,我们只要将LG设计成单调增加,让LI单调递减就可以了,但是我们要保证一个前提就是,不相同的图片对距离肯定要比相同图片对的距离大,那么就是要满足: 

最后作者给出一个精确的对单个样本的损失函数: 

其中,Q为一个常量。可以证明,这个损失函数一定是收敛的。

4.方法总结

1、输入不再是单个样本,而是一对样本,不再给单个的样本确切的标签,而且给定一对样本是否来自同一个类的标签,是就是0,不是就是1。这一点还可以用软判据进行处理,也就是我们说的模糊属性。用高斯分布来刻画两个样本具有的相似度程度。
2、设计了两个一模一样的网络,网络共享权值W,对输出进行了距离度量。 (这里可以采用权重共享策略,也可以不采用)
3、针对输入的样本对是否来自同一个类别设计了损失函数,损失函数形式有点类似交叉熵损失:

Siamese Network的优势也是十分明显的:

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

参考:

https://blog.csdn.net/sinat_24143931/article/details/78919432 作者:CV图戈


http://chatgpt.dhexx.cn/article/FPeFdihZ.shtml

相关文章

siamese(孪生) 网络

siamese 网络, 是05年Yann Lecun提出来的。它的特点是它接收两个图片作为输入,而不是一张图片作为输入。 文献资料: 摘抄自caffe github的issue697 Siamese nets are supervised models for metric learning [1]. 译:孪生网络…

Siamese Network(孪生网络)

模型结构 上图是孪生网络的简单模型结构,思路很简单,就是输入两个样本到同样的网络(参数结构相同),最后计算两个网络输出的距离,如果距离较近就认为是同一类,较远就认为是不同的类别&#xff0c…

51、目标的相似度检测模型Siamese部署rk3399pro、ncnn、mnn进行推理加速

基本思想:需要一个判断目标相似度的模型,来比对被检测目标和既定目标的相似度,测试图片仅有的几张图片,感觉一般,量化图片尽量多点对于rknn 链接: https://pan.baidu.com/s/1NFjnCBh5RqJXDxEjl9TzHg?pwdxev4 提取码:…

SPCL:Siamese Prototypical Contrastive Learning

论文链接:https://arxiv.org/abs/2208.08819 BMVC 2021 abstract CSL(Contrastive Self-supervised Learning)的一个缺点是,对比损失函数需要大量的负样本,以提供更好的理想互信息边界。 通过变大batch size来增加负样本数理,同…

Exploring Simple Siamese Representation Learning论文笔记

写在前面 大三狗随手记录,不喜勿喷。 主要思想 Siamese network常常被用来计算图像的两个增强之间的相似性,但可能会造成模型坍塌(即输出恒定)。作者在本文提出了一个非常简单的Simple Siamese network,简称Simsiam…

SiamCAR:Siamese Fully Convolutional Classification and Regression for Visual Tracking

文章目录 AbstractIntroductionProposed MethodFeature ExtractionBounding Box PredictionThe Tracking Phase 值得关注的几个问题Q1:输入的图片大小不一?Q2:在两者做相关性之前,如何得到特征图?Q3:两者的相关性计算是如何实现的&#xff1f…

TensorFlow搭建VGG-Siamese网络

TensorFlow搭建VGG-Siamese网络 Siamese原理 Siamese网络,中文称为孪生网络。大致结构如下图所示: Siamese网络有两个输入,一个输出。其中,两个输入经过相同的网络层知道成为一个n维向量,再对这个n维向量进行求距离&…

mesa 概述

技术关键词:mesa、OpenGL、dri、gpu、kmd、xsever 目录 一、mesa概述 二、mesa架构 1. 架构设计 2. 模块划分 三、mesa与linux图形系统中的其他模块的关系 四、mesa的编译 五、链接资源 总结 一、mesa概述 mesa是OpenGL、OpenGL ES、Vulkan、OpenCL的一个开…

Siamese 网络(Siamese network)

来源:Coursera吴恩达深度学习课程 上个文章One-Shot学习/一次学习(One-shot learning)中函数d的作用就是输入两张人脸图片,然后输出相似度。实现这个功能的一个方式就是用Siamese网络。 上图是常见的卷积网络,输入图片…

MISF:Multi-level Interactive Siamese Filtering for High-Fidelity Image Inpainting 论文解读与感想

深度学习模型被广泛应用于各种视觉任务的同时,似乎传统的图像处理方式已经被人们渐渐遗忘,然而很多时候传统图像处理方式的稳定性和可解释性依然是深度学习模型所不能达到的。本文是CVPR2022的一篇将传统与深度相结合进行inpainting的文章。 在图像inpa…

Siamese系列文章

说明 在学习目标追踪方面,慢慢读懂论文,记录论文的笔记,同时贴上一些别人写的非常优秀的帖子。 文章目录 说明综述类型笔记SiamFC笔记 SiamRPN笔记 DaSiamRPN笔记 SiamRPN笔记复现 SiamDW笔记 SiamFC笔记 UpdateNet笔记 SiamBAN笔记 SiamMa…

SiamRPN阅读笔记:High Performance Visual Tracking with Siamese Region Proposal Network

这是来自商汤的一篇文章 发表在CVPR2018上 论文地址 目录: 文章目录 摘要1.引言2.相关工作2.2 RPN2.3 One-shot learning 3.Siamese-RPN framework3.1 孪生特征提取子网络3.2 候选区域提取子网络3.3 训练阶段:端到端训练孪生RPN 4. Tracking as one-sho…

【度量学习】Siamese Network

基于2-channel network的图片相似度判别 一、相关理论 本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《Learning to Compare Image Patches via Convolutional Neural Networks》,本篇文章对经典的算法Siamese Networks 做了改进。学习这…

【论文阅读】Learning to Rank Proposals for Siamese Visual Tracking

Learning to Rank Proposals for Siamese Visual Tracking:2021 TIP 引入 There are two main challenges for visual tracking: 首先,待跟踪目标具有类不可知性和任意性,关于目标的先验信息很少。 其次,仅仅向跟踪器…

深度学习笔记-----多输入网络 (Siamese网络,Triplet网络)

目录 1,什么时候需要多个输入 2,常见的多输入网络 2.1 Siamese网络(孪生网络) 2.1 Triplet网络 1,什么时候需要多个输入 深度学习网络一般是输入都是一个,或者是一段视频切片,因为大部分的内容是对一张图像或者一段…

Siamese networks

Siamese Network 是一种神经网络的架构,而不是具体的某种网络,就像Seq2Seq一样,具体实现上可以使用RNN也可以使用CNN。Siamese Network 就像“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的(共享权值即左…

Siamese Network理解(附代码)

author:DivinerShi 文章地址:http://blog.csdn.net/sxf1061926959/article/details/54836696 提起siamese network一般都会引用这两篇文章: 《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming D…

详解Siamese网络

摘要 Siamese网络用途,原理,如何训练? 背景 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只给你一张照片(训练集样本少),并且…

Siamese网络(孪生网络)

1. Why Siamese 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只有一张照片(因为每个类别训练样本少),并且员工会离职、入职(每次变动都要重新训练模型…

Siamese网络(孪生神经网络)详解

SiameseFC Siamese网络(孪生神经网络)本文参考文章:Siamese背景 Siamese网络解决的问题要解决什么问题?用了什么方法解决?应用的场景: Siamese的创新Siamese的理论Siamese的损失函数——Contrastive Loss损…