章四 CNN 第4节 人脸识别和分割迁移

第4节 人脸识别和分割迁移

4.1 什么是人脸识别

首先简单介绍一下人脸验证(face verification)和人脸识别(face recognition)的区别。

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

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

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

4.2 One Shot 学习

One-shot learning就是说数据库中每个人的训练样本只包含一张照片,然后训练一个CNN模型来进行人脸识别。若数据库有K个人,则CNN模型输出softmax层就是K维的。

但是One-shot learning的性能并不好,其包含了两个缺点:

  • 每个人只有一张图片,训练样本少,构建的CNN网络不够健壮。
  • 若数据库增加另一个人,输出层softmax的维度就要发生变化,相当于要重新构建CNN网络,使模型计算量大大增加,不够灵活。

为了解决One-shot learning的问题,我们先来介绍相似函数(similarity function)。相似函数表示两张图片的相似程度,用d(img1,img2)来表示。若d(img1,img2)较小,则表示两张图片相似;若d(img1,img2)较大,则表示两张图片不是同一个人。相似函数可以在人脸验证中使用:

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

4.3 Siamese 网络

CNN提取特征,然后计算范数、同类距离近,不同人距离远

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

Untitled

4.4 Triplet 损失

Untitled

Untitled

4.5 人脸验证和二分类

Untitled

还可以保存模板(f(x))来减少计算量,就不用保存原始图片了。

5.6 什么是风格迁移

Untitled

4.7 深度卷积网络在学什么

Untitled

4.8 损失函数

Untitled

Untitled

4.9 内容损失函数

Untitled

4.10 风格损失函数

什么是图片的风格?利用CNN网络模型,图片的风格可以定义成第l层隐藏层不同通道间激活函数的乘积(相关性)。

Untitled

Untitled