1. 程式人生 > >度量學習之人臉識別演算法總結

度量學習之人臉識別演算法總結

特徵臉Eigenface

Eigenface(特徵臉)在人臉識別歷史上應該是具有里程碑式意義的,其被認為是第一種有效的人臉識別演算法。1987年 Sirovich and Kirby 為了減少人臉影象的表示(降維)採用了主成分分析法(Principle Component Analysis, PCA)的方法,1991年 Matthew Turk和Alex Pentland首次將PCA應用於人臉識別,即將原始影象投影到特徵空間,得到一系列降維影象,取其主元表示人臉,因其主元有人臉的形狀,估稱為“特徵臉”。

這裡的低維空間維度通常是由使用者指定的,例如原始論文中僅使用了 7個維度。 PCA 方法中得到的特徵值即為其對應特徵向量那個方向上樣本的標準差,所以另一個選擇引數 d 的方式是由重構誤差來進行選擇,例如選擇保留 d 個特徵值之和與全部特徵值之和之比大於 99% 的最小的 d。


特徵臉的主要問題在於它是一個無監督的演算法,它只能尋找到使樣本儘可能分散開的幾個維度,而分散開也不代表一定能將人臉區分開來,特徵臉無法找到能夠使樣本之間的間距拉大的那些維度,判別臉由此而生。

 

判別臉Fisherface:

Fisherface是一種基於線性判別分析(Linear Discriminant Analysis, LDA)的人臉識別演算法。

由Belhumeur,hespanha,Kriegman於1997年提出。它的主要思想也是降維,但降維的方向被設定為使得同類樣本的投影點儘量相近、異類樣本的投影點儘量遠離的方向。

主成分分析與線性判別分析的主要區別在於散度矩陣的定義,主成分分析使用整體散度矩陣 S

t 進行優化,而線性判別分析使用類間散度矩陣除以類內散度矩陣 Sw-1Sb 進行優化。主成份分析使得全部樣本儘可能分散,而線性判別分析使得類間更加分散、類內更加聚攏,因此線性判別分析更加適合進行人臉識別任務。

 

HaarHaar-like、LBP、LBPH、HOG、DPM

Haar-like,也就是最經典的Viola-Jones演算法中使用的特徵,由Viola和Jones於2001年發表於

《Rapid Object Detection using a Boosted Cascade of Simple Features》

《Robust Real-Time Face Detection》

《An Extended Set of Haar-like Features for Rapid Object Detection》

LBPH,區域性二值式直方圖(Local Binary Pattern Histograms),由Ahonen,Hadid,Pietikainen於2004年提出

HOG,由Navneet Dalal在cvpr2005提出

DPM,由Felzenszwalb在2008年提出,附帶一系列cvpr,nips。算是非深度學習時代最好的特徵運算元了。

 

Deepface:

DeepFace: Closing the Gap to Human-Level Performance in Face Verification[C]. CVPR, 2014

訓練   softmax loss

推理   cos距離

LFW上達到97.35% (人類識別cropped image結果達到97.53%) (LFW:5749人,13233張圖)

 

DeepID:

Deep Learning Face Representation from Predicting 10,000 Classes[C]. CVPR, 2014

湯老師組的作品

10 crops, 3 scales, rgb+gray  + flipped 160*2*60dim

訓練:各自做softmax loss

推理:聯合貝葉斯    LFW 97.2%

整體流程:

網路結構:

 

DeepID2 (contrastive loss):

Deep Learning Face Representation by Joint Identification-Verification[J]. NIPS, 2014

湯老師組的作品

訓練200 patches+ flipped

使用2個loss,分別為softmax loss , contrastive loss

softmax loss:

contrastive loss:

推理:挑選25個feature pca降維  聯合貝葉斯    LFW 99.15%

 

DeepID2+

Deeply learned face representations are sparse, selective, and robust[J]. CVPR, 2015

湯老師組的作品

增加通道維度conv128 fc512

增大訓練資料集

增加網路訓練監督次數,每一個pooling之後都外接fc,進行verification

LFW:99.47%

 

DeepID3

DeepID3: Face Recognition with Very Deep Neural Networks

湯老師組的作品

改進:

採用了當時最新的vgg和googlenet網路結構,使得網路結構較DeepID2+更深。

繼續採用DeepID2+中的監督訊號跨層連線策略。 繼續採用DeepID2+中的25個patches(加flip)特徵組合策略。其中VGG和googlenet各訓練一半。 繼續採用DeepID2+中的joint bayesian用於驗證的策略。

 

