SeetaFace開源人臉識別引擎介紹

2021-01-11 雷鋒網

雷鋒網按:本文作者VIPL_Face

區分不同的人是很多智能系統的必備能力。為實現此目的,一種可能的技術手段是通過對人臉的光學成像來感知人、識別人,即所謂的人臉識別技術。經過幾十年的研發積累,特別是近年來深度學習技術的湧現,人臉識別取得了長足的進步,在安防、金融、教育、社保等領域得到了越來越多的應用,成為計算機視覺領域最為成功的分支領域之一。

然而,人臉識別並非完全成熟的技術,離公眾期望的全面應用尚有距離,還需要學術界、工業界的共同努力。為此,整個人臉識別社區需要有基準(Baseline)系統,而且基準系統的水平顯然會極大影響著該領域的發展水平。可是令人尷尬的是,這個領域迄今尚無一套包括所有技術模塊的、完全開源的基準人臉識別系統!我們希望改變現狀,因此開源了SeetaFace人臉識別引擎。該引擎由中科院計算所山世光研究員帶領的人臉識別研究組研發。代碼基於C++實現,且不依賴於任何第三方的庫函數,開源協議為BSD-2,可供學術界和工業界免費使用。

SeetaFace人臉識別引擎包括了搭建一套全自動人臉識別系統所需的三個核心模塊,即:人臉檢測模塊(SeetaFace Detection)、面部特徵點定位模塊(SeetaFace Alignment)以及人臉特徵提取與比對模塊 (SeetaFace Identification)。

人臉檢測模塊SeetaFace Detection採用了一種結合傳統人造特徵與多層感知機(MLP)的級聯結構,在FDDB上達到了84.4%的召回率(100個誤檢時),並可在單個i7 CPU上實時處理VGA解析度的圖像。面部特徵點定位模塊SeetaFace Alignment通過級聯多個深度模型(棧式自編碼網絡)來回歸5個關鍵特徵點(兩眼中心、鼻尖和兩個嘴角)的位置,在AFLW資料庫上達到state-of-the-art的精度,定位速度在單個i7 CPU上超過200fps。人臉識別模塊SeetaFace Identification採用一個9層的卷積神經網絡(CNN)來提取人臉特徵,在LFW資料庫上達到97.1%的精度(註:採用SeetaFace人臉檢測和SeetaFace面部特徵點定位作為前端進行全自動識別的情況下),特徵提取速度為每圖120ms(在單個i7 CPU上)。

下面對上述三個模塊的情況做簡要介紹,更詳細的介紹請參考我們相應的學術論文。

人臉檢測模塊SeetaFace Detection

該模塊基於我們提出的一種結合經典級聯結構和多層神經網絡的人臉檢測方法實現,其所採用的漏鬥型級聯結構(Funnel-Structured Cascade,FuSt)專門針對多姿態人臉檢測而設計,其中引入了由粗到精的設計理念,兼顧了速度和精度的平衡。

如圖1所示,FuSt級聯結構在頂部由多個針對不同姿態的快速LAB級聯分類器構成,緊接著是若干個基於SURF特徵的多層感知機(MLP)級聯結構,最後由一個統一的MLP級聯結構(同樣基於SURF特徵)來處理所有姿態的候選窗口,整體上呈現出上寬下窄的漏鬥形狀。從上往下,各個層次上的分類器及其所採用的特徵逐步變得複雜,從而可以保留人臉窗口並排除越來越難與人臉區分的非人臉候選窗口。

圖1. SeetaFace人臉檢測模塊所採用的FuSt漏鬥型級聯結構

與SeetaFace Detection開原始碼配套開放的是一個準正面人臉檢測模型(使用了約20萬人臉圖像訓練而來),可以實現準正面人臉的準確檢測(旋轉角度約45度以內,但對於姿態偏轉較大的人臉也具備一定的檢測能力)。圖2給出了一些檢測結果的示例(註:測試時圖像金字塔下採樣比例設置為0.8,滑動步長設置為4和2,最小人臉設置為20x20)。在人臉檢測領域最重要的評測集FDDB上對SeetaFace Detector進行評測,在輸出100個誤檢時(FPPI=0.035)召回率達到84.4%,輸出1000個誤檢時召回率達到88.0%。

