SeetaFace2.0:中科視拓開源跨平台C+商業人臉識別庫
機器之心報道
參與:一鳴
近年來,人臉識別演算法已日臻成熟,但受制於編程語言、模型架構、第三方依賴等問題,其運行速度、性能和跨平台能力一直受到影響。近日,來自中科院計算所的中科視拓團隊商業開源了一款名為 SeetaFace2.0 的人臉識別庫,完全使用 C 編寫,支持 Windows、Linux 和 ARM 平台,且不依賴第三方庫。人臉識別庫中開源的三個模塊都取得了很好的性能和很高的運算效率。
人臉識別一直有著廣泛的應用場景,優秀的演算法模型可以很好地提升人臉識別的速度、降低錯誤率、並能夠部署在各種設備中。近日,來自中科院計算所的中科視拓團隊宣布開源商用級 SeetaFace2 人臉識別演算法,採用 BSD 協議。
中科視拓的人臉識別技術來自於國家萬人計劃領軍人才山世光研究員和國家自然科學基金委傑出青年基金獲得者陳熙霖研究員共同領導的中科院計算所視覺信息處理與學習研究組。研究成果先後獲得過國家科技進步二等獎和國家自然科學二等獎。
開源地址:https://github.com/seetafaceengine/SeetaFace2
SeetaFace2
SeetaFace2 是一個完整的人臉識別項目,其中包括了人臉檢測模塊 FaceDetector、面部關鍵點定位模塊 FaceLandmarker 以及人臉特徵提取與比對模塊 FaceRecognizer。還將陸續開源人臉跟蹤、閉眼檢測等輔助模塊。
這一項目使用 C 完成,不依賴任何第三方庫,而且支持 x86 平台和 ARM 平台,具有良好的適配能力,可部署於各類平台上,由開發者進一步開發新的應用。
項目目錄
現已對開發者開源的項目內容和目錄如下:
SeetaFace2
craft(linux 和 windows 平台的編譯腳本)
documents(SDK 介面說明文檔)
example(C 版本 SDK 示例代碼)
FaceDetector(人臉檢測模塊)
FaceLandmarker(特徵點定位模塊)
FaceRecognizer(人臉特徵提取和比對模塊)
SeetaNet(前向計算框架模塊)
根據中科視拓提供的資料,現已開源的三個模塊性能都非常高。它們都使用了深度學習架構,在保證效果的前提下儘可能提升計算速度,以下分別為每個模塊使用的演算法、技術指標和平台運行速度信息。
人臉檢測
人臉檢測使用的模型是 Cascate CNN。如圖所示,該模型將人臉識別的圖像分為三個階段,每個階段進行一次識別,並通過級聯的方式將每一階段的圖像特徵和上一階段學習到的特徵級聯後進行 softmax。
Cascate CNN 的架構。分別使用了 12x12、24x24 和 48x48 的網路,對人臉圖像進行三階段的識別。
面部關鍵點定位
這一模塊使用的是 FEC-CNN。如圖所示,這也是將人臉圖像經過多個 CNN 網路處理,每經過一個網路便獲得一個表徵,並和上一階段的輸入相乘。在經過了 T 個網路後輸出最終的圖像關鍵點。
FEC-CNN 網路的架構。
人臉特徵提取和對比
這一模塊使用了 ResNet50 的模型架構。如圖所示,這一網路將多個殘差學習塊串聯在一起,利用模型的深度學習圖像的深層表徵。
ResNet50 的模型架構。
模型效果
從中科視拓提供的資料來看,現在開源的三個模塊都有著不錯的模型性能。
和 1.0 版本的 SeetaFace 相比,SeetaFace2 在模型性能方面有了很大的提升,同時運行速度沒有受到太大的影響。
編譯和使用
那麼,開發者怎樣可以使用這些模塊呢?官方在項目中提供了編譯為 SDK 的方式,方便開發者將其作為自有項目中的組件使用。現已支持的操作系統平台有 Windows、Linux 和安卓系統。
開發者也可以編譯運行example文件夾中的文件,嘗試體驗使用。example/search/example.cpp 示例展示了一套人臉識別的流程,包括:1. 預註冊圖像中的人臉到人臉識別底庫中(example 中默認註冊了"1.jpg"中的人臉);2. 打開攝像頭,檢測攝像頭畫面中的人臉;3. 對檢測到人臉進行識別,確定所屬人臉的身份。
測試者如果想在底庫中成功識別出自己的人臉,需要在 example.cpp 的底庫註冊列表部分添加以自己名稱命名的圖片 (名稱 .jpg),並把自己名稱命名的圖片文件拷貝到程序的運行目錄下,重新編譯 example 並運行程序,測試識別效果即可。
下載渠道
為了更好地讓開發者繼續開發工作,官方已提供下載模型的渠道:


※人工智慧時代如何高效發掘資料庫的價值?NL2SQL值得你關注
TAG:機器之心 |