FaceNet  (triplet loss)

FaceNet: A unified embedding for face recognition and clustering[J]. CVPR, 2015

triplet loss:

xa ,xp 為同一類,xn與xa, xp為不同類,alpha為margin

 

實驗結果:  Inception+triplet LFW 99.63%

優點:

不需像分類loss,對於訓練資料每類影象數有限制。當影象樣本不均衡且每類只有很少樣本時也可有效利用triplet loss。

缺點:

triplet選擇導致樣本數激增,選擇樣本簡單會導致訓練緩慢,選擇樣本過難會使得選triplet太慢且易受受噪聲干擾。所以triplet的選擇至關重要。

semi-hard的樣本選擇:

後續改進:

  1. triplet對選擇方式的改進,improved triplet,分別計算a,p的loss,a,n的loss,p,n的loss。

     

  2. loss計算方式的改進quadruplet loss,4個樣本,i表示anchor,j表示P,k,l都表示n,也就是1個anchor,1個正樣本,2個負樣本,2個負樣本為不同類別。

caffeFace(Centerloss):

A Discriminative Feature Learning Approach for Deep Face Recognition[C]. ECCV, 2016

siat喬宇老師組的,溫研東的1作

centerloss只約束內內的距離,對內間距離無約束。

Softmax+centerloss

訓練中計算方式,

實驗結果:

與softmax聯合使用

lamda = 0.003   alpha = 0.5

LFW  99.28%

 

range loss:

Range Loss for Deep Face Recognition with Long-tail. CVPR, 2017

siat喬宇老師組的,溫研東的3作,算是center loss的改進版,內內,內間距離都有約束

訓練,softmax+range loss

Dcenter表示在所有類別中,選擇2個不同類別中心距離最短的,即類別Q和類別R是所有距離中最短的。

優點:

  1. 解決訓練資料集分佈不均,長尾問題
  2. 聯合考慮了batch內所有類內類間距離
  3. contrastive loss, triplet loss是在兩三個樣本間獨立作比較,而range loss是多個類別所有樣本的中心距離的比較

實驗結果:

LFW結果 99.52%    實驗 k=2

 

Large-Margin Softmax (LSoftmax):

Large-margin softmax loss for convolutional neural networks[J].ICML, 2016

溫研東的2作

基於softmax的改進,

(1)去掉了偏置b,wx+b --> wx

(2)引入乘性margin m(cos函式內部),當m=1時,為softmax

優點:

之前的改進方法都是額外加一個內內,內間的優化loss,這樣會引入額外的引數和計算量。現在改為直接優化softmax函式。

 

Sphereface(ASoftmax(angular softmax)):

SphereFace: Deep Hypersphere Embedding for Face Recognition.cvpr,2017

溫研東的2作

改進:

去掉||w||影響,將權值W進行了歸一化操作,同時加入乘性margin(cos函式內部)

實驗結果:

 

NormFace:

 Normface: L2 hypersphere embedding for face verification[C], ACM, 2017

成都電子,王峰的作品

改進:

去掉||w||和||x||影響,對權值w和輸入x都進行了歸一化操作,同時外部乘以係數s,注意必須乘以s,保證變換前和變換後整體的均值一樣。注意這裡去掉了margin。

 

AM-Softmax / CosFace:

Additive margin softmax for face verification[J]. IEEE Signal Processing Letters, 2018

CosFace: Large margin cosine loss for deep face recognition[J]. arXiv preprint arXiv:1801.09414, 2018

分別為成都電子,王峰和騰訊AI Lab的2篇論文,做的同樣的工作。

改進:

w、x歸一化,將cos內部的乘性margin修改為cos外部的加性margin(該margin在cos函式的外面加)

多種margin約束比較:

 

Arcface(insightface)

Arcface: Additive angular margin loss for deep face recognition[J]. arXiv preprint arXiv:1801.07698, 2018

改進:

w、x歸一化,將cos函式的外面的加性margin修改為cos函式裡面的加性margin

多種margin約束比較:

 

方法總結:

(1)contrastive loss (兩個樣本比較)   triplet loss(三個樣本比較)   range loss(mini_batch內比較)

(2)Softmax->LSoftmax(cos(m*seita))->ASoftmax(cos(m*seita),/||w|| )->Normface->(/||w||,/||x||)->AMSoftmax cosface (cos(seita)-m,/||w||,/||x||) -> arcface(cos(seita+m),/||w||,/||x||)