论文笔记:孪生神经网络(Siamese Network)

article/2025/9/30 20:00:12

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、网络结构概述

在这里插入图片描述

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

2.3、Contrastive Loss损失函数

在这里插入图片描述

  • Y Y Y表示 X 1 X_1 X1 X 2 X_2 X2是否属于同一类。为同类,则为0;不同类,则为1。
  • P P P表示输入的总样本数, i i i表示当前样本的下标。
  • L G L_G LG表示两个样本为同类时的损失函数, L I L_I LI表示两个样本未不同类时的损失函数。
  • 使用Contrastive Loss的任务主要是设计合适的 L G L_G LG L I L_I LI损失函数,当为同类时,使得 L G L_G LG尽可能小;当不同类时,使得 L I L_I LI尽可能大。文中给出的函数如下图,现在也不常用了,推导步骤略。

在这里插入图片描述

  • 查找资料看到,caffe中的contrastive loss定义如下:(参考:https://blog.csdn.net/autocyz/article/details/53149760)

L = 1 2 N ∑ n = 1 N y d 2 + ( 1 − y ) m a x ( m a r g i n − d , 0 ) 2 L=\frac{1}{2N}\sum_{n=1}^Nyd^2+(1-y)max(margin-d,0)^2 L=2N1n=1Nyd2+(1y)max(margind,0)2


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

相关文章

SiameseFC超详解

SiameseFC 前言论文来源参考文章 论文原理解读首先要知道什么是SOT?(Siamese要做什么)SiameseFC要解决什么问题?SiameseFC用了什么方法解决?SiameseFC网络效果如何?SiameseFC基本框架结构SiameseFC网络结构…

Siamese网络代码详解 训练自定义数据集 模型推理

开门见山,Siamese网络结构如下所示: 主干网络:VGG16。整个VGG16的网络结构比较简单,如下图所示,主要分为5个部分: stage1为 2次33卷积+1次22最大池化,输出特征为64通道;stage2为 2次33卷积+1次22最大池化,输出特征为128通道;stage1为 3次33卷积+1次22最大池化,输出…

深度学习(自监督:SimSiam)——Exploring Simple Siamese Representation Learning

文章目录 前言SimSiam简述实验 前言 该文章是何凯明组发表于CVPR2021上的文章,目前已获得最佳论文提名,主要解决自监督对比学习中的奔溃解问题。奔溃解即不论什么输入,特征提取器输出的特征向量都相同。 本文将简单介绍SimSiam,…

siamese模型码详解(每一句代码都有解释!!!)

最近在研究Siamese模型来进行文本相似度的计算,今天就做一期代码详解,每一行的代码都会做出相应的解释,对于初学LSTM的人来说读懂代码是非常有必要的,Siamese模型就是将两个句子(训练数据)通过embeding层&a…

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

1. 要解决什么问题? 主要解决以下两类分类问题: 第一类,分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。第二类,分…

Siamese Network (原理篇)

1. Siamese Network 用途 Siamese网络是一种相似性度量方法,当类别数多,但每个类别的样本数量少的情况下可用于类别的识别、分类等。传统的用于区分的分类方法是需要确切的知道每个样本属于哪个类,需要针对每个样本有确切的标签。而且相对来说…

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: 首先,待跟踪目标具有类不可知性和任意性,关于目标的先验信息很少。 其次,仅仅向跟踪器…