您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
siamese network和triplet network原理与应用
 
作者:言有三
   次浏览      
 2020-8-25
 
编辑推荐:
本文首先介绍多输入网络的应用背景,一个是siamese网络,一个是triplet网络,其次介绍了网络结构原理和应用,希望对您的学习有所帮助。
本文来自于知乎,由火龙果软件Alice编辑、推荐。

1 多输入网络的应用背景

首先我们说说在什么情况下,需要多个输入,只以纯图像应用为例。

1.1 图像验证与匹对

早在上个世纪90年代的时候,LeCun等研究人员就开始利用神经网络陆续进行一些研究,比如我们熟知的大名鼎鼎的LeNet5,但这绝不是唯一,今天我们来说他们的另一种网络结构,Siamese Network,网络细节我们后面这些,这里先说应用背景。

签名验证:

无独有偶,还是从手写字开始,同样是用于银行,用于验证签名是否一致。两个网络都是同样规格的图像输入,最后输出一个相似度。

看到这里,你应该能够想起来如今它的更加广泛的应用,没错,就是人脸验证,或者说人脸识别了。

其实用的时候都不需要两个输入,因为可以建立一个离线数据集专门用于检索匹配。

而且,你可以在此基础上拓展出非常多的玩法,什么夫妻脸之类的。

1.2 目标跟踪

目标跟踪是一个什么过程?就是在时序帧中搜索目标的过程,本质上就是检索。

不管是传统的目标跟踪中的生成模型和判别模型,还是用深度学习来做目标跟踪,本质上都是来求取目标区域与搜索区域的相似度,这就是典型的多输入。

用深度学习来做,就是一个小图像和一个大图像分别输入网络,输出相似度。

1.3 排序

还有一类问题,可以用多输入网络来做,那就是排序。有的时候,我们很难估计一个人的实际年龄或者颜值,但是估计相对年龄和颜值就简单多了。

而且,在此之上,做些什么谁更可爱,谁更成熟之类的,可以想出无数花样,解释的通就行了。

02 多输入网络

在这里,给大家介绍两个常见的网络,一个是siamese网络,一个是triplet网络。

2.1 siamese network

Siamese本意是“暹罗”人或“泰国”人,后在英语中指“孪生”、“连体”,这是一个外来词,来源于十九世纪泰国出生的一对连体婴儿,具体的故事我们就不说了,挺有看头,大家可以自己去了解。

顾名思义,有两个输入,两个网络,根据这两个网络是否共享权重,可以分为真孪生网络siamese network和伪孪生网络pseudo-siamese network。

真孪生网络siamese network的结构示意图如下:

伪孪生网络pseudo-siamese network的结构示意图如下:

可以看出差别就在于是否共享权重,loss的选择就多了,相似度计算方法就多少,它的计算方法就有多少,交叉熵,欧式距离,余弦距离等都很常用。

那么是否需要共享权重呢?这就看研究的问题而定了,很明显不共享权重有更大的发挥空间,这个问题本文不展开讲。

2.2 triplet network

如果将上面的二输入拓展为三输入怎么样?做人脸识别的同学想必不陌生。

没错,就是triplet network。

大家都知道,训练人脸识别网络的时候需要输入图像对来判断是不是同一个人,loss是两个样本之间的相似度。不过,光是相似度是不够的。

大家在研究的是同一个问题,如果想得到更优良的性能,不仅要将正负样本区分开,还要让类内更加紧凑(方差小),类间更加疏远(方差大)。

triplet network将输入改成三个,训练的时候使用一个正例+两个负例,或者一个负例+两个正例。

训练的目标就是上面的:同类别间的距离尽可能的小,不同类别间的距离尽可能的大。

基准样本x和负样本x-之间的距离定义如下:

基准样本x和正样本x+之间的距离定义如下:

然后优化目标就等于:

我们假如网络训练的特别好,令margin=1,此时

那么上面的距离:

损失也就趋向于0,当然这种要求是不可能达到的,也不合理,因为有的正样本的确不那么相似,有的负样本的确很相似,强行学习过拟合风险就增加了。

所以实际用的时候,这个margin应该取一个合理的值,而且样本的选择也很有技巧,所以triplet network没有看起来那么好训练。Anyway,这还是很优雅的思想的。

今天就这么多,更多的并行的输入也是有的,就作为大家的延伸阅读吧。

 

 

   
次浏览       
相关文章

基于图卷积网络的图深度学习
自动驾驶中的3D目标检测
工业机器人控制系统架构介绍
项目实战:如何构建知识图谱
 
相关文档

5G人工智能物联网的典型应用
深度学习在自动驾驶中的应用
图神经网络在交叉学科领域的应用研究
无人机系统原理
相关课程

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
多目标跟踪:AI产品经理需要了解的CV通识
深度学习架构
卷积神经网络之前向传播算法
从0到1搭建AI中台
工业机器人控制系统架构介绍
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
更多...   
成功案例
某综合性科研机构 人工智能与机器学习应用
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow框架实践
某领先数字地图提供商 Python数据分析与机器学习
中国移动 人工智能、机器学习和深度学习
更多...