前言:

本文介绍了Siamese (连体)网络的主要特点、训练和测试Siamese网络的步骤、Siamese网络的应用场合、Siamese网络的优缺点、为什么Siamese被称为One-shot分类,以及Siamese的损失函数。

Siamese Network的主要特点

1. Siamese 网络采用两个不同的输入,通过两个具有相同架构、参数和权重的相似子网络。

2. 这两个子网互为镜像,就像连体双胞胎一样。 因此,对任何子网架构、参数或权重的任何更改也适用于其他子网。

3. 两个子网络输出一个编码来计算两个输入之间的差异。

4. Siamese 网络的目标是使用相似度分数对两个输入是相同还是不同进行分类。可以使用二元交叉熵、对比函数或三元组损失来计算相似度分数,这些都是用于一般距离度量学习方法的技术。

5. Siamese 网络是一种one-shot分类器,它使用判别特征从未知分布中概括不熟悉的类别。

训练 Siamese 神经网络

1. 加载包含不同类的数据集

2. 创建正负数据对。 当两个输入相同时为正数据对,当两个输入不同时为负数据对。

3. 构建卷积神经网络,它使用全连接层输出特征编码。我们将通过姊妹 CNN传递两个输入。姐妹 CNN 应该具有相同的架构、超参数和权重。

4. 构建差分层以计算两个姐妹 CNN 网络编码输出之间的欧几里得距离。

5. 最后一层是具有单个节点的全连接层,使用 sigmoid 激活函数输出相似度分数。

6. 使用二元交叉熵作为损失函数。

测试 Siamese 神经网络

1. 向训练模型发送两个输入以输出相似度分数。

2. 由于最后一层使用 sigmoid 激活函数,它输出一个范围在 0 到 1 之间的值。接近 1 的相似度得分意味着两个输入是相似的。接近 0 的相似度得分意味着两个输入不相似。一个好的经验法则是使用 0.5 的相似性截止阈值。

Siamese 神经网络的应用

1. 签名验证

2. 面部识别

3. 比较指纹

4. 根据临床分级评估疾病严重程度

5. 工作资料的文本相似度以恢复匹配

6. 用于配对相似问题的文本相似度

为什么Siamese神经网络被称为one-shot分类?

1. one-shot分类模型仅使用每个新类别的单个训练样本即可正确进行预测。

2. Siamese 网络使用有监督的训练方法来学习通用输入特征,然后根据训练数据对未知的类分布进行预测。

3. 受过训练的 Siamese 网络使用一次性学习来预测两个输入之间的相似性或不相似性,即使这些新分布中的样本很少。

Siamese 网络的优点

1. Siamese 网络是一种one-shot分类模型,只需一个训练样本即可进行预测。

2. 对类别不平衡更鲁棒,因为它需要很少的信息。 它可以用于某些类的样本很少的数据集。

3. Siamese 网络的one-shot学习特性不依赖于特定领域的知识,而是利用了深度学习技术。

Siamese 网络的缺点

仅输出相似性分数而不输出概率。:互斥事件的概率总和为 1。而距离不限于小于或等于 1。

为什么姐妹网络一定要一样?

两个姐妹卷积网络((sister convolutional network))的模型架构、超参数和权重必须相同。 它确保它们各自的网络不会将两个极其相似的图像映射到非常不同的特征空间,因为每个网络计算相同的函数。

Siamese 网络使用的损失函数

1. Siamese 网络使用相似度分数来预测两个输入是相似还是不同,使用度量学习方法,该方法找到其输入之间的相对距离。

2. 可以使用二元交叉熵、对比函数或三重损失计算相似度分数。

3. Siamese 网络执行二元分类,将输入分类为相似或不相似;因此,默认使用二元交叉熵损失函数。

对比损失函数

1. 对比损失函数通过对比两个输入来区分相似和不同的图像。当你在训练时不了解所有类别并且训练数据有限时,它会有所帮助。它创建了一种数据编码,可以在将来有新类时使用。

2. 对比损失需要一对正负训练数据。 正对包含一个anchor样本和一个正样本,负对包含一个anchor样本和一个负样本。

3. 对比损失函数的目标是使正对具有较小的距离,对负对具有较大的距离。

在上面的等式中,当输入来自同一类时,Y 为 0;否则,Y 的值为 1。

m 是定义半径的余量,以指示超出此余量的不同对不会造成损失,并且始终大于 0。

Dw 是姐妹 siamese 网络输出之间的欧几里得距离。

Triplet Loss

在 Triplet loss 中,我们使用数据的三元组而不是二元对。 三元组由anchor、正样本和负样本组成,主要用于面部识别。

在 Triplet loss 中,anchor和正样本编码之间的距离被最小化,而anchor和负样本编码之间的距离被最大化。

Triplet loss 将 d(a,p) 推到 0 ,并且 d(a,n) 大于 d(a,p)+margin

结论

Siamese 网络受到 Siamese twins 的启发,是一种one-shot分类,用于区分相似和不同的图像。 即使不知道所有训练时的类别并且训练数据有限,它也可以应用。 Siamese 网络基于度量学习方法,该方法使用二元交叉熵或对比损失或三重损失找到其输入之间的相对距离。

原文链接

https://medium.com/swlh/one-shot-learning-with-siamese-network-1c7404c35fda

本文来源于公众号 CV技术指南 的项目分享系列。

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

 在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

