深度学习笔记(43) Siamese网络

  • 1. Siamese网络
  • 2. 建立人脸识别系统
  • 3. 训练网络

1. Siamese网络

深度学习笔记(42) 人脸识别 提到的函数ddd的作用:
输入两张人脸,然后告诉它们的相似度

实现这个功能的一个方式就是用Siamese网络


经常看到这样的卷积网络,输入图片x(1)
然后通过一些列卷积,池化和全连接层
最终得到这样的特征向量(编号1)

有时这个会被送进softmax单元来做分类,但在这里不会这么做
关注的重点是这个向量(编号1),假如它有128个数,它是由网络深层的全连接层计算出来的
要给这128个数命个名字,把它叫做f(x(1))
可以把f(x(1))看作是输入图像x(1)的编码,取这个输入图像(编号2)
在这里是大雄的图片,然后表示成128维的向量


2. 建立人脸识别系统

建立一个人脸识别系统的方法就:


如果要比较两个图片的话,例如这里的第一张(编号1)和第二张图片(编号2)
要做的就是把第二张图片喂给有同样参数的同样的神经网络
然后得到一个不同的128维的向量(编号3),这个向量代表或者编码第二个图片
要把第二张图片的编码叫做f(x(2))
用x(1)和x(2)仅仅代表两个输入图片
他们没必要非是第一个和第二个训练样本,可以是任意两个图片

最后如果相信这些编码很好地代表了这两个图片,要做的就是定义ddd
将x(1)和x(2)的距离定义为这两幅图片的编码之差的范数:


对于两个不同的输入,运行相同的卷积神经网络,然后比较它们
这一般叫做Siamese网络架构

这里提到的很多观点,都来自于Yaniv Taigman,Ming Yang,Marc’ Aurelio Ranzato,Lior Wolf的论文
他们开发的系统叫做DeepFace


3. 训练网络

不要忘了这两个网络有相同的参数,所以实际要做的就是训练一个网络
它计算得到的编码可以用于函数ddd,它可以告诉你两张图片是否是同一个人
更准确地说,神经网络的参数定义了一个编码函数f(x(i))


如果给定输入图像x(i),这个网络会输出x(i)的128维的编码
要做的就是学习参数,使得如果两个图片x(i)和x(j)是同一个人
那么得到的两个编码的距离就小

前面几个幻灯片我都用的是x(1)和x(2),其实训练集里任意一对x(i)和x(j)都可以
相反,如果x(i)和x(j)是不同的人,那么会想让它们之间的编码距离大一点

如果改变这个网络所有层的参数,会得到不同的编码结果
要做的就是用反向传播来改变这些所有的参数,以确保满足这些条件


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(42) 人脸识别
深度学习笔记(41) 候选区域
深度学习笔记(40) YOLO
深度学习笔记(39) Anchor Boxes
深度学习笔记(38) 非极大值抑制


谢谢!

深度学习笔记(43) Siamese网络相关推荐

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

    目录 1,什么时候需要多个输入 2,常见的多输入网络 2.1 Siamese网络(孪生网络) 2.1 Triplet网络 1,什么时候需要多个输入 深度学习网络一般是输入都是一个,或者是一段视频切片, ...

  2. 【深度学习】图像匹配Siamese网络实验记录

    图像匹配Siamese网络实验记录 Ⅰ. Siamese 网络介绍 Ⅱ. 数据集 AT&T 分拣行李匹配图像 Ⅲ. 实验记录 A. 模型1 1. 实验1 2. 实验2 3. 实验3 B. 模型 ...

  3. 深度学习笔记之lSTM网络

    解决梯度爆炸问题可以利用LSTM网络 也可以用clip gradients 算法https://blog.csdn.net/jiachen0212/article/details/80285648 相 ...

  4. 深度学习笔记(46) 深度卷积网络学习

    深度学习笔记(46) 深度卷积网络学习 1. 学习内容 2. 第一层 3. 第二层 4. 第三层 5. 第四层 6. 第五层 1. 学习内容 深度卷积网络到底在学什么? 来看一个例子,假如训练了一个卷 ...

  5. 深度学习笔记(30) Inception网络

    深度学习笔记(30) Inception网络 1. Inception模块 2. 瓶颈层 3. Inception网络 4. Inception网络的细节 1. Inception模块 构建卷积层时 ...

  6. 深度学习笔记(27) 经典卷积网络

    深度学习笔记(27) 经典卷积网络 1. 前言 2. LeNet-5 3. AlexNet 4. VGGNet 1. 前言 讲了基本构建,比如卷积层.池化层以及全连接层这些组件 事实上,过去几年计算机 ...

  7. 深度学习笔记(12) Batch归一化网络

    深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...

  8. HALCON 21.11:深度学习笔记---网络和训练过程(4)

    HALCON 21.11:深度学习笔记---网络和训练过程(4) HALCON 21.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的.整 ...

  9. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

最新文章

  1. 学python需要学数据库吗-Python学什么数据库
  2. cms系统与dreamweaver建站
  3. ansible(6)——模块命令command、shell详细用法
  4. 您是否也想过让你的电脑百毒不侵呢!
  5. JAVA_if或者怎么用,Java If语句
  6. android跨进程事件注入(程序模拟用户输入)
  7. sigkill mysql_Ubuntu不能停止mysqld
  8. 笔记本显示服务器,如何将笔记本电脑用作无头服务器的键盘,显示器和鼠标
  9. 04_数字的处理方法(保留小数点两位、将数字转化为千分位格式)
  10. c语言大作业背单词,c语言必背代码 c语言入门必背单词 c语言必背100代码
  11. 不要太在意别人的看法
  12. 【评测】各种细胞治疗处理技术设备
  13. react native使用echarts图表
  14. C语言快速排序,以及注意点。
  15. 新版TCGA的突变SNP数据添加临床信息
  16. oracle temporarily delayed,temporarily closed造句
  17. 上官婉儿墓志 - 还原历史真相
  18. vue项目将px转为rem实践
  19. IoT开源平台Thingsboard二次开发研究
  20. 谷歌浏览器被搜狗劫持问题

热门文章

  1. IT人不可不听的10个职场故事
  2. 大屏监控系统实战(7)-后端整合MybatisPlus并暴露服务
  3. 少年,你知道怎么用一行代码解决分布式事务问题吗?
  4. 程序员的进阶课-架构师之路(18)-图
  5. 2459: 爱你多少年呢
  6. vs studio2015导入本地项目_Visual Studio2019自定义项目模板
  7. 4x3矩阵键盘扫描法c语言,四种4*4矩阵键盘的扫描方法
  8. html批量导入excel表格,html 导入excel表格数据格式-如何将网页中的表格快速复制到EXCEL中...
  9. Python全栈开发之数据类型
  10. 想和人脑一样智能? IBM 的芯片级模仿才是关键