吳恩達-deeplearning-第四課卷積神經網絡-第四周 課程筆記 神經風格轉換與人臉識別

課程來源:網易雲課堂與coursera

一、神經風格轉化

1、理論

  • 問題描述:給定一張需要轉化的內容圖像(C)一張想要轉化成的風格的圖像(S),通過無監督學習的方法將其轉化爲有S風格的內容圖像G。
    在這裏插入圖片描述
  • 解決方案:對C、S、G三個圖像定義一個損失函數J,在對損失函數的優化過程中完成對G的訓練,也就是說C、S是固定輸入,G是通過訓練優化的參數。
    • 損失函數J分爲兩個部分:內容損失函數,與C、G有關;風格損失函數,與S、G有關。
    • 內容損失函數定義:C圖像的某一層的卷積輸出與G圖像的某一層的卷積輸出的相似程度,公式如下,C和G的大小都是(nH,nW,nC),a表示某一層激活層的輸出:
      Jcontent(C,G)=14×nH×nW×nCall entries(a(C)a(G))2J_{content}(C,G) = \frac{1}{4 \times n_H \times n_W \times n_C}\sum _{ \text{all entries}} (a^{(C)} - a^{(G)})^2
    • 風格損失函數定義:定義Gram matrix表示圖像的風格表徵,也就是下面公式中的Gij。計算圖像S和圖像G各自風格表徵的接近程度。
      Jstyle(S,G)=lλ[l]Jstyle[l](S,G)J_{style}(S,G) = \sum_{l} \lambda^{[l]} J^{[l]}_{style}(S,G)
      這個是每一層的風格損失值的加權和,風格損失計算方法如下:
      Jstyle[l](S,G)=14×nC2×(nH×nW)2i=1nCj=1nC(Gij(S)Gij(G))2J_{style}^{[l]}(S,G) = \frac{1}{4 \times {n_C}^2 \times (n_H \times n_W)^2} \sum _{i=1}^{n_C}\sum_{j=1}^{n_C}(G^{(S)}_{ij} - G^{(G)}_{ij})^2
      其中,Gram matrix的定義是Gij=viTvj=np.dot(vi,vj){\displaystyle G_{ij} = v_{i}^T v_{j} = np.dot(v_{i}, v_{j}) },最後得到的矩陣是nc*nc,每一個元素都一定程度代表對應的兩個通道之間的相似程度。
      在這裏插入圖片描述
    • 注意,這裏內容損失函數只計算一層,但是風格損失函數計算多層
    • 兩個損失值合併,α和β都是超參:
      J(G)=αJcontent(C,G)+βJstyle(S,G)J(G) = \alpha J_{content}(C,G) + \beta J_{style}(S,G)

2、代碼

可以參考【中英】【吳恩達課後編程作業】Course 4 -卷積神經網絡 - 第四周作業

二、人臉識別

1、理論

  • 人臉識別的應用可以分爲兩類:
    • Face Verification:研究的問題是給定一個人臉+id與數據中存有的對應id的人臉進行比對,判斷是否是這個人,是1比照1的應用(目前高鐵站使用的就是這種)
    • Face Recognition:研究問題是給定一個人臉與數據中存有的所有人臉進行比對,判斷是否在其中,是1比照K的應用
    • 雖然這兩種應用是不一樣的,但是後者實際上是前者的升級版,兩者有很多共同之處,可以借鑑。
  • 人臉識別問題的解決思路:
    • 首先,不能直接用圖像進行比較,應該利用dnn將其表徵爲向量
      • 這部分其實也是一個無監督問題,我們希望從這個神經網絡中得到的是每個圖對應的表徵
      • 訓練的時候,我們通過對loss函數的構造,使得訓練出來的表徵可以使得同一個人的臉相似,不同的人的臉不同,對loss的定義如下:
        (3)J=i=1m[f(A(i))f(P(i))22f(A(i))f(N(i))22+α]+\mathcal{J} = \sum^{m}_{i=1} \large[ \small \mid \mid f(A^{(i)}) - f(P^{(i)}) \mid \mid_2^2 - \mid \mid f(A^{(i)}) - f(N^{(i)}) \mid \mid_2^2+ \alpha \large ] \small_+ \tag{3}
        其中,A表示輸入的要驗證的圖像,P表示對應ID的圖像,N表示隨意的負例圖像(具體訓練,細節不明,待研究,可能類似於word2vec的負採樣?),f()表示表徵。
    • 其次,比較向量之間的相似程度就可以判斷人臉是否相似
      • Face Verification研究的問題就是,給定的人臉的表徵向量與給定id在數據中的表徵向量的相似函數是否滿足某個閾值
      • Face Recognition研究的問題就是,從數據中找到給定的人臉的表徵向量對應的id
  • 可以提升準確程度的一些細節:
    • 對圖像進行剪裁預處理,只保留人臉部分,可以去掉一些干擾信息
    • 對數據中的每個人多放幾張照片(不同光線,不同時間下的)

2、代碼

可以參考【中英】【吳恩達課後編程作業】Course 4 -卷積神經網絡 - 第四周作業

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章