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

2020-12-27 開源中國

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

然而,人臉識別並非完全成熟的技術,離公眾期望的全面應用尚有距離,還需要學術界、工業界的共同努力。為此,整個人臉識別社區需要有基準(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

稿源:雷鋒網  

作者:VIPL_Face

相關焦點

  • 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開源出來,廣大開發者用幾行代碼即可快速上手,免費調用。
  • 阿里正式開源輕量級深度學習端側推理引擎「MNN」
    阿里近日正式開源了輕量級深度學習端側推理引擎「MNN」。與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,在大規模機器學習應用中具有優勢。本文詳細闡述了MNN背後的技術框架和規劃。 近日,阿里正式開源輕量級深度學習端側推理引擎「MNN」。
  • Android 人臉識別之人臉註冊
    作者:junerver連結:https://www.jianshu.com/p/ca3a12bc4911引言人臉識別這件事想來早已經不新鮮,在 Android 中的應用也並不廣泛,所以網上相關資料乏善可陳。但是在面對特殊的應用場景時,人臉識別的功能還是有一定的用處的,比如在考勤領域。
  • 【人臉表情識別】基於圖片的人臉表情識別,基本概念和數據集
    作者&編輯 | Menpinland在較早之前,有三AI已經有一篇《人臉表情識別研究》的文章,裡面已經對早期的人臉表情相關的內容做了一個較為詳細的綜述。但最近幾年,由於深度學習技術的發展,以及越來越多大規模人臉表情識別數據集的開源,人臉表情識別的相關研究也發生了比較多的變化。
  • 中科視拓開源SeetaFace2人臉識別算法
    集微網消息(文/春夏)近日,中科視拓(北京)科技有限公司(以下簡稱「中科視拓」)宣布,開源商用級SeetaFace2人臉識別算法。SeetaFace2支持的上層應用包括但不限於人臉門禁、無感考勤、人臉比對等。與2016年開源的SeetaFace1.0相比,SeetaFace2在速度和精度兩個層面上均有數量級的提升。
  • 人臉識別哪家強?看看國內30家TOP企業!
    根據不同業務場景下的人臉識別需求,為廣大企業級用戶和合作夥伴提供業界領先的視覺身份認證技術和整體解決方案。致力於打造新一代的計算機視覺理解和人工智慧引擎,讓計算機以及其他智能硬體能看懂我們這個世界。公司以「重塑金融世界的奇點」為企業願景,以深度學習為技術引擎,結合計算機視覺和大數據分析,致力於通過原創的圖像識別算法與大數據處理技術為傳統銀行、網際網路金融、保險、證券等金融機構提供實名身份驗證、文字信息識別、基礎數據查詢、用戶畫像、反欺詐等自動化解決方案,幫助金融客戶打造更安全、更高效、更智能的服務體驗。
  • 99.7%高識別準確度!AI人臉識別運算智能系統Ei-A100
    人臉識別技術更廣泛應用於零接觸的應用領域,如何選擇適合的人臉識別系統?推薦使用研華Ei-A100 AI人臉辨識運算智能系統,99.7%高辨識準確度。(Ei-A100深度測評文章點此回顧)人臉識別系統在現實生活中的應用愈加廣泛,如公共運輸的出入管理、辦公室或工廠人員的門禁管理、出缺勤管理;此外,許多百貨零售商店也將此技術應用於增加消費者體驗, 並結合多媒體廣告推播。人臉識別是什麼?
  • 【深度】人臉識別泛濫,誰有權拿走你的人臉數據?
    與此同時,一些受訪者最為關注的問題——比如人臉原始信息是否會被收集方保留以及會被如何處理,數據收集方採取何種技術和管理措施來保證收集的人臉信息安全,以及人臉信息目前被應用在什麼場景,是否變更了使用目的——在絕大多數時候都是不透明的,目前尚無相關的法律法規進行規範。與其他個人信息不同,人臉信息屬於生物識別信息,具備唯一性。「它不像密碼,一旦洩露無法修復。
  • 【乾貨】通過OpenFace來理解人臉識別
    【導讀】本文是Stephanie Kim的一篇博文你,作者探討的是一個老生常談的話題「人臉識別」,介紹針對人臉識別任務的一個特定的開源庫——OpenFace
  • 人臉識別碰壁,百度如何「破圈」?
    那麼,當人臉識別不再能識別到你的臉,它還會認識你嗎?復工後,人臉識別碰壁了近年來,隨著人臉識別技術成熟度不斷提高,相關產品在國內諸如酒店登記、車站人群篩查、公司考勤等場景應用已經十分廣泛。以公司考勤為例,據2018年相關產業調研數據顯示,人臉識別考勤機出貨量已突破百萬。
  • 怎樣用3分鐘搭建 Python 人臉識別系統
    Face Recognition 使用的是 C++ 開源庫 dlib 通過深度學習模型構建的先進人臉識別系統,可通過 Python 接口或命令行工具對圖片中的人臉進行識別。
  • NEC人臉識別套裝產品「NeoFace Access Control」於日本開售
    ,即可輕鬆使用人臉識別解鎖開門。該產品是套裝產品,在專用硬體內優化並組裝了精準度世界排名第一(注1)的NEC人臉識別AI引擎「NeoFace」(注2)、以及人臉識別攝像頭、CPU主板等。一臺設備約可登記5000人份的數據,由於設備本身就存有資料庫,即使沒有另外設置伺服器,僅安裝本產品也能進行人臉識別。
  • 一個照片「隱身衣」,讓微軟曠視人臉識別系統100%失靈|開源
    如此一來,即使你在網絡上的照片被非法抓取,用這些數據訓練出來的人臉模型,也無法真正成功識別你的臉。給照片穿上「隱身衣」這項研究的目的,是幫助網友們在分享自己的照片的同時,還能有效保護自己的隱私。用 x 指代原始圖片,xT為另一種類型/其他人臉照片,φ 則為人臉識別模型的特徵提取器。
  • 獨家 | 手把手教你運用深度學習構建視頻人臉識別模型(Python實現)
    本文將展示如何使用開源工具完成一個人臉識別的算法。 引言「計算機視覺和機器學習已經開始騰飛,但是大多數人並不清楚計算機在識別一張圖片的時候,它到底看到了什麼。」——麥克.克裡奇 計算機視覺這個精彩領域在最近幾年突飛猛進,目前已經具備了一定的規模。
  • Python 人臉識別就多簡單,看這個就夠了!
    今天給大家介紹一個世界上最簡潔的人臉識別庫 face_recognition,你可以使用 Python 和命令行工具進行提取、識別、操作人臉。基於業內領先的 C++ 開源庫 dlib 中的深度學習模型,用 Labeled Faces in the Wild 人臉數據集進行測試,有高達99.38%的準確率。