卷积神经网络(四)人脸识别和风格转换
人脸识别
1、One-shot learning(一次学习):
仅仅通过一张图片来完成人脸识别,即只能通过一个样本来学习.
similarity函数:
d(img1,img2) = degree of difference between images
识别任务(verification):
if d(img1,img2) ≤ τ:“same”;
else: “different”
2、Siamese网络:
将图片通过卷积神经网络转为128个编码,称为“encoding of x(i)”,记为f(x(i)).
d(x(1),x(2)) = || f(x(1)) - f(x(2)) ||2.
3、Triplet loss(三元组损失):
(1)背景:
每组数据是三张图片,比对结果分别是“Positive”和“Negative”
希望的结果:|| f(A) - f(P) ||2 ≤ || f(A) - f(N) ||2 即 d(A, P) ≤ d(A, N),
即 || f(A) - f(P) ||2 - || f(A) - f(N) ||2 ≤ 0.
避免 f(A) = f(P) = f(N) 的情况,需要对上式进行改进:
|| f(A) - f(P) ||2 - || f(A) - f(N) ||2 + α ≤ 0,
即 || f(A) - f(P) ||2 + α ≤ || f(A) - f(N) ||2.
其中 α 称为间隔(margin).
(2)损失函数:
Given 3 images A,P,N;
L(A,P,N) = max{|| f(A) - f(P) ||2 - || f(A) - f(N) ||2 + α, 0}
J = ∑ L(A(i), P(i), N(i)),其中 i 从1 到 m.
训练集为1000个人的10000张照片(平均1人10张).
(3)选择三元组:
如果随机挑选三元组,d(A,P) + α ≤ d(A,N) 的条件很容易被满足,无法达到训练的效果,因此需要挑选满足 d(A,P) ≈ d(A,N) 的三元组.
4、面部验证与二分类:
当 y = 1时,判断为是同一个人;当 y = 0时,判断为不是同一个人.
风格迁移
1、什么是风格迁移(style transfer)?
2、代价函数:
J(G) = α*Jcontent(C,G) + β*Jstyle(S,G)
内容代价函数 Jcontent[l](C,G) = 1/2 * || a[l][C] - a[l][G] ||2
风格损失函数 Jstyle(S,G):
style matrix风格矩阵,用于计算两个每一对激活项之间的相关系数:
Jstyle(S,G) = ∑ λ[l] * Jstyle[l](S,G)