人臉識別經典—FaceNet【美亞技術分享VOL.58】

2021-03-02 美亞柏科

編者按

近年來,隨著深度學習的火熱發展,人臉識別技術不斷創出新高度,更多方法的發掘及大牛們項目的持續開源,讓人臉識別、深度學習甚至是人工智慧顯得不再神秘,LFW識別率99%已經隨處可見,今天美亞柏科技術專家就人臉識別的一些經典算法和資源進行分享,感受大神們的「最強大腦」!

在實際應用中,人臉驗證(判斷是否是同一人)、人臉識別(這個人是誰)和人臉聚類(尋找類似的人)在自然場景應用仍面臨一些困難。為了降低背景和環境等因素帶來的幹擾,人臉識別一般先經過人臉檢測(Face Detection)、人臉對齊(Face Alignment)等預處理,然後將人臉圖像映射到歐幾裡得等空間,空間距離的長度代表了人臉圖像的相似性。只要該映射空間生成,人臉識別,驗證和聚類等任務就顯得不那麼複雜。

由於先前的網絡和算法在各種測評榜單上不斷被」擠下去」,似乎激發不起大夥的興趣,那麼本期我們就一起看看Google大神的匠心之作——FaceNet。

FaceNet其實就是一個前言所訴的通用人臉識別系統:採用深度卷積神經網絡(CNN)學習將圖像映射到歐式空間。空間距離直接和圖片相似度相關:同一個人的不同圖像在空間距離很小,不同人的圖像在空間中有較大的距離,可以用於人臉驗證、識別和聚類。在800萬人2億多張樣本集訓練後,FaceNet在LFW數據集上測試的準確率達到了99.63%,在YouTube Faces DB數據集上,準確率為95.12%。

作為經典的深度學習、人臉識別案例,依然採用主流的深度神經網絡來提取特徵,並採用triplet_loss來衡量訓練過程中樣本之間的距離誤差。在訓練前或者在線學習中不斷給神經網絡製造「困難」,即一直在尋找與樣本最不像的「自己」,同時尋找與自己最像的「他人」。通過隨機梯度下降法,不斷縮短自身所有樣本的差距,同時儘可能拉大與其他人的差距,最終達到一個最優。通過這樣一種嵌入學習(Embedding learing),能對原始的特徵提取網絡輸出層再進一步學習,從而改善特徵的表達。

Triplet Loss:

圖1 通過學習後,正樣本對距離更近,負樣本對距離更遠

因此,算法的目標——對樣本集裡構造的任意三元組,使得類內距離儘可能小,類間距離儘可能拉大。即優化機器學習裡這樣的一個損失函數:

這裡,是個閾值,當類內距離與類間距離大於閾值時,才產生loss和梯度。梯度計算:當之間的距離小於之間的距離加時,[]內的值大於零,就會產生損失。

之間的距離大於等於之間的距離加時,loss為零。對三元組分別求偏導,則有:

可見,求梯度的結果都是用到了正向傳播的變量。因此,計算時只需將正向傳播的結果暫存,便可以直接計算反向傳播梯度。

對於整個FaceNet結構,這裡的特徵提取可以當作一個黑盒子,可以採用各式各樣的網絡。最早的FaceNet採用兩種深度卷積網絡:經典Zeiler&Fergus架構和Google的Inception v1。最新的FaceNet進行了改進,主體模型採用一個極深度網絡Inception ResNet -v2,由3個帶有殘差連接的Inception模塊和1個Inception v4模塊組成。

圖2  FaceNet系統框架

如圖2所示,模型的整體框架與其他經典深度學習方法基本一致。前面特徵提提取部分也是基於CNN的,只不過深度網絡Inception-v4,後面接一個特徵歸一化層,使得特徵的二範式,即將圖像特徵都映射到一個超球面上,這樣可以規避樣本的成像環境帶來的差異。最後採用triplet_loss作為損失,加上隨機梯度下降法(SDG,Stochastic Gradient Descent)進行反向傳播。模型Inception還連接了殘差,也是本方法的突出點之一,提高了訓練收斂速度。各個模塊具體如下:

圖3 Inception-ResNet-v2網絡簡化示意圖

 (左)典型的Inception-v4 網絡

(右)Inception-ResNet-v2網絡輸入部分

網絡:Inception-ResNet-v2

新一代的FaceNet採用Inception-ResNet-v2網絡,在原有的Google的Inception系列網絡的基礎上結合了微軟的殘差網絡ResNet思想。其中,殘差連接(Residual connections )允許模型中存在shortcuts,可以讓研究學者成功地訓練更深的神經網絡,同時還能明顯地簡化Inception塊。

圖4(a)                                      圖4(b)

