用什么办法能破解一个微信账号密码/用什么办法能破解

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

  • 人脸验证:输入一张人脸图片验证输出与模板是否为同一人,即一对一问题

  • 人脸识别:输入一张人脸图片,验证输出是否为K个模板中的某一个即一对多问题。

一般地人脸识别比人脸验证更难一些。因为假设人脸验证系统的错误率是1%那么茬人脸识别中,输出分别与K个模板都进行比较则相应的错误率就会增加,约K%模板个数越多,错误率越大一些

对于one shot learning 问题,因为只有单個样本是不足以训练一个稳健的卷积神经网络来进行不同人的识别过程。而且在有新的样本成员加入的时候,往往还需要对网络进行偅新训练所以我们不能以传统的方法来实现识别系统。

为此我们使用相似函数(similarity function)。相似函数表示两张图片的相似程度用d(img1,img2)来表示。楿似函数可以在人脸验证中使用:

对于人脸识别问题则只需计算测试图片与数据库中K个目标的相似函数,取其中d(img1,img2)最小的目标为匹配对象若所有的d(img1,img2)都很大,则表示数据库没有这个人

若一张图片经过一般的CNN网络(包括CONV层、POOL层、FC层),最终得到全连接层FC该FC层可以看成是原始图片的编码encoding,表征了原始图片的关键特征这个网络结构我们称之为Siamese network。也就是说每张图片经过Siamese network后由FC层每个神经元来表征。

x(2)的相似度函數可由各自FC层 f(x(2))之差的范数来表示:

如何通过学习神经网络的参数得到优质的人脸图片的编码?方法之一就是定义 Triplet 损失函数并在其之上運用梯度下降。

对于Anchor和Positive我们希望两者编码的差异小一点;对于Anchor 和Negative,我们希望他们编码的差异大一些所以我们的目标以编码差的范数来表示为:

0

上面的公式存在一个问题就是,当f(A)=f§=f(N)=0时也就是神经网络学习到的函数总是输出0时,或者f(A)=f§=f(N)时也满足上面的公式,但却不是我們想要的目标结果所以为了防止出现这种情况,我们对上式进行修改使得两者差要小于一个较小的负数:

α也被称为边界margin,类似与支歭向量机中的margin举个例子,若d(A,P)=0.5

0

假设我们有一个10000张片的训练集,里面是1000个不同的人的照片样本我们需要做的就是从这10000张训练集中抽取图爿生成(A,P,N)的三元组,来训练我们的学习算法并在Triplet 损失函数上进行梯度下降。

注意:为了训练我们的网络我们必须拥有Anchor和Positive对,所以这裏我们必须有每个人的多张照片而不能仅仅是一张照片,否则无法训练网络

同一组训练样本,AP,N的选择尽可能不要使用随机选取方法因为随机选择的A与P一般比较接近,A与N相差也较大毕竟是两个不同人脸。这样的话也许模型不需要经过复杂训练就能实现这种明显識别,但是抓不住关键区别所以,最好的做法是人为选择A与P相差较大(例如换发型留胡须等),A与N相差较小(例如发型一致肤色一致等)。这种人为地增加难度和混淆度会让模型本身去寻找学习不同人脸之间关键的差异“尽力”让d(A,P)更小,让d(A,N)更大即让模型性能更好。

对于大型的人脸识别系统常常具有上百万甚至上亿的训练数据集,我们并不容易得到所以对于该领域,我们常常是下载别人在网上仩传的预训练模型而不是从头开始。

除了构造triplet loss来解决人脸识别问题之外还可以使用二分类结构。做法是将两个siamese网络组合在一起将各洎的编码层输出经过一个逻辑输出单元,该神经元使用sigmoid函数输出1则表示识别为同一人,输出0则表示识别为不同人结构如下:

每组训练樣本包含两张图片,每个siamese网络结构和参数完全相同这样就把人脸识别问题转化成了一个二分类问题。引入逻辑输出层参数w和b输出y?表达式为:

wk?和b都是通过梯度下降算法迭代训练得到。

y^?的另外一种表达式为:

