課程來源:網易雲課堂與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表示某一層激活層的輸出:
- 風格損失函數定義:定義Gram matrix表示圖像的風格表徵,也就是下面公式中的Gij。計算圖像S和圖像G各自風格表徵的接近程度。
這個是每一層的風格損失值的加權和,風格損失計算方法如下:
其中,Gram matrix的定義是,最後得到的矩陣是nc*nc,每一個元素都一定程度代表對應的兩個通道之間的相似程度。
- 注意,這裏內容損失函數只計算一層,但是風格損失函數計算多層
- 兩個損失值合併,α和β都是超參:
2、代碼
可以參考【中英】【吳恩達課後編程作業】Course 4 -卷積神經網絡 - 第四周作業
二、人臉識別
1、理論
- 人臉識別的應用可以分爲兩類:
- Face Verification:研究的問題是給定一個人臉+id與數據中存有的對應id的人臉進行比對,判斷是否是這個人,是1比照1的應用(目前高鐵站使用的就是這種)
- Face Recognition:研究問題是給定一個人臉與數據中存有的所有人臉進行比對,判斷是否在其中,是1比照K的應用
- 雖然這兩種應用是不一樣的,但是後者實際上是前者的升級版,兩者有很多共同之處,可以借鑑。
- 人臉識別問題的解決思路:
- 首先,不能直接用圖像進行比較,應該利用dnn將其表徵爲向量
- 這部分其實也是一個無監督問題,我們希望從這個神經網絡中得到的是每個圖對應的表徵
- 訓練的時候,我們通過對loss函數的構造,使得訓練出來的表徵可以使得同一個人的臉相似,不同的人的臉不同,對loss的定義如下:
其中,A表示輸入的要驗證的圖像,P表示對應ID的圖像,N表示隨意的負例圖像(具體訓練,細節不明,待研究,可能類似於word2vec的負採樣?),f()表示表徵。
- 其次,比較向量之間的相似程度就可以判斷人臉是否相似
- Face Verification研究的問題就是,給定的人臉的表徵向量與給定id在數據中的表徵向量的相似函數是否滿足某個閾值
- Face Recognition研究的問題就是,從數據中找到給定的人臉的表徵向量對應的id
- 首先,不能直接用圖像進行比較,應該利用dnn將其表徵爲向量
- 可以提升準確程度的一些細節:
- 對圖像進行剪裁預處理,只保留人臉部分,可以去掉一些干擾信息
- 對數據中的每個人多放幾張照片(不同光線,不同時間下的)