圖2. SeetaFace Detection人臉檢測結果的示例

圖3則給出了SeetaFace Detector在FDDB上的離散型得分ROC曲線,並與其它已發表的學術界公開結果(從FDDB官網獲得)進行了對比。不難看出,儘管SeetaFace人臉檢測器並非目前精度最高的,但在學術界公開的結果中仍然具有很強的競爭力,而且可以完全滿足多數人臉識別系統的需求。

圖3. SeetaFace Detector在FDDB上的ROC曲線

此外,與其他算法相比,SeetaFace Detector在速度上有一定優勢。對於640x480大小的VGA圖像,檢測速度的對比情況如表1所示。其中,SeetaFace的速度在單個3.40GHz的i7-3770 CPU上測得,Cascade CNN在CPU上的速度在2.0GHz的CPU上測得(引自原文)。而各方法在GPU上的速度在NVIDIA Titan Black GPU上測得。

特徵點定位模塊SeetaFace Alignment

面部特徵點定位(人臉對齊)在人臉識別、表情識別、人臉動畫合成等諸多人臉分析任務中扮演著非常重要的角色。由於姿態、表情、光照和遮擋等因素的影響,真實場景下的人臉對齊任務是一個非常困難的問題。形式上,該問題可以看作是從人臉表觀到人臉形狀的複雜非線性映射。為此,SeetaFace Alignment採用的是我們提出的一種由粗到精的自編碼器網絡(Coarse-to-Fine Auto-encoder Networks, CFAN)來求解這個複雜的非線性映射過程。

如圖 4所示,CFAN級聯了多級棧式自編碼器網絡,其中的每一級都刻畫從人臉表觀到人臉形狀的部分非線性映射。具體來說,輸入一個人臉區域(由人臉檢測模塊得到),第一級自編碼器網絡直接從該人臉的低解析度版本中快速估計大致的人臉形狀S0。然後,提高輸入人臉圖像的解析度,並抽取當前人臉形狀S0(相應提升解析度)各特徵點位置的局部特徵,輸入到下一級自編碼器網絡來進一步優化人臉對齊結果。以此類推,通過級聯多個棧式自編碼器網絡,在越來越高解析度的人臉圖像上逐步優化人臉對齊結果。

圖4. 基於由粗到精自編碼器網絡(CFAN)的實時人臉對齊方法

此次開源的SeetaFace Alignment基於上述CFAN方法實現了5個面部關鍵特徵點(兩眼中心,鼻尖和兩個嘴角)的精確定位,訓練集包括23,000餘幅人臉圖像(標註了5點)。需要注意的是,為加速之目的,在基本不損失精度的情況下,開源實現中將CFAN級聯的數目減少到了2級,從而可在單顆Intel i7-3770 (3.4 GHz CPU)上達到每個人臉5ms的處理速度(不包括人臉檢測時間)。

圖5給出了一些用SeetaFace Alignment開源引擎定位面部5點的效果示例,可見其對表情、姿態、膚色等均具有較好的魯棒性。在AFLW數據集上的量化評價和對比情況如圖6所示,其中平均定位誤差根據兩眼中心距離做了歸一化。不難看出,SeetaFace Alignment取得了state-of-the-art的定位結果。

圖5. SeetaFace Alignment定位結果示例

圖6. SeetaFace Alignment在AFLW數據集上的定位誤差及對比情況其中LE:左眼,RE:右眼,N:鼻尖,LM:左嘴角,RM:右嘴角

人臉特徵提取與比對模塊SeetaFace Identification

