帶你玩轉OpenHarmony AI:基於Seetaface2的人臉識別
簡介
隨著時代的進步,全民刷臉已經成為一種新型的生活方式,這也是全球科技進步的又一階梯,人臉識別技術已經成為一種大趨勢,無論在智慧出行、智慧家居、智慧辦公等場景均有較廣泛的應用場景,本文介紹了基於SeetaFace2人臉識別引擎在OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)上實現人臉識別的AI能力。
什麼是SeetaFace2
SeetaFace2是由中科視拓(北京)科技有限公司開發並使用BSD開源協議開源出來的一款人臉識別引擎庫,其搭建了一套全自動人臉識別系統所需的三個核心模組,即:人臉檢測模組FaceDetector、面部關鍵點定位模組 FaceLandmarker 以及人臉特徵提取與比對模組FaceRecognizer。除了三個核心模組外,它還提供了兩個輔助模組FaceTracker和QualityAssessor用於人臉跟蹤和質量評估。下圖是SeetaFace2人臉識別演算法元件:
SeetaFace2能做什麼
SeetaFace2採用標準C++開發,全部模組均不依賴任何第三方庫,支援x86架構(Windows、Linux)和ARM架構,可以輕鬆地移植到OpenHarmony上。SeetaFace2支援的上層應用包括但不限於人臉門禁、無感考勤、人臉比對等。如下圖展示了SeetaFace2支援的應用矩陣:
SeetaFace2人臉識別原理
SeetaFace2人臉識別引擎搭建了一套全自動人臉識別系統所需的三個核心模組:
1. 人臉檢測(FaceDetector)
在影像中首先定位出人臉的位置,然後裁剪(crop)出包含人臉位置的矩形框,一般還會進行填充、縮放到指定尺寸,還可能會對人臉影像進行標準化normalize;
2. 面部關鍵點定位(FaceLandmarker)
提取人臉關鍵點座標,然後使用放射變化或相似變換等進行人臉對齊變換。面部關鍵點定位的目標就是把所有的人臉圖片統一到一個固定的正臉姿態大小,從而提高模型對人臉姿態變化的魯棒性。
3. 人臉特徵提取與比對模組(FaceRecognizer)
主要使用深度學習等方法提取人臉的特徵,然後透過特徵對比,計算人臉的相似度。
SeetaFace2人臉識別的具體過程如下圖所示:
兩步帶你實現人臉識別
關於SeetaFace2的如何移植到OpenHarmony移植請參照文件:SeetaFace2移植開發文件(請參考文章末尾相關文件連結),這裡我們主要分析透過SeetaFace2如何實現人臉識別。
從上面人臉識別的流程圖可以知道人臉識別主要包含2個大塊:人臉註冊和人臉識別。
1. 人臉註冊
人臉註冊首先需要對傳入的圖片進行人臉檢測,當檢測到人臉後會提取對應的人臉資訊,並將資訊儲存用於對比。
人臉資訊檢測實現:
其中FD是三大模組中的人臉檢測模組(FaceDetector),其載入了人臉檢測模型:
而返回SeetaFaceInfo資料則是檢測到的人臉資訊,其中包含了人臉個數,人臉區域座標以及人臉置信度得分資料。然後透過人臉資訊檢測返回的資料進行面部關鍵點定位。
面部關鍵點定位實現:
其中的PD是三大模組中的關鍵點定位模組(FaceLandmarker),關鍵點定位需要根據面部特徵模型進行對比分析的,SeetaFace2提供2種面部特徵模型。分別是透過5點定位和透過81點定位,此例項中我們使用的是81點定位模型:
獲取完面部特徵資料後,SeetaFace2提供了一個人臉資料庫進行儲存對應的人臉資訊資料,以此來完成人臉資訊的註冊:
其中FDB是SeetaFace2實現的FaceDatabase資料庫管理。該資料庫也為人臉識別提供面部特徵資料的對比結果,面部特徵對比也需要一個人臉資料模型:
透過以上步驟,我們就已經完成了人臉的註冊。
2. 人臉識別
人臉識別和人臉註冊步驟類似,都需要先檢測人臉資訊及提取面部特徵資料。唯一的區別在於提取面部特徵時需要進行人臉質量評估,最後根據質量評估結果進行識別,具體實現如下:
參考連結
OpenHarmony知識體系工作組
SeetaFace2移植開發文件
SeetaFace2 GitHub原始碼地址
SeetaFace2 Demo樣例地址
本文為技術分析文章,僅供大家學習、研討及交流使用。如在實際應用場景中收集人臉影像,應遵守《個人資訊保護法》《最高人民法院關於審理使用人臉識別技術處理個人資訊相關民事案件適用法律若干問題的規定》等關於處理和保護敏感個人資訊、面部生物識別資訊的規定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011554/viewspace-2928840/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 帶你玩轉OpenHarmony AI-基於海思NNIE的AI能力自定義AI
- 基於PCA和SVM的人臉識別PCA
- 帶你玩轉OpenHarmony AI:打造智慧語音子系統AI
- 前端如何玩轉人臉識別前端
- 從零玩轉人臉識別
- 基於DNN的人臉識別中的反欺騙機制DNN
- 基於深度神經網路的人臉識別相關問題神經網路
- 金融級別的人臉識別支付?
- 用於星系的人臉識別:人工智慧為天文學帶來新工具人工智慧
- 基於卷積神經網路和tensorflow實現的人臉識別卷積神經網路
- 基於深度學習的人臉性別識別系統(含UI介面,Python程式碼)深度學習UIPython
- 基於卷積神經網路的人臉表情識別應用--AR川劇變臉(一)卷積神經網路
- SAP官方提供的人臉識別APIAPI
- 從零玩轉人臉識別之RGB人臉活體檢測
- 知物由學 | 基於DNN的人臉識別中的反欺騙機制DNN
- 一個簡單的人臉識別庫
- 基於卷積神經網路的人臉識別專案_使用Tensorflow-gpu+dilib+sklearn卷積神經網路GPU
- 基於Android平臺實現人臉識別Android
- 帶你重新“玩轉”FlutterFlutter
- 乾貨 | AI人臉識別之人臉搜尋AI
- 利用opencv 做一個簡單的人臉識別OpenCV
- 【專案】Python人臉識別(GUI介面)—— 基於pyopencvPythonGUIOpenCV
- 基於TensorflowLite的人聲識別在端上的實現
- 基於Python的人臉檢測與分類Python
- 基於Java實現的人臉識別功能,一切都為了寵粉(附原始碼)Java原始碼
- 一種基於隨機動作指令的人臉活體檢測技術,有效避免人臉識別系統被破解隨機
- 直播美顏SDK的人臉識別技術進階知識
- 識別特定影象的AI玻璃來了,未來或可用於人臉識別AI
- 人臉、指紋、虹膜、行為,你需要的人工智慧生物識別AI資料集全在這裡!人工智慧AI
- .NET 開源的功能強大的人臉識別 APIAPI
- Java 基於ArcFace人臉識別2.0 服務端DemoJava服務端
- 基於Python的人臉自動戴口罩系統Python
- 手摸手帶你玩轉Xcode ExtensionsXCode
- CryptAssist-帶你玩轉幣圈
- 手把手帶你玩轉LinuxLinux
- 弱電智慧化系統中的人臉識別技術
- 基於膚色模型的人臉識別FPGA實現,包含tb測試檔案和MATLAB輔助驗證模型FPGAMatlab
- 基於二哈實現多人人臉學習和識別