人臉識別在驗證智能手機訪問權方面已經得到了廣泛認可,但在其他領域還沒有得到更廣泛地應用,盡管這項技術極具效率且易于使用。在實現可靠的低成本機器學習解決方案方面,除了存在技術挑戰,開發人員還必須解決用戶對傳統人臉識別方法的可靠性和隱私性的擔憂,因為這些方法依賴易受欺騙的云連接。
本文將先就安全身份驗證困難之處展開了討論,然后介紹NXP Semiconductors能夠解決這些問題的軟硬件解決方案。最后說明以前沒有機器學習方法經驗的開發人員該如何使用該解決方案,在智能產品中快速實現離線式防欺騙人臉識別。
智能產品安全身份驗證的挑戰
在解決人們對智能產品日益增長的安全性問題的擔憂時,開發人員發現自己幾乎沒有什么可持續使用的選擇,來可靠地進行用戶身份驗證,從而實現快速、安全的訪問。傳統方法依賴于多因素身份驗證方法,這種方式依賴經典的三個身份驗證因素的某種組合:“你所知道的東西”,如密碼;“你所擁有的東西”,如實物鑰匙或鑰匙卡;以及“你所是的東西”,通常是指紋或虹膜等生物識別因素。使用這種方式,強身份驗證門鎖可能需要用戶輸入密碼,使用鑰匙卡,并進一步提供指紋來解鎖。實際上,這種嚴格的要求對于需要頻繁、方便地用智能手機或其他常用設備的消費者來說,這種重復驗證自己身份的方式很麻煩,或者說根本不實用。人臉識別的使用大大簡化了智能手機用戶的身份驗證,但智能手機擁有的一些優勢可能并不是每種設備都能具備的。除了高端智能手機擁有強大的處理能力外,連接始終在線是給用戶提供所期望的一系列復雜服務的基本要求。對于許多需要安全身份驗證的產品來說,底層操作平臺通常會提供較為適度的計算資源和較為有限的連接性。頭部云服務提供商提供的人臉識別服務會將處理負載轉移到云端,但需要可靠的連接以確保最小的響應延遲,而這個要求可能會超出平臺能力范圍。同樣或用戶更多關注的是,在公共網絡上傳輸他們的照片進行處理,并可能將其存儲在云端,這會引起重大的隱私問題。使用NXP Semiconductors的i.MX RT106F處理器和相關軟件,開發人員現在可以實現離線人臉識別,直接解決了這些顧慮。
用于防欺騙離線人臉識別的硬件和軟件
作為NXPi.MX RT1060跨界微控制器 (MCU) 家族的一員,NXP i.MX RT106F系列專門用于支持將離線人臉識別輕松集成到智能家居設備、消費電器、安全設備和工業設備中。它基于ArmCortex-M7處理器內核。這種工業級MIMXRT106FCVL5B處理器運行頻率為528兆赫茲 (MHz),而像MIMXRT106FDV?L6A和MIMXRT106FDVL6B這樣的商用級處理器的運行頻率為600MHz。
除了支持多種外部存儲器接口外,i.MX RT106F處理器還包括1兆字節 (Mb) 的片上隨機存取存儲器(RAM),其中512千字節 (Kb) 配置為通用RAM,512Kb既可配置為通用RAM,也可配置為用于指令 (I-TCM) 或數據 (D-TCM) 的緊耦合存儲器 (TCM)。除了片上電源管理,這些處理器還提供了一系列廣泛的集成功能,用于圖形、安全、系統控制,以及支持消費設備、工業人機界面 (HMI) 和電機控制一般需要的模擬和數字接口(圖1)。
圖1:NXP Semiconductor的i.MX RT106F處理器結合了支持消費、工業和安全產品人臉識別所需的全套功能塊。(圖片來源:NXP)
雖然與其他i.MX RT1060家族成員類似,但i.MX RT106F處理器捆綁了NXP的Oasis Lite人臉識別軟件運行時許可。Oasis Lite運行時環境旨在加快這一類處理器的推理速度,它使用在推理引擎和MiniCV(開源OpenCV計算機視覺庫的簡化版)上運行的神經網絡 (NN) 推理模型執行人臉檢測、識別,甚至是有限的情感分類。該推理引擎構建在NXP NN庫和Arm Cortex微控制器系統接口標準NN (CMSIS-NN) 庫的基礎上(圖2)。
圖2:NXP Oasis Lite運行時庫包括一個使用MiniCV的Oasis Lite內核和一個基于NXP和Arm神經網絡庫構建的NXP推理引擎。(圖片來源:NXP) 推理模型駐留在i.MX RT106F平臺上,因此人臉檢測和識別在本地執行,不像其他解決方案依賴云端資源來運行機器學習算法。由于采用了離線人臉識別功能,智能產品的設計者就可以在低帶寬或不穩定互聯網連接中確保實現私密、安全的身份驗證。此外,采用這種軟硬件結合的方式,身份驗證的執行速度很快,處理器從低功耗待機狀態喚醒到完成人臉識別所需的時間不到800毫秒 (ms)。 Oasis Lite運行時與i.MX RT106F處理器一起使用,簡化了智能產品離線人臉識別的實現,當然處理器和運行時環境只是所需的系統解決方案的一部分。除了需要一套較為完整的系統組件外,有效的身份驗證解決方案還需要具備成像能力,以減輕一種稱為呈現攻擊的安全威脅。這些攻擊試圖通過使用照片來欺騙人臉識別身份驗證。對于希望在自己的產品中快速部署基于人臉的身份驗證的開發人員來說,NXP SLN-VIZNAS-IOT開發套件和相關軟件為離線防欺騙人臉識別的評估、原型設計和開發提供了一個隨時可用的平臺。完整的人臉識別安全系統解決方案
與大多數先進的處理器一樣,i.MX RT106F處理器只需要一些額外的組件就可以提供一個有效的計算平臺。NXP SLN-VIZNAS-IOT套件通過將i.MX RT106F與其他設備集成在一起來完成設計,是一個完整的硬件平臺(圖3)。
圖3:NXP SLN-VIZNAS-IOT套件包括一個連接模塊,提供了一個運行身份驗證軟件所需的強大聯網系統平臺。(圖片來源:NXP) 該套件的連接模塊板結合了NXP MIMXRT106FDVL6A i.MX RT106F處理器、NXPA71CH安全元件和兩個連接選擇:NXP的MKW41Z512VHT4Kinetis KW41Z低功耗藍牙 (BLE) 片上系統 (SoC) 和Murata Electronics的LBEE5KL1DX-883Wi-Fi/藍牙模塊。 為了補充處理器片上存儲器的不足,連接模塊增加了Winbond Electronics的W9825G6JB256兆位(Mb) 同步動態RAM (SDRAM)、Integrated Silicon Solution. Inc.(ISSI) 的IS26KL256S-DABLI00256 Mb NOR閃存以及ISSI的IS25LP256D256 Mb四通道串行外設接口 (SPI) 器件。 最后,該模塊增加了一個Torex SemiconductorXCL214B333DR降壓轉換器,以補充i.MX RT106F處理器的內部電源管理功能,用于連接模塊板上的其它設備。連接模塊轉而安裝在視覺應用板上,后者則結合了Murata ElectronicsIRA-S210ST01被動紅外 (PIR) 傳感器、運動傳感器、電池充電器、音頻支持、發光二極管 (LED)、按鈕和接口連接器(圖4)。
圖4:在NXP SLN-VIZNAS-IOT套件中,連接模塊(左)連接到視覺應用板上,為人臉識別提供硬件基礎。(圖片來源:NXP)除了這個系統平臺,人臉識別系統設計顯然還需要一個合適的攝像頭傳感器來捕捉用戶的面部圖像。然而,如前所述,對呈現攻擊的擔憂需要額外的成像能力。
化解呈現攻擊
多年來,研究人員一直在探索不同的呈現攻擊檢測 (PAD) 方法,旨在化解諸如使用隱藏指紋或人臉圖像來欺騙基于生物識別的身份驗證系統的企圖。雖然細節遠遠超出了本文的范圍,但一般來說,PAD方法使用的是對采集的生物識別數據的質量和特征的深度分析,以及旨在確定生物識別數據是否從活人身上采集而來的“活體”檢測方法。在許多不同方法的基礎上,深度神經網絡 (DNN) 模型不僅在人臉識別中發揮了重要作用,而且在識別欺騙系統的企圖方面也發揮了重要作用。盡管如此,用于捕捉用戶面部的成像系統是可以提供額外活體檢測支持的。
對于SLN-VIZNAS-IOT套件,NXP包括了攝像頭模塊,內含一對On SemiconductorMT9M114圖像傳感器。在這里,一個攝像頭裝有紅綠藍 (RGB) 濾鏡,另一個攝像頭裝有紅外 (IR) 濾鏡。RGB攝像頭通過攝像頭接口連接到視覺應用板上,可生成正常的可見光圖像,而紅外攝像頭捕捉到的圖像對于活人來說是不同的。利用這種活體檢測方法及其內部的人臉識別能力,SLN-VIZNAS-IOT套件在尺寸約為30×40毫米 (mm) 的封裝中實現了離線、防欺騙的人臉識別能力(圖5)。圖5:NXP SLN-VIZNAS-IOT硬件套件將用于活體檢測(上)和視覺應用板(下)的雙攝像頭系統與連接模塊集成在一起,提供了一個具有防欺騙能力的即插即用型離線人臉識別解決方案。(圖片來源:NXP)
SLN-VIZNAS-IOT套件使用入門
NXP SLN-VIZNAS-IOT套件內置人臉識別模型,可隨時使用。開發人員插入USB電纜,觸摸套件上的按鈕,使用預裝的 "elock" 應用程序和配套的移動APP進行簡單的手動人臉注冊(圖6,左)。注冊后,在套件對注冊的人臉進行身份驗證時,移動APP會顯示“welcome home”消息和“unlocked”標簽(圖6,右)。圖 6:NXP SLN-VIZNAS-IOT 硬件套件開箱即用,利用配套 APP 注冊人臉(左)并識別注冊的人臉(右)。(圖片來源:NXP)
該套件的Oasis Lite人臉識別軟件可從其數據庫處理多達3000張RGB人臉模型,識別準確率高達99.6%,紅外人臉最多100張,防欺騙準確率高達96.5%。如前所述,NXP的硬件/軟件解決方案只需要不到一秒的時間,就能完成0.2米到1.0米范圍內的人臉檢測、圖像對齊、質量檢查、活體檢測和識別。事實上,該系統支持一個備用的”光“推理模型,能夠在不到0.5秒的時間內執行這個相同的序列,但支持的最大數據庫量較小,即1000個RGB人臉和50個紅外人臉。
構建定制人臉識別應用
NXP SLN-VIZNAS-IOT套件只需按原樣使用,即可讓開發人員快速對人臉識別應用進行評估、原型設計和開發。在創建定制硬件解決方案時,該套件可作為一個完整的參考設計使用,并提供完整的原理圖和詳細的物料清單 (BOM)。在軟件開發方面,程序員可以使用帶有FreeRTOS支持和配置工具的NXP MCUXpresso集成開發環境 (IDE)。對于人臉識別應用,開發人員只需使用NXP的在線MCUXpresso SDK Builder并通過NXP的VIZNAS SDK即可完成軟件開發環境配置,后者包括了NXP Oasis Lite機器學習視覺引擎(圖7)。
圖7:NXP提供了一個全面的軟件環境,可在FreeRTOS操作系統上執行NXP Oasis Lite運行時庫和實用程序中間件。(圖片來源:NXP)
該軟件包中包含了操作環境的完整源代碼,以及前面提到的elock示例應用程序。NXP不針對其專有Oasis Lite引擎或模型提供源代碼。取而代之的是,開發人員可通過提供的應用編程接口 (API) 來使用Oasis Lite運行時庫。該API包括一組直觀的函數調用,以執行支持的操作。此外,開發人員可使用提供的一組C定義和結構來指定各種參數,具體包括圖像大小、內存分配、回調和系統在啟動Oasis Lite運行時環境時使用的啟用函數(詳見清單1)。
typedef struct {//max input image height, width and channel,min_face: minimum face can be detectedintheight;intwidth; //only valid for RGB images; for IR image, always GREY888 formatOASISLTImageFormat_timg_format;OASISLTImageType_timg_type; //min_faceshould not smaller than 40intmin_face; /*memory pool pointer, this memory pool should only be used by OASIS LIB*/char*mem_pool; /*memory pool size*/intsize; /*outputparameter,indicateauthenticated or not*/intauth; /*callback functions provided by caller*/InfCallbacks_tcbs; /*what functions should be enabled in OASIS LIB*/uint8_tenable_flags; /*only valid when OASIS_ENABLE_EMO is activated*/OASISLTEmoMode_temo_mode; /*false accept rate*/OASISLTFar_tfalse_accept_rate; /*model class */OASISLTModelClass_tmod_class; }OASISLTInitPara_t;清單1:開發人員可以通過修改結構的內容來修改軟件執行參數,如上所示為用于Oasis Lite運行時初始化的代碼。(代碼來源:NXP)
elock示例應用代碼展示了用于以下操作的關鍵設計模式:作為FreeRTOS下運行任務啟動Oasis,初始化環境,以及進入正常運行階段。在運行階段,運行時環境對圖像的每一幀進行操作,執行提供的與環境中定義的每個事件相關的回調函數(詳見清單2)。
typedefenum{/*indicate the start of face detection, user can update frame data if it is needed.* all parameter in callback parameter isinvalid.*/OASISLT_EVT_DET_START, /*The end of face detection.*if a face is found,pfaceBox(OASISLTCbPara_t) indicated therect(left,top,right,bottompoint value)*info and landmark value of the face.*if no face isfound,pfaceBoxis NULL, following event will not be triggered for current frame.*otherparameter in callback parameter is invalid */OASISLT_EVT_DET_COMPLETE, /*Face quality check is done before face recognition*/OASISLT_EVT_QUALITY_CHK_START,OASISLT_EVT_QUALITY_CHK_COMPLETE, /*Start of face recognition*/OASISLT_EVT_REC_START, /*The end of face recognition.* when face feature in current frame is gotten,GetRegisteredFacescallback will be called to get all* faces feature registered and OASIS lib will try to search this face in registered faces, if this face* is matched, a valid face ID will be set in callback parameterfaceIDand correspondingsimularity(indicate* how confidence for the match) also will be set.* if no face match,ainvalid(INVALID_FACE_ID) will beset.*/OASISLT_EVT_REC_COMPLETE, /*start of emotion recognition*/OASISLT_EVT_EMO_REC_START, /*End of emotion recognition,emoIDindicate which emotion current faceis.*/OASISLT_EVT_EMO_REC_COMPLETE, /*if user set a registration flag in a call ofOASISLT_runand a face is detected,this two eventswill be notified* for auto registration mode, only newface(not recognized) isadded(callAddNewFacecallback function)* formanuregistration mode, face will be addedforcely.* for both cases, face ID of new added face will be set in callback function */OASISLT_EVT_REG_START,/*when registration start, for each valid frame ishandled,thisevent will be triggered and indicate* registration process is going forward a little.* */OASISLT_EVT_REG_IN_PROGRESS,OASISLT_EVT_REG_COMPLETE,OASISLT_EVT_NUM }OASISLTEvt_t; 清單 2:Oasis Lite 運行時識別一系列事件,并在 Oasis Lite 運行時頭文件中記錄為一個枚舉集。(代碼來源:NXP)該示例應用程序可以為開發人員提供一步步的調試消息,描述與事件句柄 (EvtHandler) 所處理的每個事件相關的結果。例如,在質量檢查完成后(OASISLT_EVT_QUALITY_CHK_COMPLETE),系統會打印出描述結果的調試信息,在人臉識別完成后 (OASISLT_EVT_REC_COMPLETE),系統會從其數據庫調出識別到的人臉的用戶 ID 和姓名,并打印出這些信息(詳見清單3)。static voidEvtHandler(ImageFrame_t*frames[],OASISLTEvt_tevt,OASISLTCbPara_t*para, void *user_data){[code redacted for simplification]case OASISLT_EVT_QUALITY_CHK_COMPLETE:{UsbShell_Printf("[OASIS]:qualitychkres:%d ", para->qualityResult); pQMsg->msg.info.irLive = para->reserved[5];pQMsg->msg.info.front = para->reserved[1];pQMsg->msg.info.blur = para->reserved[3];pQMsg->msg.info.rgbLive= para->reserved[8]; if (para->qualityResult== OASIS_QUALITY_RESULT_FACE_OK_WITHOUT_GLASSES ||para->qualityResult== OASIS_QUALITY_RESULT_FACE_OK_WITH_GLASSES){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:ok! ");}else if (OASIS_QUALITY_RESULT_FACE_SIDE_FACE == para->qualityResult){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:sideface! ");}else if (para->qualityResult== OASIS_QUALITY_RESULT_FACE_TOO_SMALL){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]:SmallFace! ");}else if (para->qualityResult== OASIS_QUALITY_RESULT_FACE_BLUR){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: BlurryFace! ");}else if (para->qualityResult== OASIS_QUALITY_RESULT_FAIL_LIVENESS_IR){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: IR FakeFace! ");}else if (para->qualityResult== OASIS_QUALITY_RESULT_FAIL_LIVENESS_RGB){UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[EVT]: RGB FakeFace! ");}}break;[code redacted for simplification]case OASISLT_EVT_REC_COMPLETE:{intdiff;unsigned id = para->faceID;OASISLTRecognizeRes_trecResult= para->recResult; timeState->rec_comp=Time_Now();pQMsg->msg.info.rt =timeState->rec_start-timeState->rec_comp;face_info.rt =pQMsg->msg.info.rt;#ifdef SHOW_FPS/*pit timer unit is us*/timeState->rec_fps++;diff = abs(timeState->rec_fps_start-timeState->rec_comp);if (diff > 1000000 / PIT_TIMER_UNIT){// update fpspQMsg->msg.info.recognize_fps=timeState->rec_fps* 1000.0f /diff;timeState->rec_fps =0;timeState->rec_fps_start =timeState->rec_comp;}#endifmemset(pQMsg->msg.info.name, 0x0,sizeof(pQMsg->msg.info.name)); if (recResult== OASIS_REC_RESULT_KNOWN_FACE){std::stringname;UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:faceid:%d ", id);DB_GetName(id, name);memcpy(pQMsg->msg.info.name,name.c_str(),name.size());face_info.recognize=true;face_info.name =std::string(name);UsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:faceid:%dname:%s ", id,pQMsg->msg.info.name);}else{// face is not recognized, do nothingUsbShell_DbgPrintf(VERBOSE_MODE_L2, "[OASIS]:faceunrecognized ");face_info.recognize=false;} VIZN_RecognizeEvent(gApiHandle,face_info);}break;清單3:如NXP軟件包中提供的一個示例應用程序的片段所示,一個事件處理程序句柄可處理在人臉識別序列中遇到的事件。(代碼來源:NXP)
除了支持人臉識別處理需求外,NXP SLN-VIZNAS-IOT軟件還對操作環境進行了保護。為了確保運行時的安全性,系統被設計成使用存儲在SLN-VIZNAS-IOT套件文件系統中的證書來驗證加載到系統中的每個簽名圖像的完整性和真實性。由于這個驗證序列是從存儲在只讀存儲器 (ROM) 中的可信引導程序開始的,因此這個過程為運行應用固件提供了一個信任鏈。另外,由于代碼簽名和驗證會減慢開發速度,所以在軟件設計和調試過程中,這個驗證過程被設計成繞過。事實上,SLN-VIZNAS-IOT套件預裝了已簽名圖像,但默認繞過了代碼簽名驗證。開發者可以輕松地設置選項,以實現用于生產的完整代碼簽名驗證。
除了運行時環境和相關的應用示例代碼,NXP還為Android移動APP提供了完整的java源代碼。其中一個名為VIZNAS FaceRec Manager的APP提供了一個簡單的界面,用于注冊人臉和管理用戶。另一個VIZNAS Companion APP則允許用戶使用現有的Wi-Fi或BLE連接為套件提供Wi-Fi憑證。結語
人臉識別為智能產品的身份驗證訪問提供了一種有效的方法,但實現它通常需要在本地進行高性能計算,或提供始終在線的高帶寬連接進行快速響應。這種技術也一直是被欺騙的目標,存在讓人擔憂的用戶隱私問題。
如本文所述,NXP Semiconductors 的專用處理器和軟件庫提供了一種替代方法,可以在沒有云端連接的情況下,在不到一秒的時間內準確地執行離線人臉識別,同時化解了欺騙企圖。
好東西,要分享如果小伙伴覺得這個內容不錯請轉發或分享到朋友圈
DK會員中心福利多
你,加入了沒?
積分可兌換各種好禮
快到「會員權益」頁面看看!如有任何問題, 歡迎聯系得捷電子
Digi-Key的客服團隊
中國(人民幣)客服
400-920-1199service.sh@digikey.comQQ在線實時咨詢 | QQ號:4009201199 中國(美金)/香港客服400-882-44408523104-0500china.support@digikey.com到微信搜尋“ digikey”或“得捷電子”關注我們官方微信并登記成會員,每周接收工程師秘技,賺積分,換禮品,享福利
點擊下方“閱讀原文”查看更多
讓我知道你在看喲
原文標題:不到一秒完成離線人臉識別,還有訪欺騙功能:本文告訴你如何實現!
文章出處:【微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。
-
得捷電子
+關注
關注
1文章
255瀏覽量
8892
原文標題:不到一秒完成離線人臉識別,還有訪欺騙功能:本文告訴你如何實現!
文章出處:【微信號:得捷電子DigiKey,微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論