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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
siamese(孪生) 网络
 
作者:梦dancing
  9918  次浏览      18
 2020-9-29
 
编辑推荐:
本文主要介绍了原始的孪生网络和改进的的孪生网络,介绍了一些算法的大致思路,希望对您的学习有所帮助。
本文来自于CSDN,由火龙果软件Alice编辑、推荐。

siamese 网络, 是05年Yann Lecun提出来的。它的特点是它接收两个图片作为输入,而不是一张图片作为输入。

下面介绍原始的孪生网络:

目的:比较两幅图片是否相似,或者说相似度是多少

输入:两幅图片

输出:一个相似度数值

其实我觉得,用“计算相似度”这个词有点不合适,我觉得应该翻译为匹配程度。因为文献所采用的训练数据中,如果两张图片匹配,输出值标注为y=1,如果两张图片不匹配,那么训练数据标注为y=-1,也就是说,这个训练数据的标注方法,根本就不是一个相似度数值,而是一个是否匹配的数值。我们打个比方,有三样物体:钢笔、铅笔、书包,那么在训练数据中,就把钢笔和铅笔标注为y=1,而不是用一个相似度数值来衡量,比我钢笔和铅笔的相似度我们把它标注为y=0.9……,所以说用于用相似度这个词有点不合理,即使我们最后计算出来的值是一个-1~1之间的数……

下面介绍改进的的孪生网络:

2015年CVPR的一篇关于图像相似度计算的文章:《Learning to Compare Image Patches via Convolutional Neural Networks》,本篇文章对经典的算法Siamese Networks 做了改进。

先在这里解释下为什么作者要把它称之为:2-channel networks。理解了2-channel这个词,有助于我们后面理解算法。Siamese 网络,我们可以看到这个网络有两个分支组成,因为我们是要比较两张图片patch1、patch2的相似度。

Siamese 网络(2-branches networks)的大体思路:

1. 让patch1、patch2分别经过网络,进行提取特征向量(Siamese 对于两张图片patch1、patch2的特征提取过程是相互独立的)

2. 然后在最后一层对两个两个特征向量做一个相似度损失函数,进行网络训练。

paper所提出的算法(2-channel networks) 的大体思路:

1. 把patch1、patch2合在一起,把这两张图片,看成是一张双通道的图像。也就是把两个(1,64,64)单通道的数据,放在一起,成为了(2,64,64)的双通道矩阵,

2. 然后把这个矩阵数据作为网络的输入,这就是所谓的:2-channel。

这样,跳过了分支的显式的特征提取过程,而是直接学习相似度评价函数。最后一层直接是全连接层,输出神经元个数直接为1,直接表示两张图片的相似度。当然CNN,如果输入的是双通道图片,也就是相当于网络的输入的是2个feature map,经过第一层的卷积后网,两张图片的像素就进行了相关的加权组合并映射,这也就是说,用2-channel的方法,经过了第一次的卷积后,两张输入图片就不分你我了。而Siamese网络是到了最后全连接的时候,两张图片的相关神经元才联系在一起。2015年CVPR文章几个重要创新写在下面:

Patch的选取

假设我们输入的是大小为64*64的一张图片,那么Central-surround two-stream network的意思就是把图片64*64的图片,处理成两张32*32图片,然后再输入网络,那么这两张32*32的图片是怎么计算得到的?

法1. Central-surround方法,也就是第一张图片是通过以图片中心,进行裁剪出32*32的图片,也就是下图的浅蓝色区域的图片。

法2. 下采样方法。直接通过对整张图片下采样的方法得到的,也就是说直接把64*64的图片进行下采样得到32*32的图片。其实这个就像多尺度一样,在图片处理领域经常采用多分辨率、多尺度,比如什么sift、还有什么高斯金字塔什么的,总之作者说了,多分辨率可以提高两张图片的match效果。

这个Central-surround two-stream network可以和上面提到的2-channel、Siamese结合在一起,提高精度。下面就是Siamese和Central-surround two-stream network结合在一起的网络结构:

SPP原理

