什麼是SeetaFace開源人臉識別引擎?

2021-01-08 雷鋒網

雷鋒網按:本文作者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入門教程(一)
    然而,目前開源的代碼,是在windows vs上編譯的,對於我們這幫mac/linux用戶來說,用起來還是挺麻煩的。經過這幾天的學習,對seetaface總算有了全面的了解。下面,聽我娓娓道來。 注意:本文章不涉及代碼邏輯和原理,只是教大家如何使用seetaface做人臉識別。
  • 人臉識別算法SeetaFace6 入門教程
    教程基於SeetaFace進行講解,同時也會給出一些通用的算法使用的結論和建議,對一些關鍵的可能產生問題的部分進行提醒,為使用SeetaFace或者其他人臉識別產品的開發者提供幫助。入門教程以SeetaFace6主要模塊為中心展開,完整解析人臉檢測和關鍵點定位、人臉特徵提取和對比、活體檢測、人臉跟蹤、質量評估、人臉屬性檢測、戴口罩人臉識別、眼睛狀態檢測等八大模塊。
  • SeetaFace 6:中科視拓開放商業版本人臉識別算法
    快訊 | 詳情 SeetaFace 6:中科視拓開放商業版本人臉識別算法 3月31日,中科視拓宣布開放SeetaFace6人臉識別算法。
  • 中科視拓宣布開源SeetaFace6人臉識別算法(附相關課程)
    2016年9月和2019年8月,中科視拓分別開源了SeetaFace1.0人臉識別引擎、SeetaFace2.0商用級人臉識別算法。SeetaFace6是最新開放的正式級商業版本,突破了之前社區版和企業版錯開發布的情況,此次v6版本與商用版本同步推出。
  • CSI的開源SeetaFace2人臉識別算法
    今天,來自中科院計算所的人工智慧國家隊中科視拓宣布,開源商用級SeetaFace2人臉識別算法。SeetaFace2採用商業友好的BSD協議,這是在2016年9月開源SeetaFace1.0人臉識別引擎之後,中科視拓在人臉識別領域的又一次自我革命。
  • 媒體開發者齊點讚:中科視拓免費開放人臉識別算法SeetaFace6
    3月31日,中科視拓宣布免費開放商業正式版本SeetaFace6人臉識別算法。劃重點:1、SeetaFace6採用BSD協議,可以商業使用。2、SeetaFace6基於商業版最新的推理引擎TenniS,社區版與商業版完全打通。3、開放了MobileNet小模型和口罩檢測識別模型。
  • 開原始碼準確率99%+,人臉識別問題是否被解決了呢?
    人臉識別作為當下人工智慧落地最廣泛的技術之一,已經被廣泛應用於金融、安防反恐、教育、社交娛樂、門禁/考勤、交通、智能商業等眾多行業。早在2018年,我國的人臉識別市場規模就已經高達151.7億元(數據來源:億歐智庫),預計2021年將達到530億元,年複合增長率高達53%!
  • 14個開源免費的人工智慧項目,人臉識別依舊很受歡迎
    開源社區非常龐大,對新工具和擁抱使機器學習開放化的概念有著令人難以置信的支持態度。你必須已經了解流行的開源工具,例如R,Python,JupyterNotebook等。但是,除了這些受歡迎的工具之外,還有一個廣闊的世界–存在著雷達式機器學習工具的地方。這些功能不如其他功能出色,但可以節省許多機器學習任務。在本文中,我們推薦了14種用於機器學習的開源工具。
  • 開源推薦 | 可實現門禁、AI測溫敏捷開發的人臉識別應用套件
    隨著人臉識別技術的不斷發展,尤其是在部分算法平臺對外開放算法之後,人臉識別的應用門檻得到了極大降低。但是從算法到一款真正可落地的人臉識別產品,在完整的應用開發中,不僅需要考慮底層算法的運行邏輯,也需要上層業務邏輯完整自洽。而這個從0到1的過程,往往會讓大部分中下企業及開發者,在項目商用化落地過程中無從下手。
  • 如何識別戴口罩的人臉;AWS 推出基於 Linux 的開源作業系統;
    (給技術最前線加星標,每天看技術熱點)綜合整理:技術最前線(ID:TopITNews)參考:程式設計師的那些事、開源中國、solidot、cnBeta、騰訊科技等0、AWS 推出基於 Linux 的開源作業系統,用於容器託管AWS 在其博客中介紹了該團隊最新的開源項目 Bottlerocket
  • 1.2萬億電晶體專為AI設計;中科院開源SeetaFace2人臉識別算法
    中科院計算所開源SeetaFace2人臉識別算法】來源:中科視拓中科院計算所開源SeetaFace2人臉識別算近日,來自中科院計算所的人工智慧國家隊中科視拓宣布,開源商用級SeetaFace2人臉識別算法,而且還開源了SeetaFace2包含了完整的人臉檢測、面部關鍵點定位和人臉特徵提取與比對模塊
  • 人臉識別漏洞頻出?這裡有個開源靜默活體檢測算法
    如今,人臉識別已經進入我們生活中的方方面面:拿起手機掃臉付帳、完成考勤、入住酒店等,極大地便利了我們的生活。我們在享受技術帶來方便的同時,也要應對其潛在的風險。一旦虛假人臉攻擊成功,極有可能對用戶造成重大損失。
  • 通過使用5個開源的人臉識別項目來增加你的計算機視覺項目經歷
    在今天的文章中,我們將討論五個開源人臉識別項目,以提高你在數據科學領域的技能。注意:本文只是簡單介紹一些不那麼著名但非常好的開源項目,你可以在你的項目中使用這些項目。要閱讀有關它們的更多信息,我建議遵循項目中提供的連結。
  • 什麼是人臉識別?
    通過最先進、最可靠的生物識別技術,實現了一個永遠不會忘記密碼。在過去的十年中,人臉識別技術不僅成為現實,而且已經普及。人臉識別技術以及AI(人工智慧)和深度學習(DL)技術正在使多個行業受益。人臉識別概念人臉識別屬於計算機視覺研究和開發的領域,致力於使機器具有識別和驗證人臉的能力。
  • 什麼是人臉識別認證?
    到目前為止,密碼認證和指紋認證是市面上常見的解鎖認證方式,得益於科技的進步,使用臉部作為密鑰進行身份確認的「人臉識別認證舉一個熟悉的例子是通過刷臉來解鎖智慧型手機,但如今,人臉識別認證不僅僅應用在設備解鎖上,在機場返鄉檢查、疫情防控、金融機構進行資金交易、公共場所進行身份驗證也處處都有它活躍的身影,憑藉著自身優越的新特性,發揮著其不可替代的作用。那什麼是人臉識別認證?
  • 王者榮耀人臉識別提示無相關判決書 無需人臉識別是什麼意思
    :原標題:王者榮耀人臉識別提示無相關判決書 無需人臉識別是什麼意思 王者榮耀人臉識別認證功能已經啟用,主要針對疑似未成的成年帳號強制人臉識別的,不過由於功能還在完善中,所以在人臉識別時會出現錯誤代碼或則一些比較複雜的情況,估計多數玩家看到提示無相關判決
  • 人臉識別系統中的人臉配準是什麼概念?
    在人臉識別系統中人臉配準是十分重要的一步,那麼,人臉識別系統中的人臉配準是什麼概念?暢熒智能(www.changyingai.com)將通過本文和您一起來了解人臉配準感的概念,希望能對您有所幫助。「人臉配準」是一項圖像預處理技術,能夠定位出人臉五官關鍵點坐標。人臉配準算法的輸入信息為「人臉圖片」和「人臉坐標框」,輸出的信息為五官的關鍵點坐標序列。五官的關鍵點數量為預先設定的固定值,我們可根據不同的語義情形來定義(通常有5點、68點、90點等固定值)。
  • 基於OpenCV的人臉識別設計方案
    導讀: 本文提出了一種在Linux平臺下開發臉識別系統的方案,通過QT 來開發用戶界面,調用OpenCV圖像處理庫對相機進行採集和處理採集圖像,從而實現了人臉檢測、身份識別、簡單表情識別的功能。
  • Python開源人臉識別庫,識別率達99.38%!
    本文的模型使用了C++工具箱dlib基於深度學習的最新人臉識別方法,基於戶外臉部數據測試庫Labeled Faces in the Wild 的基準水平來說,達到了99.38%的準確率。使用方法命令行界面當你安裝face_recognition,你能得到一個簡潔的叫做face_recognition的命令行程序,它能幫你識別一張照片或是一個照片文件夾中的所有人臉。
  • Uber在國內上線司機人臉識別功能
    用 Uber 打車的時候你最擔心什麼問題?除了打不到車之外,最重要的恐怕是安全。在分享經濟的整個環節裡,Uber 認為司機可能是最不可控的因素。從今天開始,Uber 中國上線的司機的人臉識別登陸功能。中國區負責安全的產品經理楊毓傑告訴了我們一些關於安全策略和技術細節。