第四周 特殊应用:人脸识别和神经风格转换(Special applications: Face recognition &Neural style transfer)

4.1 什么是人脸识别?(What is face recognition?)

  • 人脸验证(face verification)问题:如果有一张输入图片以及某人的ID或者是名字,系统要做的是验证输入图片是否是这个人,也被称作1对1问题,只需要弄明白这个人是否和他声称的身份相符

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

4.2 One-Shot学习(One-shot learning)

要让人脸识别能够做到一次学习,要做的是学习Similarity函数

以两张图片作为输入,然后输出这两张图片的差异值

  • 如果差异值大于τ,就能预测这是不同的两个人

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

如果之后有新人加入了团队(编号5),只需将他的照片加入数据库,系统依然能照常工作

4.3 Siamese 网络(Siamese network)

函数d的作用是输入两张人脸,然后输出相似度。实现这个功能的一个方式是用Siamese网络

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

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

4.4 Triplet 损失(Triplet 损失)

要想通过学习神经网络的参数来得到优质的人脸图片编码,方法之一就是定义三元组损失函数然后应用梯度下降

网络的参数或者编码应满足:

损失函数的定义基于三元图片组,即取这个和0的最大值:

整个网络的代价函数是训练集中单个三元组损失的总和

总结:

训练三元组损失需要把训练集做成很多三元组,这就是一个三元组(编号1),有一个Anchor图片和Positive图片,这两个(AnchorPositive)是同一个人,还有一张另一个人的Negative图片。这是另一组(编号2),其中AnchorPositive图片是同一个人,但是AnchorNegative不是同一个人,等等。

4.5 面部验证与二分类(Face verification and binary classification)

另一个训练神经网络的方法是选取一对神经网络,选取Siamese网络,使其同时计算这些嵌入,比如说128维的嵌入(编号1),或者更高维,然后将其输入到逻辑回归单元进行预测,如果是相同的人,那么输出是1,若是不同的人,输出是0。这就把人脸识别问题转换为一个二分类问题,训练这种系统时可以替换Triplet loss的方法

最后的逻辑回归单元怎么处理:

上面神经网络拥有的参数和下面神经网络的相同(编号3和4所示的网络),两组参数是绑定的,这样的系统效果很好

总结:把人脸验证当作一个监督学习,创建一个只有成对图片的训练集,不是三个一组,而是成对的图片,目标标签是1表示一对图片是一个人,目标标签是0表示图片中是不同的人。利用不同的成对图片,使用反向传播算法去训练Siamese神经网络

4.6 什么是深度卷积网络?(What are deep ConvNets learning?)

假如训练了一个Alexnet轻量级网络,不同层之间隐藏单元的计算结果如下:

从第一层的隐藏单元开始,将训练集经过神经网络,然后弄明白哪一张图片最大限度地激活特定的单元。在第一层的隐藏单元,只能看到小部分卷积神经,只有一小块图片块是有意义的,因为这就是特定单元所能看到的全部

然后选一个另一个第一层的隐藏单元,重复刚才的步骤:

对其他隐藏单元也进行处理,会发现其他隐藏单元趋向于激活类似于这样的图片:

以此类推,这是9个不同的代表性神经元,每一个不同的图片块都最大化地激活了。可以理解为第一层的隐藏单元通常会找一些简单的特征,比如说边缘或者颜色阴影

在深层部分,一个隐藏单元会看到一张图片更大的部分,在极端的情况下,可以假设每一个像素都会影响到神经网络更深层的输出,靠后的隐藏单元可以看到更大的图片块

第一层,第一个被高度激活的单元:

第二层检测的特征变得更加复杂:

第三层明显检测到更复杂的模式

第四层,检测到的模式和特征更加复杂:

第五层检测到更加复杂的事物:

4.8 代价函数(Cost function)

代价函数定义为两个部分:

4.9 风格代价函数(Style cost function)

接下来定义图片的风格矩阵(style matrix)为:

为了提取更多的“风格”,可以使用多层隐藏层,然后相加,表达式为:

最终的cost function为:

4.10 一维到三维推广(1D and 3D generalizations of models)

1D卷积

将2D卷积推广到1D卷积:

二维数据的卷积是将同一个5×5特征检测器应用于图像中不同的位置(编号1所示),最后得到10×10的输出结果。1维过滤器可以在不同的位置中应用类似的方法(编号3,4,5所示)

当对这个1维信号使用卷积,将一个14维的数据与5维数据进行卷积,并产生一个10维输出:

如果有16个过滤器,最后会获得一个10×16的数据:

对于卷积网络的下一层,如果输入一个10×16数据,可以使用一个5维过滤器进行卷积,需要16个通道进行匹配,如果有32个过滤器,另一层的输出结果就是6×32:

3D卷积

当进行CT扫描时,人体躯干的不同切片数据本质上是3维的

如果有一个3D对象是14×14×14:

过滤器也是3D的,如果使用5×5×5过滤器进行卷积,将会得到一个10×10×10的结果输出,如果使用16个过滤器,输出将是10×10×10×16

如果下一层卷积使用5×5×5×16维度的过滤器再次卷积,如果有32个过滤器,最终将得到一个6×6×6×32的输出

Last updated