《深度学习》 章四 CNN 第4节 人脸识别和分割迁移
章四 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层每个神经元来表征。
4.4 Triplet 损失
4.5 人脸验证和二分类
还可以保存模板(f(x))来减少计算量,就不用保存原始图片了。
5.6 什么是风格迁移
4.7 深度卷积网络在学什么
4.8 损失函数
4.9 内容损失函数
4.10 风格损失函数
什么是图片的风格?利用CNN网络模型,图片的风格可以定义成第l层隐藏层不同通道间激活函数的乘积(相关性)。