《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)

04. 卷积神经网络

第4周 特殊应用:人脸识别和神经风格转换

4.1 什么是人脸识别?

  1. 人脸识别
  2. 人脸验证vs.人脸识别
    (1)验证
    a. 输入图像,姓名或ID
    b. 输出图像是否是所生成的那个人
    (2)识别
    a. 数据库中有 K K K个人
    b. 输出图像
    c. 输出ID(若为 K K K个人之一)或未识别

4.2 One-Shot学习

  1. one-shot学习
    通过一个样本进行学习,再次识别该人。
  2. 学习一个相似度函数
    (1)d(img1,img2)=两张图片间的差异程度。
    (2)若 d ( i m g 1 , i m g 2 ) ≤ τ d(img1,img2)\leq\tau d(img1,img2)τ,则是同一人,否则不是。(验证环节)

4.3 Siamese网络

  1. Siameses网络
    (1)网络架构
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第1张图片
    (2)使用相同网络提取两张图片的特征。
    (3)定义 d ( x ( 1 ) , x ( 2 ) ) = ∥ f ( x ( 1 ) ) − f ( x ( 2 ) ) ∥ 2 2 d(x^{(1)}, x^{(2)})=\left\| f(x^{(1)})-f(x^{(2)})\right\|_2^2 d(x(1),x(2))=f(x(1))f(x(2))22
  2. 学习的目标
    (1)NN的参数定义了 f ( x ( i ) ) f(x^{(i)}) f(x(i))的编码。
    (2)学习参数,使得满足如下条件:
    a. 若 x ( i ) , x ( j ) x^{(i)},x^{(j)} x(i),x(j)是同一人,则 ∥ f ( x ( 1 ) ) − f ( x ( 2 ) ) ∥ 2 2 \left\| f(x^{(1)})-f(x^{(2)})\right\|_2^2 f(x(1))f(x(2))22尽量小。
    b. 若 x ( i ) , x ( j ) x^{(i)},x^{(j)} x(i),x(j)不是同一人,则 ∥ f ( x ( 1 ) ) − f ( x ( 2 ) ) ∥ 2 2 \left\| f(x^{(1)})-f(x^{(2)})\right\|_2^2 f(x(1))f(x(2))22尽量大。

4.4 Triplet损失

  1. 学习目标
    通过编码,使得anchor图片和positive图片的距离尽可能近,anchor图片和negative图片的距离尽可能远。可总结为如下不等式:
    d ( A , P ) = ∥ f ( A ) − f ( P ) ∥ 2 ≤ d ( A , N ) = ∥ f ( A ) − f ( N ) ∥ 2 d(A,P)=\left\|f(A)-f(P) \right\|^2\leq d(A,N)=\left\|f(A)-f(N) \right\|^2 d(A,P)=f(A)f(P)2d(A,N)=f(A)f(N)2

    ∥ f ( A ) − f ( P ) ∥ 2 − ∥ f ( A ) − f ( N ) ∥ 2 ≤ 0 \left\|f(A)-f(P) \right\|^2- \left\|f(A)-f(N) \right\|^2\leq 0 f(A)f(P)2f(A)f(N)20
    为了防止 f ( ⋅ ) f(\cdot) f()输出恒为0,故引入间隔 α > 0 \alpha>0 α>0
    ∥ f ( A ) − f ( P ) ∥ 2 − ∥ f ( A ) − f ( N ) ∥ 2 + α ≤ 0 \left\|f(A)-f(P) \right\|^2- \left\|f(A)-f(N) \right\|^2 + \alpha \leq 0 f(A)f(P)2f(A)f(N)2+α0
  2. 损失函数
    (1)给定3张图片A,P,N
    (2)定义损失函数为
    L ( A , P , N ) = max ⁡ ( ∥ f ( A ) − f ( P ) ∥ 2 − ∥ f ( A ) − f ( N ) ∥ 2 + α , 0 ) L(A,P,N)=\max\left(\left\|f(A)-f(P) \right\|^2- \left\|f(A)-f(N) \right\|^2 + \alpha, 0\right) L(A,P,N)=max(f(A)f(P)2f(A)f(N)2+α,0)
    (3)整个数据集上的损失函数
    J = ∑ i = 1 M L ( A ( i ) , P ( i ) , N ( i ) ) J=\sum_{i=1}^M L(A^{(i)},P^{(i)},N^{(i)}) J=i=1ML(A(i),P(i),N(i))
    (4)说明:训练集中,每个人的图片需要多于1张,否则因无法组成 ( A , P ) (A,P) (A,P)数据对而无法训练。
  3. 选择三元组A,P,N
    (1)在训练中,若A,P,N随机选择,则 d ( A , P ) + α ≤ d ( A , N ) d(A,P)+\alpha \leq d(A,N) d(A,P)+αd(A,N)很容易满足。
    (2)故应该选择那些难以训练的三元组。
    (3)参考论文:Schroff et al. 2015. FaceNet: A unified embedding for face recognition and clustering.
  4. 使用三元组损失训练集

4.5 面部验证与二分类

  1. 学习相似度函数
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第2张图片
    输入为一对图片,当两张图片为同一个人时,输出为1;否则为0。
  2. 面部识别监督学习

4.6 什么是神经风格转换?

  1. 神经风格转换
    举例:《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第3张图片
    C C C表示内容图片, S S S表示风格图片, G G G表示生成图片。