其它文章

北京大学施柏鑫:从审稿人视角,谈谈怎么写一篇CVPR论文

Siamese network总结

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

欠拟合与过拟合技术总结

归一化方法总结

论文创新的常见思路总结

CV方向的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述

知识蒸馏的简要概述

优化OpenCV视频的读取速度

NMS总结

损失函数技术总结

注意力机制技术总结

特征金字塔技术总结

池化技术总结

数据增强方法总结

CNN结构演变总结(一)经典模型

CNN结构演变总结(二)轻量化模型

CNN结构演变总结(三)设计原则

如何看待计算机视觉未来的走向

CNN可视化技术总结(一)-特征图可视化

CNN可视化技术总结(二)-卷积核可视化

CNN可视化技术总结(三)-类可视化

CNN可视化技术总结(四)-可视化工具与项目

Siamese network总结相关推荐

  1. 基于caffe的度量学习实现(Siamese network Triplet network)

    基于caffe的度量学习实现,主要是孪生网络和三元组网络(Siamese network & Triplet network)实现图像的分类和度量. 包含数据集制作脚本,训练测试脚本和pyth ...

  2. 【深度学习】孪生网络(Siamese Network)的模式和训练过程

    [深度学习]孪生网络(Siamese Network)的模式和训练过程 文章目录 1 概述 2 Siamese network 孪生神经网络 3 孪生神经网络和伪孪生神经网络分别适用于什么场景呢? 4 ...

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

    Siamese Network 原文:<Learning a Similarity Metric Discriminatively, with Application to Face Verif ...

  4. Caffe官方教程翻译(3):Siamese Network Training with Caffe

    前言 最近打算重新跟着官方教程学习一下caffe,顺便也自己翻译了一下官方的文档.自己也做了一些标注,都用斜体标记出来了.中间可能额外还加了自己遇到的问题或是运行结果之类的.欢迎交流指正,拒绝喷子! ...

  5. 【模型解读】深度学习网络之Siamese Network网络

    文章首发于微信公众号<有三AI> [模型解读]深度学习网络只能有一个输入吗 继续我们之前的专栏<模型解读>,今天说多输入网络,很久没写了因为实在是有更重要的事情. 平常我们所见 ...

  6. Siamese Network (应用篇1) :孪生网络特征用于图像匹配 ICPR2016

    参考论文:Siamese Network Features for Image Matching 会议水平:2016 23rd International Conference on Pattern ...

  7. ICCV 2017 DSiam:《Learning Dynamic Siamese Network for Visual Object Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做DSiam.作者提出一个Dynamic Siamese Network,可以使用一个transformation learning model来在线学习目标的外观 ...

  8. Siamese Network理解

    提起siamese network一般都会引用这两篇文章: <Learning a similarity metric discriminatively, with application to ...

  9. 【论文笔记】LSNet: Extremely Light-Weight Siamese Network For Change Detection in Remote Sensing Image

    论文 论文题目:LSNET: EXTREMELY LIGHT-WEIGHT SIAMESE NETWORK FOR CHANGE DETECTIONOF REMOTE SENSING IMAGE 投递 ...

  10. 【论文阅读记录】孪生网络(Siamese network)

    前言: { 之前深度学习不流行的时候,一般像指纹鉴别这种任务都需要很复杂的特征工程(比如寻找角点[1])来完成.我在谷歌搜索了深度学习的指纹识别解决方案,之后搜到了[2],便因此了解到了孪生网络(Si ...

最新文章

  1. 训练超大规模图模型,PyTorchBigGraph如何做到?
  2. C++语言学习思维导图
  3. golang函数多值返回示例
  4. EasyRTSPClient:基于live555封装的支持重连的RTSP客户端RTSPClient
  5. 【数学】异或(jzoj 2298)
  6. 使用混合多云每个人都应避免的3个陷阱(第3部分)
  7. 多生产者多消费者linux内核,Linux多线程实现“生产者和消费者”
  8. 鸿蒙操作系统用的微内核到底是什么?
  9. /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.12‘ not found解决办法
  10. matlab 有公式 变量,matlab两个变量拟合公式x=0.40.450.50.550? 爱问知识人
  11. 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?
  12. CopyToDataTable()、SetField()
  13. 软件设计是怎样炼成的(3)——软件系统不是木桶型的
  14. Java-多线程第三篇3种创建的线程方式、线程的生命周期、线程控制、线程同步、线程通信...
  15. 一个贼简单的代码表白
  16. Sentinel-2(哨兵2号)数据下载及预处理
  17. python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字符串常用方法...
  18. windows11中windows安全中心打不开的解决办法
  19. matlab 将矩阵变为一列,MATLAB中把一个矩阵转换为一列
  20. 基于蜜蜂优化算法优化的卷积神经网络(CNN)图像分类——附代码

热门文章

  1. jmeter接口测试传参问题汇总
  2. 转发asp.net探针源码
  3. 【依赖注入的几种方式】
  4. ES中如何实现类似having的先聚合再过滤查询
  5. 【Egg】静态资源及缓存设置
  6. Java 实例 - 查找字符串最后一次出现的位置gfddsgwes
  7. 我,32岁,土木工程人,终于转行了
  8. java int 带下划线,带下划线的Java数字字面量
  9. php 二维数组中查找,二维数组中的查找
  10. 【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放具体解释...