人臉識別本質上是要計算兩幅圖像中人臉的相似程度,其一為註冊階段(類比人的相識過程)輸入系統的,另一幅為識別階段(即再見時的辨認過程)的輸入。為此,如圖7所示,一套全自動的人臉識別系統在完成前述的人臉檢測與人臉對齊兩個步驟之後,即進入第三個核心步驟:人臉特徵提取和比對。這個階段也是深度學習風起雲湧之後進步最大的模塊,目前大多數優秀的人臉識別算法均採用卷積神經網絡(CNN)來學習特徵提取器(即圖7中的函數F)。

圖7.人臉識別系統的核心流程

SeetaFace開源的人臉特徵提取模塊也是基於卷積神經網絡的。具體地說,其實現的是深度卷積神經網絡VIPLFaceNet:一個包含7個卷積層與2個全連接層的DCNN。其直接修改自Hinton教授的學生Alex Krizhevsky等於2012年設計的AlexNet(即引爆CNN在視覺中廣泛應用的網絡)。

如表2對比所示,與AlexNet相比,VIPLFaceNet將5x5的卷積核拆分為兩層3x3的卷積核,從而增加了網絡深度,而並沒有增加計算量;VIPLFaceNet還減少了每個卷積層的kernel數目以及FC2層的節點數。同時,通過引入Fast Normalization Layer(FNL),加速了VIPLFaceNet的收斂速度,並在一定程度上提升了模型的泛化能力。測試表明,在相同訓練集情況下,VIPLFaceNet在LFW測試集上識別錯誤率比AlexNet降低了40%,而訓練和測試時間分別為AlexNet的20%和60%。

與開源的SeetaFace Identification代碼一起發布的人臉識別模型是使用140萬人臉圖像訓練出來的,這些訓練圖像來自於約1.6萬人,其中既有東方人也有西方人。人臉特徵直接採用VIPLFaceNet FC2層的2048個結點的輸出,特徵比對可簡單採用Cosine計算相似度,然後進行閾值比較(驗證應用)或排序(識別應用)即可。

該引擎在多數人臉識別場景下均具有良好的性能,例如,在LFW standard Image-Restricted測試協議下,使用SeetaFace Detector與SeetaFace Alignment檢測並對齊人臉,採用SeetaFace Identification進行特徵提取和比對,可以達到97.1%的識別正確率(請注意:這是系統全自動運行的結果,對少量不能檢到人臉的圖像,截取中間區域輸入人臉對齊模塊即可)。速度方面,在單顆Intel i7-3770 CPU上,開原始碼提取一張人臉之特徵的時間約為120ms(不含人臉檢測和特徵點定位時間)。

開源網址

目前,SeetaFace開源人臉識別引擎已全部發布在Github上供國內外同行和工業界使用,項目網址為:https://github.com/seetaface/SeetaFaceEngine

雷鋒網註:本文由深度學習大講堂授權雷鋒網發布,如需轉載請註明作者和出處,不得刪減內容。

