當前位置:
首頁 > 知識 > 中國團以98%精度奪得MegaFace人臉識別冠軍

中國團以98%精度奪得MegaFace人臉識別冠軍

2018 年 2 月,DeepInsight 洞見實驗室團隊將 MegaFace 的精度提升到了 98%,超過俄羅斯 Vocord 公司保持的 91% 的紀錄,讓這一大規模人臉識別具備了一個更加良好的 baseline。我們同時公布了代碼[0],數據,以及相應論文[1],希望能推動人工智慧從業人員進一步來解決更大規模的人臉識別挑戰。

1、網路結構

1.1 網路輸入設定 :在我們所有的實驗當中,都根據人臉的 5 個關鍵點進行對齊,並且切割設置大小到 112x112。因為這個圖片大小是 ImageNet 輸入的 1/4,我們考慮取消常見網路結構起始的降解析度操作,即替換(conv77-stride22)為(conv33-stride11)。我們這個輸入放大版的網路結構標記為 L。

1.2 網路輸出設定 :此處輸出指代特徵向量這一層。我們實驗了多種從最後一個卷積層之後如何連接到特徵向量的方法,發現了最優的結構代號 E,即 (Convolution -> BN -> Dropout -> FullyConnected -> BN),更多的選擇和實驗結果可以參考原文 [1]。

1.3 ResNet 單元設定 :在ResNet 中,我們發現 3*BN[5] 的單元相比原始實現[6]和 Identity Mapping[7]的 unit 性能更好,標記為-IR

圖 1: Improved residual unit: BN-Conv-BN-PReLu-Conv-BN

1.4 評測數據 :我們在 VGG2 數據集上用 Softmax 測試了不同網路骨幹和不同配置,得到以下結果:

表 1: Accuracy (%),speed (ms) and model size (MB) comparison between different backbones (Softmax@VGG2)

據此,我們選擇LResNet100E-IR作為我們的主力網路骨幹,因為它出色的性能和相對不大的開銷。

2、損失函數

2.1 Softmax :損失函數是另一個提升識別精度的關鍵工作,在大家極力壓榨網路骨幹結構換取性能提升的時候,回頭再來看損失函數這個網路訓練的指揮棒,會有更多的發現。做為最常見的分類損失 Softmax,其定義如下:

Softmax 是最常見的人臉識別損失函數,然而,Softmax 不會顯式的優化類間和類內距離的,所以通常不會有太好的性能

2.2 Triplet Loss :Triplet Loss 作為一種 Metric Learning,也在人臉識別中廣泛使用。定義為:

相比 Softmax,其特點是可以方便訓練大規模 ID(百萬,千萬)的數據集,不受顯存的限制。但是相應的,因為它的關注點過於局部,使得性能無法達到最佳且訓練需要的周期非常長。

2.3 SphereFace :由於 Tripelet Loss 訓練困難,人們逐漸尋求結合Metric Learning思想來改進 Softmax 的思路,其中SphereFace[2] 是其中的佼佼者,作為 17 年提出的一種方法,在當時達到了 state-of-the-art。其定義如下:

在具體實現中,為了避免加入的 margin(即 m) 過大,引入了新的超參 λ,和 Softmax 一起聯合訓練。

那麼這裡的 margin 具體是什麼? 包括下述的幾種演算法都會提到 margin。我們從 Softmax 說起,參考上一節他的公式

為了方便計算,我們讓 bias=0,則全聯接的WX可以表示為

θ 表示W和X的夾角,歸一化W後:

對特定的 X,|| X || 是確定的,所以這時 Softmax 優化的其實就是 cos 值,或 者說他們的夾角θ。

在這樣的 Softmax 中,類和類之間的界限只是一條線。這樣會產生的問題是:落在邊界附近的點會讓整個模型的泛化能力比較差。為了解決這個問題,作者就想到了讓這個界限變大一些,讓不同類之間的點盡量遠。在投影的夾角上加入一個 margin 可以達到這個目的,如下圖:

圖 2: sphereface

可以看到在這樣做之後,即使是類間距離最近的點也有一定的 margin。在訓練中,相同類的人臉圖片會向著自己的 w ? vector 壓緊。

2.4 Additive Cosine Margin :最近,在 [3],[4] 中,作者提出了一種在 Cosine 值上加入 Margin 的策略,定義如下:

模型獲得了比 [2] 更好的性能,同時實現很方便,也擺脫了和 Softmax 聯合訓練的困擾,在訓練起始階段不再有收斂方面的問題。

2.5 Additive Angular Margin :我們 [1] 提出了在角度上增加固定值的 Margin,在 Cosine Margin 的基礎上,更具有幾何 (角度) 解釋性並且獲得了更好的性能,定義如下:

這裡我們同時 normalize 了 weight(到 1) 和 feature(到 s,默認 64),則 (Cosine Margin 也同理):

圖 3: ArcFace 幾何解釋

2.6 對比:以二元分類舉例,以上各演算法的 decision boundary 如下:

表 2: Decision boundaries for class 1 under binary classification case

為了方便對比和找出演算法優劣的原因,我們也比較了不同 Margin 下目標 Logit 的值:

圖4: Target logit analysis

3、評測

3.1 驗證集 :首先,我們對 3 個 1 比 1 比對的驗證集進行測試,網路結構為 LResNet100E- IR,訓練數據集 Refined-MS1M,所有結果都為單模型。

表 3

3.2 MegaFace 百萬人臉測試 :需要聲明的是,我們對 MegaFace 干擾集做了仔細的比對和清理 (標記 (R)),這樣獲得的性能才是模型本來的性能,也移除了噪音帶來的隨機性。參考 SphereFace 和 ArcFace(m=0.4) 在移除噪音前後的性能對比。真實性能 ArcFace(m=0.4) 是好於 SphereFace,但是在移除噪音之前正好相反。

在上面的實驗基礎上,我們做了更嚴格的實驗:移除所有訓練集合中和 probe-set(FaceScrub) 足夠相似的人物,得到以下結果:

可以看到移除和 probe-set 重複的訓練集人物還是有一定影響的,這也符合常理。另外我們也可以看到 ArcFace 和 CosineFace 受到的影響較小。

4、開源庫 InsightFace

在我們的開源代碼 InsightFace[0] 中,我們提供了 ArcFace 的官方實現,以及其他一系列 Loss 的第三方實現,並支持一鍵訓練。利用項目中提供的Refined-MS1M 訓練數據集,可以輕鬆達到論文中標稱的準確率值。

4.1 安裝:在 Linux 下兩行命令即可完成安裝:pip install six scipy scikit?learn opencv?python scikit ?image easydict mxnet?cu80git clone

4.2 訓練:一行命令即可獲得最佳的模型:CUDA_VISIBLE_DEVICES= 』0 ,1 ,2 ,3 』 python ?u train_softmax . py ??network r100 ??l ??prefix ../model?r100

4.3 地址:https://github.com/deepinsight/insightface.git

-馬上報名學習,挑戰百萬年薪-


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

北大新技術:利用WiFi設備進行人體行為識別!
清華大學張長水教授:神經網路模型的結構優化

TAG:AI講堂 |