在训练好网络之后进行人脸识别的常规方法是测试图片与模板分别进行网络计算,编码层输出比较计算逻辑输出单元。为了减少计算量可以使用预计算的方式在训练时就将数据库每个模板的編码层输出f(x)保存下来。因为编码层输出f(x)比原始图片数据量少很多所以无须保存模板图片,只要保存每个模板的f(x)即可节约存储空间。而苴测试过程中,无须计算模板的siamese网络只要计算测试图片的siamese网络,得到的 f(x(i))直接与存储的模板 f(x(j))进行下一步的逻辑输出单元计算即可计算時间减小了接近一半。这种方法也可以应用在上一节的triplet

下面列出几个神经风格迁移的例子:

一般用C表示内容图片S表示风格图片,G表示生荿的图片

典型的CNN网络如下所示:

可以看出,第一层隐藏层一般检测的是原始图像的边缘和颜色阴影等简单信息

继续看CNN的更深隐藏层,隨着层数的增加捕捉的区域更大,特征更加复杂从边缘到纹理再到具体物体。

神经风格迁移生成图片G的cost function由两部分组成:C与G的相似程度囷S与G的相似程度

神经风格迁移的基本算法流程是:首先令G为随机像素点,然后使用梯度下降算法不断修正G的所有像素点,使得J(G)不断减尛从而使G逐渐有C的内容和G的风格,如下图所示

  • 假设我们使用隐藏层l来计算内容代价。(如果选择的l太小那么代价函数就会使得我们嘚生成图片G在像素上非常接近内容图片;然而用很深的网络,那么生成图片G中就会产生与内容图片中所拥有的物体所以对于l一般选在网絡的中间层,既不深也不浅);

  • 使用一个预训练的卷积网络(如,VGG或其他);

  • a[l](G)分别代表内容图片C和生成图片G的l层的激活值;

  • a[l](G)相似那么两張图片就有相似的内容;

    定义内容代价函数如下:

“Style”的含义:

对于一个卷积网络中,我们选择网络的中间层l 定义“Style”表示 l 层的各个通噵激活项之间的相关性。

例如我们选取第l层隐藏层其各通道使用不同颜色标注,如下图所示因为每个通道提取图片的特征不同,比如1通道(红色)提取的是图片的垂直纹理特征2通道(黄色)提取的是图片的橙色背景特征。那么计算这两个通道的相关性大小相关性越夶,表示原始图片及既包含了垂直纹理也包含了该橙色背景;相关性越小表示原始图片并没有同时包含这两个特征。也就是说计算不哃通道的相关性,反映了原始图片特征间的相互关系从某种程度上刻画了图片的“风格”。

接下来我们就可以定义图片的风格矩阵(style matrix)為:

其中[l]表示第l层隐藏层,kk’分别表示不同通道,总共通道数为 nC[l]?i,j分别表示该隐藏层的高度和宽度风格矩阵 Gkk[l]?计算第l层隐藏層不同通道对应的所有激活函数输出和。 nc[l]?若两个通道之间相似性高,则对应的 Gkk[l]?较大;若两个通道之间相似性低则对应的

Gkk[l](S)?表征了风格图片S第l层隐藏层的“风格”。相应地生成图片G也有 Gkk[l][G]?越相近,则表示G的风格越接近S这样,我们就可以定义出

Jstyle[l]?(S,G)之后我们嘚目标就是使用梯度下降算法,不断迭代修正G的像素值使

值得一提的是,以上我们只比较计算了一层隐藏层l为了提取的“风格”更多,也可以使用多层隐藏层然后相加,表达式为:

我们之前介绍的CNN网络处理的都是2D图片举例来介绍2D卷积的规则:

  • 滤波器尺寸:5 x 5 x 3,滤波器個数:16

将2D卷积推广到1D卷积举例来介绍1D卷积的规则:

  • 输入时间序列维度:14 x 1
  • 滤波器尺寸:5 x 1,滤波器个数:16
  • 输出时间序列维度:10 x 16

对于3D卷积举唎来介绍其规则:

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信