相關焦點

  • 什麼是 SeetaFace 開源人臉識別引擎
    為此,整個人臉識別社區需要有基準(Baseline)系統,而且基準系統的水平顯然會極大影響著該領域的發展水平。可是令人尷尬的是,這個領域迄今尚無一套包括所有技術模塊的、完全開源的基準人臉識別系統!我們希望改變現狀,因此開源了SeetaFace人臉識別引擎。該引擎由中科院計算所山世光研究員帶領的人臉識別研究組研發。
  • 開源人臉識別seetaface入門教程(一)
    然而,目前開源的代碼,是在windows vs上編譯的,對於我們這幫mac/linux用戶來說,用起來還是挺麻煩的。經過這幾天的學習,對seetaface總算有了全面的了解。下面,聽我娓娓道來。 注意:本文章不涉及代碼邏輯和原理,只是教大家如何使用seetaface做人臉識別。
  • 如何判斷人臉識別是否準確?SeetaFace助你一臂之力
    然而,人臉識別並非是完全成熟的技術,離公眾期望的全面應用尚有距離,仍然需要學術界、工業界的共同努力。為此,整個人臉識別社區需要有基準(Baseline)系統,而且基準系統的水平顯然會極大影響著該領域的發展水平。可是令人尷尬的是,這個領域迄今尚無一套包括所有技術模塊的、完全開源的基準人臉識別系統。
  • 如何判斷人臉識別是否準確?SeetaFace助你一臂之力|AI科技評論
    然而,人臉識別並非是完全成熟的技術,離公眾期望的全面應用尚有距離,仍然需要學術界、工業界的共同努力。為此,整個人臉識別社區需要有基準(Baseline)系統,而且基準系統的水平顯然會極大影響著該領域的發展水平。可是令人尷尬的是,這個領域迄今尚無一套包括所有技術模塊的、完全開源的基準人臉識別系統。
  • 重磅|中科視拓開源SeetaFace2人臉識別算法
    今天,來自中科院計算所的人工智慧國家隊中科視拓宣布,開源商用級SeetaFace2人臉識別算法。SeetaFace2採用商業友好的BSD協議,這是在2016年9月開源SeetaFace1.0人臉識別引擎之後,中科視拓在人臉識別領域的又一次自我革命。
  • 百度開源業內首個口罩人臉檢測及分類模型
    2月13日,百度宣布免費開源業內首個口罩人臉檢測及分類模型。該模型可以有效檢測在密集人流區域中攜帶和未攜戴口罩的所有人臉,同時判斷該者是否佩戴口罩。目前已通過飛槳PaddleHub開源出來,廣大開發者用幾行代碼即可快速上手,免費調用。
  • Android 人臉識別之人臉註冊
    該項目基於訊飛SDK實現的人臉檢測,使用face++的webapi實現的人臉註冊以及人臉識別。這些示例都有一個缺點,就是不支持動態識別(可以通過一些巧妙的方法,使用戶無法感知這一過程),無論訊飛的SDK還是face++的webapi都是通過拍攝上傳一張圖片來進行人臉識別,其中訊飛的SDK使用起來很麻煩,官方的接入文檔語焉不詳,但是用來做人臉檢測還是不錯的。
  • 阿里正式開源輕量級深度學習端側推理引擎「MNN」
    阿里近日正式開源了輕量級深度學習端側推理引擎「MNN」。與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,在大規模機器學習應用中具有優勢。本文詳細闡述了MNN背後的技術框架和規劃。 近日,阿里正式開源輕量級深度學習端側推理引擎「MNN」。
  • 【人臉表情識別】基於圖片的人臉表情識別,基本概念和數據集
    作者&編輯 | Menpinland在較早之前,有三AI已經有一篇《人臉表情識別研究》的文章,裡面已經對早期的人臉表情相關的內容做了一個較為詳細的綜述。但最近幾年,由於深度學習技術的發展,以及越來越多大規模人臉表情識別數據集的開源,人臉表情識別的相關研究也發生了比較多的變化。
  • 【乾貨】通過OpenFace來理解人臉識別
    【導讀】本文是Stephanie Kim的一篇博文你,作者探討的是一個老生常談的話題「人臉識別」,介紹針對人臉識別任務的一個特定的開源庫——OpenFace
  • 一個照片「隱身衣」,讓微軟曠視人臉識別系統100%失靈|開源
    用 x 指代原始圖片,xT為另一種類型/其他人臉照片,φ 則為人臉識別模型的特徵提取器。實驗結果表明,無論人臉識別模型被訓練得多麼刁鑽,Fawkes都能提供95%以上有效防護率,保證用戶的臉不被識別。即使有一些不小心洩露的未遮擋照片被加入人臉識別模型的訓練集,通過進一步的擴展設計,Fawkes也可以提供80%以上的防識別成功率。
  • 中科視拓開源SeetaFace2人臉識別算法
    集微網消息(文/春夏)近日,中科視拓(北京)科技有限公司(以下簡稱「中科視拓」)宣布,開源商用級SeetaFace2人臉識別算法。SeetaFace2支持的上層應用包括但不限於人臉門禁、無感考勤、人臉比對等。與2016年開源的SeetaFace1.0相比,SeetaFace2在速度和精度兩個層面上均有數量級的提升。
  • NEC人臉識別套裝產品「NeoFace Access Control」於日本開售
    ,即可輕鬆使用人臉識別解鎖開門。該產品是套裝產品,在專用硬體內優化並組裝了精準度世界排名第一(注1)的NEC人臉識別AI引擎「NeoFace」(注2)、以及人臉識別攝像頭、CPU主板等。一臺設備約可登記5000人份的數據,由於設備本身就存有資料庫,即使沒有另外設置伺服器,僅安裝本產品也能進行人臉識別。
  • 乾貨 | 人臉識別的簡要介紹(附實例、Python代碼)
    本文將介紹人臉識別的基本思路和對代碼進行簡要分析。介紹你是否意識到,每當你上傳照片到Facebook上,平臺都會用人臉識別算法來識別圖片中的人物?目前還有一些政府在用人臉識別技術來識別和抓捕罪犯。此外,最常見的應用就是通過自己的臉部解鎖手機。
  • 人臉識別哪家強?看看國內30家TOP企業!
    已開發出面向企業的多個在線,API、離線SDK的核心產品線,包括人臉檢測、人臉特徵點定位 ,人臉識別,名人識別,人臉屬性識別和目標/場景識別、色情圖片識別等。根據不同業務場景下的人臉識別需求,為廣大企業級用戶和合作夥伴提供業界領先的視覺身份認證技術和整體解決方案。致力於打造新一代的計算機視覺理解和人工智慧引擎,讓計算機以及其他智能硬體能看懂我們這個世界。
  • 人臉識別碰壁,百度如何「破圈」?
    那麼,當人臉識別不再能識別到你的臉,它還會認識你嗎?復工後,人臉識別碰壁了近年來,隨著人臉識別技術成熟度不斷提高,相關產品在國內諸如酒店登記、車站人群篩查、公司考勤等場景應用已經十分廣泛。以公司考勤為例,據2018年相關產業調研數據顯示,人臉識別考勤機出貨量已突破百萬。
  • 怎樣用3分鐘搭建 Python 人臉識別系統
    Face Recognition 使用的是 C++ 開源庫 dlib 通過深度學習模型構建的先進人臉識別系統,可通過 Python 接口或命令行工具對圖片中的人臉進行識別。
  • ECCV 2020 | 人臉識別的可解釋性
    自然深度學習中的很重要領域人臉識別的可解釋性也是一個很大的挑戰,當前在這方面探索的方法有網絡注意力、網絡解剖或綜合語言解釋,然而,缺乏網絡比較和量化可解釋結果的真相,尤其是在人臉識別中近親或近親之間的差異很微妙,解釋並不明顯。
  • 人臉識別哪家強?科大訊飛發布最新人臉識別技術
    ,一直是公認的模式識別難題,在過去幾十年間,世界頂尖科研機構一直在為人臉識別而努力,但是沒有任何一個計算機算法能夠超越肉眼在LFW上的識別率97.52% ,直到香港中文大學湯曉鷗教授團隊開發出了一個基於高斯過程的人臉識別技術—GaussianFace,「高斯臉的識別率為98.52%,這是機器首超人類」 ,「幾個月前我們的DeepID人臉識別技術在LFW上獲得了99.15%的識別率,又超極限;2014
  • AI大廠算法測試心得:人臉識別關鍵指標有哪些?
    由調查機構發布的《中國AI產業地圖研究》中也有一組有趣的數據,目前中國的AI企業中,有近8成集中在應用層,其中AI行業解決方案佔比高達40.7%,從上下班的人臉識別考勤,到金融App的人臉身份核驗,再到醫院和政務大廳的人臉識別取號,以及車站的人臉核驗檢票……  目前市面上既有OpenCV等開源算法庫,很多晶片廠商的產品也自帶簡單算法,同時專業算法大廠也會開放相關技術,