中國團隊奪得 MegaFace 百萬人臉識別冠軍,精度 98% 再創紀錄,論文代碼 + 數據全開源

作者:DeepInsight 洞見實驗室

在知名的人臉識別評測 LFW 中,很多團隊都取得了接近乃至超過 99.80% 的成績。但是在大規模人臉識別中,挑戰依然存在。例如 MegaFace 百萬人臉識別挑戰,即便在 LFW 上表現良好的模型也常常只能達到 60% 多的精度。DeepInsight 洞見實驗室團隊刷新了這一挑戰的記錄,將 MegaFace 的精度提升到 98%,超過俄羅斯 Vocord 公司保持的 91% 的紀錄。

人臉識別被很多人認為是個成熟領域的問題,在知名的人臉識別評測 LFW 中,很多團隊都取得了接近乃至超過 99.80% 的成績,這在 2017 年人臉識別諸多報道中都可以看到,由於 LFW 評測中存在個別錯誤數據的緣故,這個成績意味著接近滿分。

儘管 LFW 是一個 1 比 1 比對任務,這仍然說明了在較小規模數據集上的人臉識別問題基本已經得到解決。然而在大規模人臉識別中,挑戰依然存在。例如 MegaFace 百萬人臉識別挑戰,這是個 1 比 N 比對測試,即便在 LFW 上表現良好的模型也常常只能達到 60% 多的精度。2018 年 2 月,我們通過系列努力,將 MegaFace 的精度提升到了 98%,超過俄羅斯 Vocord 公司保持的 91% 的紀錄,讓這一大規模人臉識別具備了一個更加良好的 baseline。我們同時公布了代碼 [0],數據,以及相應論文 [1],希望能推動人工智慧從業人員進一步來解決更大規模的人臉識別挑戰。

在文章中,我們 [1] 提出了一種具有更好幾何解釋性的 loss function,用來同時最小化類內距離和最大化類間距離。我們也探討了在人臉識別領域影響最大的幾個方面,並且在多個公開評測集上獲得了最優的性能。文中提到的所有代碼實現、訓練集以及結果都可以直接從 github 上 [0] 下載和復現。

網路結構

首先,我們嘗試在人臉識別的任務上找到一個優秀的網路結構。

3.1 網路輸入設定

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

3.2 網路輸出設定

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

3.3 ResNet 單元設定

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

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

3.4 評測

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

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

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

4. Loss Functions

4.1 Softmax

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

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

4.2 Triplet Loss

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

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

4.3 SphereFace

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

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

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

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

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

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

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

圖 2: sphereface

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

4.4 Additive Cosine Margin

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

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

4.5 Additive Angular Margin

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

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

圖 3: ArcFace 幾何解釋

4.6 對比

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

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

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

圖 4: Target logit analysis

評測

4.7.1 驗證集

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

表 3

4.7.2 MegaFace 百萬人臉測試

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

表 4

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

表 5

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

開源庫 InsightFace

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

5.1 安裝

在 Linux 下兩行命令即可完成安裝:

pip install six scipy scikit?learn opencv?python scikit ?image easydict mxnet?cu80 git clone https://github.com/deepinsight/insightface.git

5.2 訓練

一行命令即可獲得最佳的模型:

CUDA_VISIBLE_DEVICES= 』0 ,1 ,2 ,3 』 python ?u train_softmax . py ??network r100 ??l ??prefix ../model?r100

引用 (簡單版)

[0] github.com/deepinsight/

[1] Additive Angular Margin Loss for Deep Face Recognition: Jiankang Deng*,Jia Guo* and Stefanos Zafeiriou

[2] SphereFace: Deep Hypersphere Embedding for Face Recognition: Liu,Weiyang and Wen,Yandong and Yu,Zhiding and Li,Ming and Raj,Bhiksha and Song,Le

[3] CosFace: Large Margin Cosine Loss for Deep Face Recognition: Wang,Hao and Wang,Yitong and Zhou,Zheng and Ji,Xing and Li,Zhifeng and Gong,Dihong and Zhou,Jingchao and Liu,Wei

[4] Additive Margin Softmax for Face Veri cation: Wang,Feng and Liu,Weiyang and Liu,Haijun and Cheng,Jian

[5] Deep pyramidal residual networks: Han,Dongyoon and Kim,Ji- whan and Kim,Junmo

[6] Deep Residual Learning for Image Recognition: Kaiming He,Xi- angyu Zhang,Shaoqing Ren,Jian Sun

[7] Identity Mappings in Deep Residual Networks: Kaiming He,Xi- angyu Zhang,Shaoqing Ren,Jian Sun


2018 新智元 AI 技術峰會倒計時 17 天】

查看嘉賓與日程

峰會門票火熱搶購,搶票鏈接:

huodongxing.com/event/8

推薦閱讀:

【小林的OpenCV基礎課 番外】卷積與濾波
【人工智慧學習總結3】圖像的相似度衡量指標、二值化方法評估指標(二)
Caffe2教程--2.圖像載入與預處理
《論文研讀系列》SSD-Single Shot Multibox Detector
計算機視覺常見領域問題概要(深度學習)

TAG:計算機視覺 | 人臉識別 | 人工智慧 |