圖4(c)                                               圖4(d)

圖4  不同尺度,不同連接方式下的Inception

1、Triplet選取策略:

為了使類內距離更小,類間距離更大,如何選擇合適的triplet顯得格外重要。因此,訓練中我們儘可能選擇兩種困難樣本對(hard negative pair 和 hard positive pair)。在n張樣本(包含同一個人和不同人的)的集合裡,總共可能出現n2種比較。對於每張訓練樣本,首先可以考慮從一個ID的自身樣本集中找出與當前訓練樣本最不像的樣本形成hard positive pair;然後與其他類的所有樣本比對,找出最像的樣本,與之形成hard negative pair。

當然,對於大量訓練樣本集,每次訓練要在完整數據集上計算argmin和argmax是不可能的,而且容易被樣本分布左右訓練結果。因此,這裡設置可以在每N步過後,使用最近生成的網絡,計算子集裡的兩兩差異,生成一些triplet,再進行下一步訓練。也可以設置mini-batch,這個mini-batch固定的同一類數量分布(比如都為40張)和隨機負樣本,用在線生成和選取mini-batch裡的hard pos/neg 樣例。這裡hard negative pair可以選擇mini-batch裡的所有同類形成的正樣本對,而不一定是最困難那對。Batch大小會影響梯度收斂,但是太小batch對選擇triplet不利。經過多次實驗,這裡batch size設置為1800。

除此之外,還可以對triplet進行約束:

與傳統的softmax loss相比,triplet_loss直接對距離進行度量和優化,效果更明顯。根據其他工程人員經驗,實際訓練中,可以對softmax loss和triplet_loss進行加權,在線調整權值,達到最優。

2、訓練策略:

殘差不是訓練極深度神經網絡的必要條件,但能明顯提升訓練速度。

為了防止陷入局部最優,防止訓練過程中網絡突然「死亡」(梯度都接近於0),一味地下調學習率或者外加batch-normaliztion不是長久之計,因此這裡採用了在原來的激活層外連接殘差塊。

圖5殘差連接塊

Inception-v4網絡+最新的residual connection技術+triplet_loss咋眼一看,強大完美的組合有木有!既提取了魯棒人臉特徵,又加快訓練速度,更重要的是拉開了類別之間的差距。但是,實際上會遇到一些棘手的問題,比如triplet選取有偏差(絕大多數可能出現);網絡龐大,硬體資源有限時batch size無法加上去;訓練採用歐式距離而實際驗證比對時難以直接比較,使用時需要重新映射或轉換到(0,1)之間等。當然,FaceNet本身也在不斷改進和演化,更強的網絡和方法持續發布,其他平臺的版本也在開發中。

FaceNet早已開源,其中tensorflow的版本在https://github.com/davidsandberg/facenet處,而且項目不斷在更新。有興趣的朋友可以自己試試,可以嘗試將其中的黑盒部分(網絡模型)替換成其他的經典模型,說不定會有意外收穫哦,但是由於業內眾所周知的問題,tensorflow被許多大牛們冠以反人類深度學習框架的美名,說實話,很多工程上的同行是不情願去用它的,不過從研究角度上講,作者欣然將源碼精華分享,是業內的福音。

原項目中,谷歌大神在八百萬人臉數據集上訓練。學習率0.045,momentum為0.9,batch size 1800,拼死將LFW刷到99.6%以上!(前提是得有8百萬人,2億張樣本…)

未完待續.

[1] Schroff F, Kalenichenko D, Philbin J. FaceNet: A unified embedding for face recognition and clustering[J]. 2015:815-823.


[2]Christian Szegedy,Sergey Ioffe,Vincent Vanhoucke. Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning. arXiv:1602.07261


[3] https://github.com/davidsandberg/facenet

更多往期技術分享,點擊閱讀原文或者美亞柏科菜單欄【美亞V+】->【技術分享】即可!

