MegaFace數(shù)據(jù)集
作者:DeepInsight 洞見實(shí)驗(yàn)室
在知名的人臉識別評測 LFW 中,很多團(tuán)隊(duì)都取得了接近乃至超過 99.80% 的成績。但是在大規(guī)模人臉識別中,挑戰(zhàn)依然存在。例如MegaFace百萬人臉識別挑戰(zhàn),即便在 LFW 上表現(xiàn)良好的模型也常常只能達(dá)到 60% 多的精度。DeepInsight 洞見實(shí)驗(yàn)室團(tuán)隊(duì)刷新了這一挑戰(zhàn)的記錄,將 MegaFace 的精度提升到 98%,超過俄羅斯 Vocord 公司保持的 91% 的紀(jì)錄。
人臉識別被很多人認(rèn)為是個(gè)成熟領(lǐng)域的問題,在知名的人臉識別評測 LFW 中,很多團(tuán)隊(duì)都取得了接近乃至超過 99.80% 的成績,這在 2017 年人臉識別諸多報(bào)道中都可以看到,由于 LFW 評測中存在個(gè)別錯(cuò)誤數(shù)據(jù)的緣故,這個(gè)成績意味著接近滿分。
盡管 LFW 是一個(gè) 1 比 1 比對任務(wù),這仍然說明了在較小規(guī)模數(shù)據(jù)集上的人臉識別問題基本已經(jīng)得到解決。然而在大規(guī)模人臉識別中,挑戰(zhàn)依然存在。例如 MegaFace 百萬人臉識別挑戰(zhàn),這是個(gè) 1 比 N 比對測試,即便在 LFW 上表現(xiàn)良好的模型也常常只能達(dá)到 60% 多的精度。2018 年 2 月,我們通過系列努力,將 MegaFace 的精度提升到了 98%,超過俄羅斯 Vocord 公司保持的 91% 的紀(jì)錄,讓這一大規(guī)模人臉識別具備了一個(gè)更加良好的 baseline。我們同時(shí)公布了代碼[0],數(shù)據(jù),以及相應(yīng)論文[1],希望能推動(dòng)人工智能從業(yè)人員進(jìn)一步來解決更大規(guī)模的人臉識別挑戰(zhàn)。
在文章中,我們[1]提出了一種具有更好幾何解釋性的 loss function,用來同時(shí)最小化類內(nèi)距離和最大化類間距離。我們也探討了在人臉識別領(lǐng)域影響最大的幾個(gè)方面,并且在多個(gè)公開評測集上獲得了最優(yōu)的性能。文中提到的所有代碼實(shí)現(xiàn)、訓(xùn)練集以及結(jié)果都可以直接從 github 上[0]下載和復(fù)現(xiàn)。
網(wǎng)絡(luò)結(jié)構(gòu)
首先,我們嘗試在人臉識別的任務(wù)上找到一個(gè)優(yōu)秀的網(wǎng)絡(luò)結(jié)構(gòu)。
3.1 網(wǎng)絡(luò)輸入設(shè)定
在我們所有的實(shí)驗(yàn)當(dāng)中,都根據(jù)人臉的 5 個(gè)關(guān)鍵點(diǎn)進(jìn)行對齊,并且切割設(shè)置大小到 112x112。因?yàn)檫@個(gè)圖片大小是 ImageNet 輸入的 1/4,我們考慮取消常見網(wǎng)絡(luò)結(jié)構(gòu)起始的降分辨率操作,即替換(conv77-stride22)為(conv33-stride11)。我們這個(gè)輸入放大版的網(wǎng)絡(luò)結(jié)構(gòu)標(biāo)記為 L。
3.2 網(wǎng)絡(luò)輸出設(shè)定
此處輸出指代特征向量這一層。我們實(shí)驗(yàn)了多種從最后一個(gè)卷積層之后如何連接到特征向量的方法,發(fā)現(xiàn)了最優(yōu)的結(jié)構(gòu)代號 E,即 (Convolution -> BN -> Dropout -> FullyConnected -> BN),更多的選擇和實(shí)驗(yàn)結(jié)果可以參考原文 [1]。
3.3 ResNet 單元設(shè)定
在ResNet 中,我們發(fā)現(xiàn) 3*BN[5] 的單元相比原始實(shí)現(xiàn)[6]和 Identity Mapping[7]的 unit 性能更好,標(biāo)記為-IR。
圖 1: Improved residual unit: BN-Conv-BN-PReLu-Conv-BN
3.4 評測
我們在 VGG2 數(shù)據(jù)集上用 Softmax 測試了不同網(wǎng)絡(luò)骨干和不同配置,得到以下結(jié)果:
表 1: Accuracy (%),speed (ms) and model size (MB) comparison between different backbones (Softmax@VGG2)
據(jù)此,我們選擇 LResNet100E-IR作為我們的主力網(wǎng)絡(luò)骨干,因?yàn)樗錾男阅芎拖鄬Σ淮蟮拈_銷。
Loss Functions
4.1 Softmax
損失函數(shù)是另一個(gè)提升識別精度的關(guān)鍵工作,在大家極力壓榨網(wǎng)絡(luò)骨干結(jié)構(gòu)換取性能提升的時(shí)候,回頭再來看損失函數(shù)這個(gè)網(wǎng)絡(luò)訓(xùn)練的指揮棒,會有更多的發(fā)現(xiàn)。做為最常見的分類損失 Softmax,其定義如下:
Softmax 是最常見的人臉識別損失函數(shù),然而,Softmax 不會顯式的優(yōu)化類間和類內(nèi)距離的,所以通常不會有太好的性能。
4.2 Triplet Loss
Triplet Loss 作為一種 Metric Learning,也在人臉識別中廣泛使用。定義為:
相比 Softmax,其特點(diǎn)是可以方便訓(xùn)練大規(guī)模 ID(百萬,千萬)的數(shù)據(jù)集,不受顯存的限制。但是相應(yīng)的,因?yàn)樗年P(guān)注點(diǎn)過于局部,使得性能無法達(dá)到最佳且訓(xùn)練需要的周期非常長。
4.3 SphereFace
由于 Tripelet Loss 訓(xùn)練困難,人們逐漸尋求結(jié)合 Metric Learning思想來改進(jìn) Softmax 的思路,其中 SphereFace[2] 是其中的佼佼者,作為 17 年提出的一種方法,在當(dāng)時(shí)達(dá)到了 state-of-the-art。其定義如下:
在具體實(shí)現(xiàn)中,為了避免加入的 margin(即 m) 過大,引入了新的超參 λ,和 Softmax 一起聯(lián)合訓(xùn)練。
那么這里的 margin 具體是什么? 包括下述的幾種算法都會提到 margin。我們從 Softmax 說起,參考上一節(jié)他的公式
為了方便計(jì)算,我們讓 bias=0,則全聯(lián)接的 WX 可以表示為
θ 表示 W 和 X 的夾角,歸一化 W 后:
對特定的 X,|| X || 是確定的,所以這時(shí) Softmax 優(yōu)化的其實(shí)就是 cos 值,或 者說他們的夾角 θ。
在這樣的 Softmax 中,類和類之間的界限只是一條線。這樣會產(chǎn)生的問題是: 落在邊界附近的點(diǎn)會讓整個(gè)模型的泛化能力比較差。為了解決這個(gè)問題,作者就想到了讓這個(gè)界限變大一些,讓不同類之間的點(diǎn)盡量遠(yuǎn)。在投影的夾角上加入一個(gè) margin 可以達(dá)到這個(gè)目的,如下圖:
圖 2: sphereface
可以看到在這樣做之后,即使是類間距離最近的點(diǎn)也有一定的 margin。在訓(xùn)練中,相同類的人臉圖片會向著自己的 w ? vector 壓緊。
4.4 Additive Cosine Margin
最近,在 [3],[4] 中,作者提出了一種在 Cosine 值上加入 Margin 的策略,定義如下:
模型獲得了比 [2] 更好的性能,同時(shí)實(shí)現(xiàn)很方便,也擺脫了和 Softmax 聯(lián)合訓(xùn)練的困擾,在訓(xùn)練起始階段不再有收斂方面的問題。
4.5 Additive Angular Margin
我們 [1] 提出了在角度上增加固定值的 Margin,在 Cosine Margin 的基礎(chǔ)上,更具有幾何 (角度) 解釋性并且獲得了更好的性能,定義如下:
這里我們同時(shí) normalize 了 weight(到 1) 和 feature(到 s,默認(rèn) 64),則 (Cosine Margin 也同理):
圖 3: ArcFace 幾何解釋
4.6 對比
以二元分類舉例,以上各算法的 decision boundary 如下:
表 2: Decision boundaries for class 1 under binary classification case
為了方便對比和找出算法優(yōu)劣的原因,我們也比較了不同 Margin 下目標(biāo) Logit 的值:
圖4: Target logit analysis
評測
4.7.1 驗(yàn)證集
首先,我們對 3 個(gè) 1 比 1 比對的驗(yàn)證集進(jìn)行測試,網(wǎng)絡(luò)結(jié)構(gòu)為 LResNet100E- IR,訓(xùn)練數(shù)據(jù)集 Refined-MS1M,所有結(jié)果都為單模型。
表 3
4.7.2 MegaFace 百萬人臉測試
需要聲明的是,我們對 MegaFace 干擾集做了仔細(xì)的比對和清理 (標(biāo)記 (R)),這樣獲得的性能才是模型本來的性能,也移除了噪音帶來的隨機(jī)性。參考 SphereFace 和 ArcFace(m=0.4) 在移除噪音前后的性能對比。真實(shí)性能 ArcFace(m=0.4) 是好于 SphereFace,但是在移除噪音之前正好相反。
表 4
在上面的實(shí)驗(yàn)基礎(chǔ)上,我們做了更嚴(yán)格的實(shí)驗(yàn):移除所有訓(xùn)練集合中和 probe-set(FaceScrub) 足夠相似的人物,得到以下結(jié)果:
表 5
可以看到移除和 probe-set 重復(fù)的訓(xùn)練集人物還是有一定影響的,這也符合常理。另外我們也可以看到 ArcFace 和 CosineFace 受到的影響較小。
開源庫 InsightFace
在我們的開源代碼 InsightFace[0] 中,我們提供了 ArcFace 的官方實(shí)現(xiàn),以及其他一系列 Loss 的第三方實(shí)現(xiàn),并支持一鍵訓(xùn)練。利用項(xiàng)目中提供的 Refined-MS1M 訓(xùn)練數(shù)據(jù)集,可以輕松達(dá)到論文中標(biāo)稱的準(zhǔn)確率值。
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 訓(xùn)練
一行命令即可獲得最佳的模型:
CUDA_VISIBLE_DEVICES= ’0 ,1 ,2 ,3 ’ python ?u train_softmax . py ??network r100 ??l ??prefix ../model?r100
引用 (簡單版)
[0] https://github.com/deepinsight/insightface
[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
來源:新智元