1. 程式人生 > >對Deep Learning Face Representation from Predicting 10,000 Classes論文的理解

對Deep Learning Face Representation from Predicting 10,000 Classes論文的理解

接下來從以下四個方面來介紹我對這篇論文的理解:

一.目的

利用深度學習學習人臉的高維特徵來進行人臉驗證

二.Deep convnets(特徵提取模型)

                                          圖1 卷積網路模型

結構:包含4個卷積層提取特徵,全連線層即deepid層(160個神經元,由第三卷積層的max_pooling層和第四層卷積層得到),最後一層為softmax層分類層

三.特徵提取

特徵提取來自於一個人臉的60個面部塊,他的組成包括人臉10個區域,每個區域三個尺度,每個尺度分為rgb和灰度圖,所以總共由10*3*2=60patch(論文的原話是:features are extracted from 60 face patches with ten regions,three scales,and rgb or gray channels,不知道理解的對不對).下圖2是一張臉的10個區域,和其中兩個區域的三個尺度

                                                  圖2 一個人臉的劃分示意圖

因為有60個patch因此需要訓練60個如圖一的神經網路。每一個patch,我們做一個水平翻轉,所以一個網路我們可以提取兩個160維的DeepId向量。所以總共的DeepId特徵向量的長度為19200(160*2*60),這個特徵可以為後人臉驗證做準備

四.人臉驗證

人臉驗證演算法,論文上提取兩種演算法,一個是使用聯合貝葉斯網,另一個是使用神經網路。由於第一種演算法不太熟悉,所以主要講下第二種,利用神經網路。神經網路模型包含一個輸入層(輸入的是上述講的DeepId特徵向量),一個區域性連結層,一個全連線層,最後是單個的輸出神經元表示是否為同一個人。模型如下圖3

 

                                       圖三 人臉驗證模型

如上圖所示,輸入特徵分為60組,因為有60個patch。每一組包含640(在第三點特徵提取講過,一個卷積網路提取的特徵為160*2,因為驗證是否為同一個人,所以輸入的一對圖片,所以還得乘以2,即160*2*2=640)個特徵。特徵在同一組是高度相關聯的,所以在第一個隱層使用區域性連線,區域性層有60個組,每一組有80個神經元,這80個神經元只和輸入層的一個組連線,學習區域性相關性與此同時減少特徵維度。第二個隱層是全連線層,學習第一個隱層的全域性相關性。單個輸出層是和第二個隱層全連線的。隱層之間的啟用函式為RELU,輸出層的啟用函式為sigmoid.另外所有隱層加入dropout learning,輸入神經元不使用dropout。  

五.試驗

模型訓練使用的資料集是celebFaces,測試使用的LFW資料集。CelebFaces資料集有87628張圖片,5436個人(第一代,現在有更新了)。從celebface隨機選取80%(4349)個人學習特徵提取模型,使用剩下的20%的圖片去學習人臉驗證模型。從訓練集中隨機選取10%的圖片作為驗證集,訓練模型每迭代一次,觀察top-1驗證集的錯誤率,選擇最低的那個作為最終模型

5.1multi-scale convnets(多尺度卷積神經網路)

在圖一的時候,可以發現最後的隱層(DeepId層),是由是由第三個卷積層(最大池化層後)和第四個卷積層連線得到的,而不是像傳統的那樣。因此被稱為多尺度卷積神經網路。通過比較top-1 驗證集在分類4349身份類別時的錯誤率可以看出在使用多尺度卷積神經網路時效果要好,如下圖4所示是60個不同的patch 在60個神經網路上的top-1驗證集錯誤率,藍色表示在傳統的卷積神經網路上的錯誤率,紅色表示在多尺度卷積神經網路的錯誤率

 

                                            圖4 top-1驗證集錯誤率

5.2 學習有效特徵

同時分類大量的身份是學習有判別力和緊湊的隱藏特徵的關鍵。(原文是:classifying a large number of identites simultaneously is key to learning discriminative and compact hidden feature).為了證明這個,論文指數增加了人的身份類別,從136增加到4349(輸出層也隨之增加)。但特徵提取模型其他層的神經元數量不變(DeepId層還是160維),觀察top-1驗證集分類的錯誤率,和人臉驗證的準確率。下圖5是人臉驗證的準確率隨著身份數量增加的圖,圖6是top-1驗證集身份分類的錯誤率

 

                                             圖5 人臉驗證準確率

 

                                            圖6 身份分類錯誤率

論文還測試了4349維分類器輸出作為特徵進行面部驗證,在聯合貝葉斯上達到的精確度大約維66%,而神經網路是失敗的,因為有很多類,而每個類樣本比較少,分類器輸出是多樣的和不可靠的,因此不能作為特徵

5.3不同patch組合的準確率

我們評估了不同組合面部patcht提取特徵對於人臉驗證準確率的貢獻。我們從Kpatch(K=1, 5, 15,30, 60)的特徵訓練人臉驗證模型。不可能計算所有可能的patch組合,所以我們選擇最有代表性的組合。 如圖7所示,從不同區域、尺度和顏色通道中新增更多的特徵始終提高效能。組合60個patch分別提高了4.53%和5.27%的最佳單補丁的聯合貝葉斯和神經網路,分別。我們使用聯合貝葉斯和神經網路分別達到96.05%和94.32%的準確度。曲線表明,如果提取更多的特徵,則可以進一步提高效能。

 

                           圖7 不同patch數目人臉驗證的準確率