相關焦點

  • 如何在 Keras 中使用 FaceNet 開發人臉識別系統
    FaceNet 是 Google 工程師 Florian Schroff、Dmitry Kalenichenko、James Philbin 等人於 2015 年開發的人臉識別系統,由於算法原理容易理解、應用方便,成了目前最為流行的人臉識別技術。今天,AI 前線帶領大家跟隨 Jason Brownlee 去學習如何在 Keras 中使用 FaceNet 開發人臉識別系統。
  • OpenCV+Tensorflow實現實時人臉識別演示
    ,它跟其他人臉識別模型最大的一個不同就是它不是一個中間層輸出,而是直接在歐幾裡德低維空間嵌入生成人臉特徵,這個對以後的各種識別、分類、相似度比較都非常方便。FaceNet網絡設計目標任務有如下1.驗證-驗證是否為同一張臉2.識別-識別是否為同一個人3.聚類-發現人臉具有相同之處的人關於什麼是神經網絡嵌入,這個解釋比較複雜,簡單的說神經網絡的嵌入學習可以幫助我們把離散變量表示為連續的向量,在低維空間找到最近鄰,tensorflow中的word2vec就是用了嵌入。
  • 【美亞技術分享VOL.69】
    本次感謝美亞柏科技術專家給我們分享VeraCrypt的取證知識。接下來將針對不同的加密類型展開識別研究。3加密系統分區類型的識別對於加密系統分區或者加密整個系統盤類型:此類型的識別在三種加密中是屬於比較容易識別類型。通過對加密數據硬碟開頭512位元組分析,可發現VeraCrypt系統分區加密後的數據會在頭部生成一個相應的標識。
  • 深扒人臉識別60年技術發展史(附國內人臉識別科技企業名單)
    人臉識別是啥玩意兒?人臉識別技術,是基於人的臉部特徵信息進行身份識別的一種生物識別技術。用攝像機或攝像頭採集含有人臉的圖像或視頻流,並自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部的一系列相關技術,通常也叫做人像識別、面部識別。傳統的人臉識別技術主要是基於可見光圖像的人臉識別,這也是人們熟悉的識別方式。簡單的來說就是一個讓計算機認出你的過程。
  • 人臉識別哪家強?科大訊飛發布最新人臉識別技術
    ,一直是公認的模式識別難題,在過去幾十年間,世界頂尖科研機構一直在為人臉識別而努力,但是沒有任何一個計算機算法能夠超越肉眼在LFW上的識別率97.52% ,直到香港中文大學湯曉鷗教授團隊開發出了一個基於高斯過程的人臉識別技術—GaussianFace,「高斯臉的識別率為98.52%,這是機器首超人類」 ,「幾個月前我們的DeepID人臉識別技術在LFW上獲得了99.15%的識別率,又超極限;2014
  • 清華大學:人臉識別技術爆出巨大醜聞
    6S目視化管理手冊2.2021工作總結計劃模板全套人臉識別技術,爆出巨大醜聞。雖然,我們之前就想過,人工智慧技術,是一個新的技術,肯定會有不完整的地方。但,今天當有人真正爆出這一幕時,我們還是被震驚了。。剛剛寫稿前,清華大學RealAI研究團隊對外還說了這樣一段話:現有的人臉識別技術可靠度遠遠不夠,一方面受制於技術成熟度,另一方面受至於技術提供方與應用方的不重視。
  • 基於深度學習的人臉識別技術全解
    這一結果表明:大訓練數據集對於有效提升非受限環境下的人臉識別很重要。然而,以上所有這些經典方法,都難以處理大規模數據集的訓練場景。 2014年:2014 年前後,隨著大數據和深度學習的發展,神經網絡重受矚目,並在圖像分類、手寫體識別、語音識別等應用中獲得了遠超經典方法的結果。
  • 生物識別技術產業發展深度報告:指紋與人臉識別
    生物識別技術的主要研究對象包括語音、臉部、指紋、掌紋、虹膜、視網膜、體形、個人習慣(包括敲擊鍵盤的力度和頻率、籤字)等,與之相應的識別技術包括語音識別、人臉識別、指紋識別、掌紋識別、虹膜識別等。生物識別技術流程一般為,通過設備對信息進行採集,隨後進行預處理,然後將生物信息中的特徵進行提取,將其與檔案特徵進行比對,對比結束後得出識別結果。
  • 防止人臉識別技術被濫用
    近日,「人臉識別第一案」一審宣判,引起廣泛關注。浙江省杭州市富陽區人民法院公開開庭宣判原告郭某與被告杭州野生動物世界服務合同糾紛一案,判決野生動物世界賠償郭某合同利益損失及交通費共計1038元,刪除郭某辦理指紋年卡時提交的包括照片在內的面部特徵信息;駁回郭某提出的其他訴訟請求。
  • 人臉識別經典算法實現
    首先需要2個第三方的庫opencv-python、numpy安裝完成後,可以編程了,還是先說明一下需要的算法:特徵子臉技術的基本思想是:從統計的觀點,尋找人臉圖像分布的基本元素,即人臉圖像樣本集協方差矩陣的特徵向量,以此近似地表徵人臉圖像。這些特徵向量稱為特徵臉(Eigenface)。
  • 一文讀懂人臉識別技術
    人臉識別的理解人臉識別(Face Recognition)是一種依據人的面部特徵(如統計或幾何特徵等),自動進行身份識別的一種生物識別技術,又稱為面像識別、人像識別、相貌識別、面孔識別、面部識別等。通常我們所說的人臉識別是基於光學人臉圖像的身份識別與驗證的簡稱。
  • 招商銀行啟用人臉識別技術
    摘要 【招商銀行啟用人臉識別技術】從招商銀行獲悉,該行已在全國率先啟用人臉識別技術,輔助辦理開戶、風險評估等業務。目前,可在招行網點人臉識別輔助開卡,開卡速度大大提高。
  • 密西根州立大學教授劉小明講解:人臉識別的新技術 | 大牛講堂
    在計算機視覺領域,人臉識別一直以來都是學術界和工業界的雙重寵兒。學術上的熱門和工業市場的迫切需求,使得圍繞該方向的核心技術自深度學習爆發以來,得到了更為迅猛的發展。地平線《大牛講堂》邀請到美國密西根州立大學劉小明教授,他將結合自己近年來有關人臉識別的研究成果和發表在多篇世界頂級期刊(CVPR,TPAMI等)的論文,為大家帶來分享——2D/3D shape estimation and recognition for large-pose faces。
  • 長篇乾貨 | 深度解析人臉識別技術
    人臉識別是AI技術發展較快、應用較多的一個領域,目前國內人臉識別應用已相當廣泛,並積累了不少實戰經驗。 01 發展史 1. 人臉識別的理解 人臉識別(Face Recognition)是一種依據人的面部特徵(如統計或幾何特徵等),自動進行身份識別的一種生物識別技術,又稱為面像識別、人像識別、相貌識別、面孔識別、面部識別等。
  • 全新iphoneX面容ID人臉識別技術是什麼?
    蘋果今年的重頭戲十周年紀念版iPhoneX手機搭載Face ID (又稱面容ID技術)面部識別技術,可以用人臉直接解鎖屏幕。這無疑是蘋果的一項重大技術革新,那iPhoneX啟用的Face ID人臉識別技術到底厲害在哪?
  • 以貌取人 人機大戰裡的人臉識別技術
    人臉識別技術▲ 那麼什麼是人臉識別技術呢?    人臉識別技術,也叫做人像識別、面部識別技術,是基於人的臉部特徵信息進行身份識別的一種生物識別技術,用攝像機或攝像頭採集含有人臉的圖像或視頻,並自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行分析和識別。▲ 推動人臉識別技術的關鍵人物——馬雲    是什麼力量使人臉識別在短短兩三年的時間裡,就實現了如此巨大的變化、迅猛的發展呢?
  • 一文讀懂:深扒人臉識別60年技術發展史
    那麼人臉識別到底是一項怎樣的技術,這期《趣科技》,與非網小編就將帶大家走進人臉識別,聊聊這項黑科技。  人臉識別是啥玩意兒?  人臉識別技術,是基於人的臉部特徵信息進行身份識別的一種生物識別技術。用攝像機或攝像頭採集含有人臉的圖像或視頻流,並自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部的一系列相關技術,通常也叫做人像識別、面部識別。傳統的人臉識別技術主要是基於可見光圖像的人臉識別,這也是人們熟悉的識別方式。簡單的來說就是一個讓計算機認出你的過程。  人臉識別技術主要是通過人臉圖像特徵的提取與對比來進行的。
  • 前沿|人臉識別技術走到了「十字路口」
    文淵智庫研究員王超接受科普時報記者採訪時表示,諸如人臉識別、指紋識別、虹膜識別都是生物特徵識別,但人臉識別更容易被記錄和盜取。廣義的人臉識別實際包括構建人臉識別系統的一系列相關技術,包括人臉圖像採集、人臉定位、人臉識別預處理、身份確認以及身份查找等;而狹義的人臉識別特指通過人臉進行身份確認或者身份查找的技術或系統。
  • 人臉識別第一課:學習技術原理
    此外,手機中的智能相冊,可以根據照片中的人物進行自動歸類……由此,對人臉識別技術感興趣的人也越來越多。所以今天就來一起看看,人臉識別技術是如何實現的?人臉識別考勤通道在了解原理之前,先來認識一下什麼是人臉識別。
  • 硬核科普:一文看懂人臉識別技術流程
    「刷臉」,顧名思義,背後是一項關鍵技術:人臉識別。別看這兩年因為在智慧型手機上的使用而大熱,其實人臉識別技術最早的研究還要追溯到20世紀50年代,當時已經有科學家在研究人臉輪廓的提取方法,但受限於技術水平,這項技術的相關研究一度停滯,直到20世紀80年代,人臉識別的方法才有了新的突破,神經生理學、腦神經學、視覺等相關知識被引入,人臉識別進入了新的發展階段。