空间金字塔池化采样:这个又称之为SPP(Spatial pyramid pooling,空间金字塔池化)池化,这个又什么用呢?这个跟上面的有点类似,这个其实就类似于多图片多尺度处理,我们知道现有的卷积神经网络中,输入层的图片的大小一般都是固定的,这也是我之前所理解的一个神经网络。直到知道SPP,感觉视觉又开阔了许多,菜鸟又长见识了。我们知道现在的很多算法中,讲到的训练数据图片的大小,都是什么32*32,96*96,227*227等大小,也就是说训练数据必须归一化到同样的大小,那么假设我的训练数据是各种各样的图片大小呢?我是否一定要把它裁剪成全部一样大小的图片才可以进入卷积神经网络训练呢?这就是SPP算法所要解决的问题,训练数据图片不需要归一化,而且江湖传说,效果比传统的方法的效果还好。下面是Siamese和SPP结合在一起的网络结构:

就是在全连接层的前面加了个SPP层。总之这一步是为了使得网络可以输入各种大小的图片,提高网络的实用性,鲁棒性等。paper最后的算法就是:2-channel+Central-surround two-stream+SPP 的网络结构。

举例

有一篇文章和这个网络差不多,文章:《 Learning Deep Face Representation 》译:《学习深层人脸表示》。下面以这篇文章为例解释孪生网络。

人脸的表示,易于实施, 叫做Pyramid CNN (金字塔CNN),采用了greedy-filter-and-down-sample (贪心-滤波-和-向下-采样) 的操作,使得训练非常快,而且高效,并且PyramidCNN可以和多尺度人脸特征结合。97.3% 的LFW。

传统的人脸特征表示的方法:

注意文章的基本的网络结构不是传统上的CNN结构,而是“Siamese”网络【2005 Lecun 组的一篇文章】,它的特点是它接收两个图片作为输入,而不是一张图片作为输入。

而文章中,作者采用深度神经网络,DCNN来提取特征,其网络结构图:

网络的主要特点:

1. 它们是由多个金字塔组成,分为不同个level级别的特征,

2. 每一个level的网络由两部分组成,一部分是共享的层,它由它的前一个level的网络层组成;另一部分是一个非共享层,在每一层中训练只需要训练非共享层就可以

共享层是由前一个level的的网络层共享过来,每一个神经网络中,共享层用来进行数据的预处理,比如卷积下采样等。非共享层用来训练已经处理好的图片(由于网络的共享层,使得每一个level的训练速度不会随着网络层数的增多而急剧变慢,提高训练时间,说白了也就是说每次只需要训练网络的最后一层就可以了,前面的层可以保持固定。)

采用金字塔的原因在于:1.加快网络的训练速度;2. 可以提取多尺度人脸结构特征;

注意每一个非共享level有多个神经网络,分别对应于每个输入图像的patch(小块),有眼睛,鼻子,嘴。每个网络的训练目标函数都是下面的损失函数:

其表示的意思就是同一个人的距离要相互接近,而非同一个人的表示要相互远离。利用这个损失函数来进行网络的训练。训练方法:

最终的特征:它由所有的level, 所有的patch特征级联而成,而patch的选择则依赖于人脸特征点的检测和alignment(校正)。最终形成的特征其实是过完全的,也就是说有很多的冗余,但是很多文章都表明这种冗余性对于识别来说具有重要性。应该来说每一个level的所有的patch特征连接起来之后的向量就是一个人脸在这个level的特征了,多个level的特征再连接起来就形成了多尺度的特征表示。

文章还说了,Pyramid CNN方法提取的特征可以很稀疏,最少可以在8d,而在这么低纬度的特征下,其识别率还不低。通过相同的维度特征的情况下进行识别率比较:其中LBP特征是通过了PCA降维到相对应的维度。

新的评判标准:因为在LFW数据库上面的识别率已经达到了99%以上了,所以作者他自己提出了一个新的评判标准,在人脸verification(验证)中,正确的匹配可能会比错误的匹配少(在安全接入方面,希望false positive 要尽可能的小,已防止非法进入)。新的评判标准就是在固定一个错误的接受率(false positive rate FPR )阈值下,评判各个算法的性能,如识别率等。

   
9918 次浏览       18
相关文章

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

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

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]
 
最新文章
多目标跟踪:AI产品经理需要了解的CV通识
深度学习架构
卷积神经网络之前向传播算法
从0到1搭建AI中台
工业机器人控制系统架构介绍
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
更多...   
成功案例
某综合性科研机构 人工智能与机器学习应用
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow框架实践
某领先数字地图提供商 Python数据分析与机器学习
中国移动 人工智能、机器学习和深度学习
更多...