人臉識別的LOSS(多分類Softamx)

2021-08-27 03:02:58 字數 2299 閱讀 5281

早期深度人臉識別方法,框架為cnn + softmax,以「超多分類」這樣一種比較難的任務訓練cnn,強迫網路在第乙個fc層形成比較緊湊的,判別力很強的深度人臉特徵,之後用於人臉識別。

softmax是soft(軟化)的max。在cnn的分類問題中,我們的ground truth是one-hot形式,下面以四分類為例,理想輸出應該是(1,0,0,0),或者說(100%,0%,0%,0%),這就是我們想讓cnn學到的終極目標。

網路輸出的幅值千差萬別,輸出最大的那一路對應的就是我們需要的分類結果。通常用百分比形式計算分類置信度,最簡單的方式就是計算輸出佔比,假設輸出特徵是hard的max

而現在通用的是soft的max,將每個輸出x非線性放大到exp(x),形式如下:

hard的max和soft的max到底有什麼區別呢?看幾個例子

相同輸出特徵情況,soft max比hard max更容易達到終極目標one-hot形式,或者說,softmax降低了訓練難度,使得多分類問題更容易收斂。

到底想說什麼呢?softmax鼓勵真實目標類別輸出比其他類別要大,但並不要求大很多。對於人臉識別的特徵對映(feature embedding)來說,softmax鼓勵不同類別的特徵分開,但並不鼓勵特徵分離很多,如上表(5,1,1,1)時loss就已經很小了,此時cnn接近收斂梯度不再下降。

softmax loss訓練cnn,mnist上10分類的2維特徵對映視覺化如下:

不同類別明顯分開了,但這種情況並不滿足我們人臉識別中特徵向量對比的需求。人臉識別中特徵向量相似度計算,常用歐式距離(l2 distance)和余弦距離(cosine distance),我們分別討論這兩種情況:

總結來說:

softmax訓練的深度特徵,會把整個超空間或者超球,按照分類個數進行劃分,保證類別是可分的,這一點對多分類任務如mnist和imagenet非常合適,因為測試類別必定在訓練類別中。

但softmax並不要求類內緊湊和類間分離,這一點非常不適合人臉識別任務,因為訓練集的1w人數,相對測試集整個世界70億人類來說,非常微不足道,而我們不可能拿到所有人的訓練樣本,更過分的是,一般我們還要求訓練集和測試集不重疊。

所以需要改造softmax,除了保證可分性外,還要做到特徵向量類內盡可能緊湊,類間盡可能分離

deepid2, deepid2+, deepid3都在採用softmax + contrastive loss,contrast loss是:

同類特徵的l2距離盡可能小,不同類特徵的l2距離大於margin(間隔) m,contrastive loss同時約束類內緊湊和類間分離。25個patch訓練25個cnn,特徵聯合後pac降維,訓練joint bayesian分類,在lfw上softmax + contrast loss的deepid2達到99.15%,多層加監督資訊的deepid2+達到99.47,採用更大的deep cnn的deepid3達到99.53%。deepid系列是早期的深度學習人臉識別方法,但**都沒有開源,而且深度特徵是多patch聯合,還要訓練分類器,繁瑣不實用。

工業屆應用最廣的還是facenet的triplet loss:

人臉識別的流程

記錄一下目前對人臉識別流程及識別方法的理解,以後隨著認識的提公升不斷更新 在整個過程中所使用的都是灰度化之後的。為什麼要轉化為灰度?1.識別物體最關鍵的部分是,找到物體的邊緣,就是的梯度,的梯度計算用到的就是灰度化之後的。2.顏色容易受到光照影響,難以提供關鍵資訊,最重要的是灰度化之後可以加快計算速...

人臉識別分類

人臉識別主要有四個研究方向,分別為人臉檢測,人臉關鍵點檢測,人臉比對和人臉屬性檢測.人臉檢測即檢測並定位採集中人臉的位置,大小和姿態.返回高精度的人臉框框座標 研究難點 人臉關鍵點檢測即在目標中定位出人臉面部的關鍵區域位置,包括眉毛,眼睛,鼻子,嘴巴和臉部輪廓.關鍵點檢測點數有68點和106點兩類....

人臉識別的深度學習

深度學習只不過是機器學習的標準範例,更準確地說 是其演算法之一。在最大程度上,它基於人腦的概念和神經元的相互作用。如果你開始谷歌搜尋深度學習是什麼,你會發現今天這個超級熱門詞遠遠不是新的。為什麼這樣?該術語本身出現在20世紀80年代,但到2012年,沒有足夠的力量來實施這項技術,幾乎沒有人關注它。在...