4.4)深度卷积网络:人脸识别和神经风格转换
目錄
1)What is face recognition?
2)One-shot learning
3)Siamese network
4)Triplet Loss(重點)
5)Face Verification and Binary Classification
6)What is neural style transfer?
7)What are deep ConvNets learning?
8)Cost function(理解)
9)Content cost function(重點)
10)Style cost function(重點)
11)1D and 3D generalizations f models
以下筆記是吳恩達老師深度學習課程第四門課第四周的的學習筆記:Face recognition & neural style transfer。筆記參考了黃海廣博士的內容,在此表示感謝。
1)What is face recognition?
首先介紹一下人臉驗證(Face Verification)和人臉識別(Face Recognition)的區別:
-
人臉驗證:一般是一個一對一問題,只需要驗證輸入的人臉圖像是否與某個已知的身份信息對應;
-
人臉識別:一個更為復雜的一對多問題,需要驗證輸入的人臉圖像是否與多個已知身份信息中的某一個匹配。
一般來說,由于需要匹配的身份信息更多導致錯誤率增加,人臉識別比人臉驗證更難一些。因為假設人臉驗證系統的錯誤率是1%,那么在人臉識別中,輸出分別與K個模板都進行比較,則相應的錯誤率就會增加,約K%。模板個數越多,錯誤率越大一些。
2)One-shot learning
人臉識別所面臨的一個挑戰是要求系統只采集某人的一個面部樣本,就能快速準確地識別出這個人,即只用一個訓練樣本來獲得準確的預測結果。這被稱為One-Shot 學習。
有一種方法是假設數據庫中存有 N 個人的身份信息,對于每張輸入圖像,用 Softmax 輸出 N 種標簽。然而這種方法的實際效果很差,因為過小的訓練集不足以訓練出一個穩健的神經網絡;并且如果有新的身份信息入庫,需要重新訓練神經網絡,不夠靈活。
因此,我們通過學習一個 Similarity 函數來實現 One-Shot 學習過程。Similarity 函數定義了輸入的兩幅圖像的差異度,其公式如下:
可以設置一個超參數?作為閾值,作為判斷兩幅圖片是否為同一個人的依據。
3)Siamese network
實現 Similarity 函數的一種方式是使用Siamese 網絡,它是一種對兩個不同輸入運行相同的卷積網絡,然后對它們的結果進行比較的神經網絡。
如上圖示例,將圖片 分別輸入兩個相同的卷積網絡中,經過全連接層后不再進行 Softmax,而是得到特征向量 。這時,Similarity 函數就被定義為兩個特征向量之差的 L2 范數:
值得一提的是,不同圖片的CNN網絡所有結構和參數都是一樣的。我們的目標就是利用梯度下降算法,不斷調整網絡參數,使得屬于同一人的圖片之間d(x(1),x(2))很小,而不同人的圖片之間d(x(1),x(2))很大。
相關論文:Taigman et al., 2014, DeepFace closing the gap to human level performance
4)Triplet Loss(重點)
Triplet 損失函數用于訓練出合適的參數,以獲得高質量的人臉圖像編碼。“Triplet”一詞來源于訓練這個神經網絡需要大量包含 Anchor(靶目標)、Positive(正例)、Negative(反例)的圖片組,其中 Anchor 和 Positive 需要是同一個人的人臉圖像。
對于這三張圖片,應該有:
其中, 被稱為間隔(margin),用于確保不會總是輸出零向量(或者一個恒定的值)。
Triplet 損失函數的定義:
其中,因為 的值需要小于等于 0,因此取它和 0 的更大值。
對于大小為m 的訓練集,代價函數為:
通過梯度下降最小化代價函數。
在選擇訓練樣本時,隨機選擇容易使 Anchor 和 Positive 極為接近,而 Anchor 和 Negative 相差較大,以致訓練出來的模型容易抓不到關鍵的區別。因此,最好的做法是人為增加 Anchor 和 Positive 的區別,縮小 Anchor 和 Negative 的區別,促使模型去學習不同人臉之間的關鍵差異。
相關論文:Schroff et al., 2015, FaceNet: A unified embedding for face recognition and clustering
5)Face Verification and Binary Classification
除了 Triplet 損失函數,二分類結構也可用于學習參數以解決人臉識別問題。其做法是輸入一對圖片,將兩個 Siamese 網絡產生的特征向量輸入至同一個 Sigmoid 單元,輸出 1 則表示是識別為同一人,輸出 0 則表示識別為不同的人。
Sigmoid 單元對應的表達式為:
其中, 和 b都是通過梯度下降算法迭代訓練得到的參數。上述計算表達式也可以用另一種表達式代替:
其中,被稱為方相似度。
無論是對于使用 Triplet 損失函數的網絡,還是二分類結構,為了減少計算量,可以提前計算好編碼輸出 f(x)并保存。這樣就不必存儲原始圖片,并且每次進行人臉識別時只需要計算測試圖片的編碼輸出。
6)What is neural style transfer?
神經風格遷移(Neural style transfer)將參考風格圖像的風格“遷移”到另外一張內容圖像中,生成具有其特色的圖像。 一般用C表示內容圖片,S表示風格圖片,G表示生成的圖片。
7)What are deep ConvNets learning?
想要理解如何實現神經風格轉換,首先要理解在輸入圖像數據后,一個深度卷積網絡從中都學到了些什么。我們借助可視化來做到這一點。 典型的CNN網絡如下所示:
我們通過遍歷所有的訓練樣本,找出使該層激活函數輸出最大的 9 塊圖像區域。可以看出,淺層的隱藏層通常檢測出的是原始圖像的邊緣、顏色、陰影等簡單信息。隨著層數的增加,隱藏單元能捕捉的區域更大,學習到的特征也由從邊緣到紋理再到具體物體,變得更加復雜。
相關論文:Zeiler and Fergus., 2013, Visualizing and understanding convolutional networks
8)Cost function(理解)
神經風格遷移生成圖片G的cost function由兩部分組成:C與G的相似程度和S與G的相似程度。
其中, 是用于控制相似度比重的超參數。
神經風格遷移的基本算法流程是:
首先令G為隨機像素點,然后使用梯度下降算法,不斷修正G的所有像素點,使得J(G)不斷減小,從而使G逐漸有C的內容和G的風格,如下圖所示。
相關論文:Gatys al., 2015. A neural algorithm of artistic style
9)Content cost function(重點)
上述代價函數包含一個內容代價部分和風格代價部分。我們先來討論內容代價函數 ,它表示內容圖片 C 和生成圖片 G 之間的相似度。
的計算過程如下:
-
使用一個預訓練好的 CNN(例如 VGG);
-
選擇一個隱藏層 l來計算內容代價。l太小則內容圖片和生成圖片像素級別相似,l太大則可能只有具體物體級別的相似。因此,l一般選一個中間層;
-
設 為 C 和 G 在 l層的激活,則有:
和 越相似,則 越小,方法就是使用梯度下降算法,不斷迭代修正G的像素值。
10)Style cost function(重點)
什么是圖片的風格?利用CNN網絡模型,圖片的風格可以定義成第l層隱藏層不同通道間激活函數的乘積(相關性)。
例如我們選取第l層隱藏層,其各通道使用不同顏色標注,如下圖所示。因為每個通道提取圖片的特征不同,比如1通道(紅色)提取的是圖片的垂直紋理特征,2通道(黃色)提取的是圖片的橙色背景特征。那么計算這兩個通道的相關性大小,相關性越大,表示原始圖片及既包含了垂直紋理也包含了該橙色背景;相關性越小,表示原始圖片并沒有同時包含這兩個特征。也就是說,計算不同通道的相關性,反映了原始圖片特征間的相互關系,從某種程度上刻畫了圖片的“風格”。
對于風格圖像 S,選定網絡中的第層,則相關系數以一個 gram 矩陣的形式表示:
其中,和? 為第 層的高度和寬度; 和 為選定的通道,其范圍為 1到 。
同理,對于生成圖像 G,有:
因此,第? 層的風格代價函數為:
如果對各層都使用風格代價函數,效果會更好。因此有:
其中,是用于設置不同層所占權重的超參數。
11)1D and 3D generalizations f models
之前我們處理的都是二維圖片,實際上卷積也可以延伸到一維和三維數據。我們舉兩個示例來說明。
EKG 數據(心電圖)是由時間序列對應的每個瞬間的電壓組成,是一維數據。一般來說我們會用 RNN(循環神經網絡)來處理,不過如果用卷積處理,則有:
-
輸入時間序列維度:14 x 1
-
濾波器尺寸:5 x 1,濾波器個數:16
-
輸出時間序列維度:10 x 16
而對于三維圖片的示例,有
-
輸入 3D 圖片維度:14 x 14 x 14 x 1
-
濾波器尺寸:5 x 5 x 5 x 1,濾波器個數:16
-
輸出 3D 圖片維度:10 x 10 x 10 x 16
總結
以上是生活随笔為你收集整理的4.4)深度卷积网络:人脸识别和神经风格转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东方甄选粉丝破2000万!主播YOYO哭
- 下一篇: PortAOL.exe是什么进程 Po