4.7 什么是深度卷积网络?

  1. 可视化深度网络在学习什么
    (1)网络结构示意图
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第4张图片
    (2)选择第一层的一个隐藏单元,寻找到9个使该单元激活函数最大化的图片。对其他单元重复上述动作。通过如下的可视化,可以看出,该层总结的是一些浅层信息,如边缘、颜色等。
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第5张图片
    (3)靠后的隐藏层会看到更大的图片块。
  2. 可视化深层
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第6张图片

4.8 代价函数

  1. 神经风格转换代价函数
    J ( G ) = α J C o n t e n t ( C , G ) + β J S t y l e ( S , G ) J(G)=\alpha J_{Content}(C,G)+\beta J_{Style}(S,G) J(G)=αJContent(C,G)+βJStyle(S,G)
    注:原作者使用两个超参数,或许可以使用一个超参数即可。
  2. 寻找生成图像 G G G
    (1)随机初始化 G G G
    G : 100 × 100 × 3 G:100\times 100 \times3 G:100×100×3
    (2)使用梯度下降最小化 J ( G ) J(G) J(G)
    G : = G − ∂ ∂ G J ( G ) G:=G-\frac{\partial}{\partial G}J(G) G:=GGJ(G)

4.9 内容代价函数

  1. 内容代价函数
    (1)假设使用 l l l隐藏层计算内容代价。(通常 l l l选择在中间层)
    (2)使用预训练的ConvNet。(如VGG网络)
    (3)令 a [ l ] ( C ) a^{[l](C)} a[l](C) a [ l ] ( G ) a^{[l](G)} a[l](G)表示 l l l层上 C C C G G G的激活函数。
    (4)则若 a [ l ] ( C ) a^{[l](C)} a[l](C) a [ l ] ( G ) a^{[l](G)} a[l](G)相似,则两张图片有相似的内容。故可公式化为
    J C o n t e n t ( C , G ) = 1 2 ∥ a [ l ] ( C ) − a [ l ] ( G ) ∥ 2 J_{Content}(C,G)=\frac{1}{2}\left\|a^{[l](C)}-a^{[l](G)}\right\|^2 JContent(C,G)=21a[l](C)a[l](G)2

4.10 风格代价函数

  1. 图像风格的意义
    (1)假设网络结构如下所示
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第7张图片
    取其中某一层 l l l的激活项来度量风格,定义风格为不同通道间激活项的相关性。
  2. 图像风格的直觉
  3. 风格矩阵
    (1)令 a i , j , k [ l ] a^{[l]}_{i,j,k} ai,j,k[l] ( i , j , k ) (i,j,k) (i,j,k)处的激活项,则风格矩阵 G [ l ] ( s ) G^{[l](s)} G[l](s)的大小为 n c [ l ] × n c [ l ] n^{[l]}_c\times n^{[l]}_c nc[l]×nc[l]
    (2) G k k ′ [ l ] ( s ) = ∑ i n H [ l ] ∑ j n W [ l ] a i j k [ l ] ( s ) a i j k ′ [ l ] ( s ) G^{[l](s)}_{kk'}=\sum_{i}^{n_H^{[l]}}\sum_j^{n_W^{[l]}}a^{[l](s)}_{ijk}a^{[l](s)}_{ijk'} Gkk[l](s)=inH[l]jnW[l]aijk[l](s)aijk[l](s)
    (3)对生成图像进行同样的计算 G k k ′ [ l ] ( G ) = ∑ i n H [ l ] ∑ j n W [ l ] a i j k [ l ] ( G ) a i j k ′ [ l ] ( G ) G^{[l](G)}_{kk'}=\sum_{i}^{n_H^{[l]}}\sum_j^{n_W^{[l]}}a^{[l](G)}_{ijk}a^{[l](G)}_{ijk'} Gkk[l](G)=inH[l]jnW[l]aijk[l](G)aijk[l](G)
    (4)风格矩阵有时也被称为Gram矩阵
    (5)事实上,风格矩阵是一种不标准的互协方差,因为没有减去均值。
  4. 风格代价函数
    (1)定义风格代价函数为: J S t y l e [ l ] ( S , G ) = ∥ G [ l ] ( S ) − G [ l ] ( S ) ∥ F 2 J_{Style}^{[l]}(S,G)=\left\| G^{[l](S)}-G^{[l](S)}\right\|_F^2 JStyle[l](S,G)=G[l](S)G[l](S)F2
    (2)全局的风格代价函数为: J S t y l e ( S , G ) = ∑ l λ [ l ] J S t y l e [ l ] ( S , G ) J_{Style}(S,G)=\sum_l\lambda^{[l]}J_{Style}^{[l]}(S,G) JStyle(S,G)=lλ[l]JStyle[l](S,G)
    (3)整合内容和风格代价函数为 J ( G ) = α J C o n t e n t ( C , G ) + β J S t y l e ( S , G ) J(G)=\alpha J_{Content}(C,G)+\beta J_{Style}(S,G) J(G)=αJContent(C,G)+βJStyle(S,G)

4.11 一维到三维推广

  1. 二维和一维的卷积
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第8张图片
  2. 3D数据举例
    CT扫描图
  3. 3D卷积
    《吴恩达深度学习》04卷积神经网络(第4周特殊应用:人脸识别和神经风格转换)_第9张图片

你可能感兴趣的:(深度学习理论学习)