伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

.NET基于虹軟人臉識別SDK 快速開發身份驗證和自助發卡應用

科訊視點 ? 2021-04-09 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

.NET基于虹軟人臉識別SDK 快速開發身份驗證和自助發卡應用

去年下半年開始,本人從B/S轉戰C/S開發,相繼做了大大小小一些項目。最近的一個應用是運輸車輛通行卡自助收發應用,并第一次用到了人臉識別功能。作為該領域的初學者,我摸索著把項目搞定了,也復盤了一些開發經驗,總結出來給其他在項目上初次應用人臉識別的朋友參考。

簡單來說,這個項目與社保卡自助發卡機、信用卡自助發卡機的原理有些類似,內容就是:

借助人臉識別和身份證讀取,進行人證核驗。身份核驗通過后,發卡機會匹配后端數據,并將取卡人、取卡時間、卡片權限等信息寫入卡片,隨后吐出卡片,用戶取卡可用于后續通行的操作。

關于發卡機部分,只需要把一些操作步驟進行封裝,通過串口發送命令就可以實現功能,身份證信息則通過讀卡器進行讀取。在開發的重點上,我把比較多的精力放在了初次嘗試的人臉識別功能上,基本流程如下圖:

進一步簡單描述一下項目背景和需求:

第一,之所以引入人臉識別,主要是為了保證本人取卡,專人專卡,避免代取和冒用,確保信息可準確回溯。

第2, 這個項目比較小,在人臉識別的功能上并沒有額外預算,所以首選免費的人臉識別算法

第3, 項目地點的網絡環境比較差,為避免因為網絡故障導致無法取卡,優先選擇可離線使用的人臉識別算法。

第四,因為是自助取卡機,周圍沒人看顧,為避免冒領,人臉識別算法需要加入活體檢測功能。

綜合以上幾點,我甄選之后采用了虹軟視覺開發平臺的ArcFace SDK。這款算法可以同時滿足免費使用、離線可用的需求,又自帶IR/RGB雙目活體檢測,可以高效、高質量的抵御假臉攻擊。另外,虹軟開發平臺最新出的ArcFace SDK 4.0版本,更新了針對佩戴口罩下的活體檢測和人臉識別功能。

另外,ArcFace SDK的使用也比較簡單。在官網注冊開發者之后,新建應用,就能得到全新的APP_ID和SDK_KEY,之后下載開發包配置到程序中。

人臉識別界面如下,左側是拍攝畫面,右邊是身份證照片以及識別反饋。

開發時用到了三個引擎,第一個是圖片模式下的人臉檢測引擎:

#region圖片引擎pImageEngine初始化//初始化引擎uintdetectMode=DetectionMode.ASF_DETECT_MODE_IMAGE;//檢測臉部的角度優先值intdetectFaceOrientPriority=ASF_OrientPriority.ASF_OP_0_HIGHER_EXT;//人臉在圖片中所占比例,如果需要調整檢測人臉尺寸請修改此值,有效數值為2-32intdetectFaceScaleVal=16;//最大需要檢測的人臉個數intdetectFaceMaxNum=5;//引擎初始化時需要初始化的檢測功能組合intcombinedMask=FaceEngineMask.ASF_FACE_DETECT|FaceEngineMask.ASF_FACERECOGNITION|FaceEngineMask.ASF_AGE|FaceEngineMask.ASF_GENDER|FaceEngineMask.ASF_FACE3DANGLE;//初始化引擎,正常值為0,其他返回值請參考http://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=19&_dsign=dbad527eretCode=ASFFunctions.ASFInitEngine(detectMode,detectFaceOrientPriority,detectFaceScaleVal,detectFaceMaxNum,combinedMask,refpImageEngine);if(retCode==0){lbl_msg.Text=("圖片引擎初始化成功!\n");}else{lbl_msg.Text=(string.Format("圖片引擎初始化失敗!錯誤碼為:{0}\n",retCode));}#endregion

第二個是視頻模式下的人臉檢測引擎:

#region 視頻專用FR引擎

detectFaceMaxNum = 1;

combinedMask = FaceEngineMask.ASF_FACERECOGNITION | FaceEngineMask.ASF_FACE3DANGLE | FaceEngineMask.ASF_LIVENESS;

retCode = ASFFunctions.ASFInitEngine(detectMode, detectFaceOrientPriority, detectFaceScaleVal, detectFaceMaxNum, combinedMask, ref pVideoImageEngine);

Console.WriteLine("InitVideoEngine Result:" + retCode);

if (retCode == 0)

{

lbl_msg.Text = ("視頻專用FR引擎初始化成功!\n");

}

else

{

lbl_msg.Text = (string.Format("視頻專用FR引擎初始化失敗!錯誤碼為:{0}\n", retCode));

}

// 攝像頭初始化

filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);

lbl_msg.Text = (string.Format("攝像頭初始化完成...\n"));

#endregion

第三個是視頻專用FR引擎,進行活體檢測:

#region 視頻專用FR引擎

detectFaceMaxNum = 1;

combinedMask = FaceEngineMask.ASF_FACERECOGNITION | FaceEngineMask.ASF_FACE3DANGLE | FaceEngineMask.ASF_LIVENESS;

retCode = ASFFunctions.ASFInitEngine(detectMode, detectFaceOrientPriority, detectFaceScaleVal, detectFaceMaxNum, combinedMask, ref pVideoImageEngine);

Console.WriteLine("InitVideoEngine Result:" + retCode);

if (retCode == 0)

{

lbl_msg.Text = ("視頻專用FR引擎初始化成功!\n");

}

else

{

lbl_msg.Text = (string.Format("視頻專用FR引擎初始化失敗!錯誤碼為:{0}\n", retCode));

}

// 攝像頭初始化

filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);

lbl_msg.Text = (string.Format("攝像頭初始化完成...\n"));

#endregion

視頻處理使用的是AForge.Video 視頻處理類庫,然后在電腦上接上USB攝像頭,通過此類庫就可以調用攝像頭的開關了,至于具體的人臉識別要放在視頻流渲染事件上了。

首先將身份證放在身份證閱讀器上,獲取到身份信息,并把身份信息中的人臉照片拿出來作為人臉注冊照。利用ArcFcae SDK的相關接口,可以從注冊照中提取人臉識別特征值。

隨后,我們要從攝像頭的視頻流中獲取一幀圖片,作為識別照也進行人臉識別特征值提取。值得注意的是,ArcFcae本身支持多人臉識別,但由于人證核驗為1:1人臉識別,因此為了排除多余人臉的干擾,我們可以選取檢測到的最大人臉,進行特征值提取。

在獲得注冊照和識別照的特征值之后,就可以交給算法來做比對,得出一個相似度。注意,人臉識別算法是不會直接告訴你兩張照片是不是同一個人的,只會給出一個可能性。最終輸出的結果需要人為設置一個閾值,譬如相似度超過90%,我們就可以認定是同一個人。當然閾值也不是越高越好,具體設置需要根據項目的實際情況來做權衡。

到這一步功能就算基本跑通了,但活體檢測功能還沒有加入。缺乏活體檢測的話,使用身份證照片、紙質打印照片甚至手機屏幕上的照片都能通過人臉識別。

所以說,在自助設備這類無人值守場景下,活體檢測基本上不可或缺。虹軟ArcFace自帶的活體檢測有單目RGB活體檢測和IR雙目紅外活體檢測兩種。我因為只用了普通的RGB攝像頭,所以采用單目RGB活體檢測,這種算法主要分析采集摩爾紋、成像畸形、反射率等人像破綻,從而獲得活體檢測所需要的識別信息,對屏幕成像和紙張照片類攻擊有著良好防御性。

多說一句,IR雙目紅外活體中會加入了紅外攝像頭,防攻擊效果是更好的,不過這個項目暫時沒有這么高的需求。

int retCode_Liveness = -1;

//RGB活體檢測

ASF_LivenessInfo liveInfo = FaceUtil.LivenessInfo_RGB(pVideoImageEngine, imageInfo, multiFaceInfo, out retCode_Liveness);

//判斷檢測結果

if (retCode_Liveness == 0 && liveInfo.num > 0)

{

int isLive = MemoryUtil.PtrToStructure(liveInfo.isLive);

isLiveness = (isLive == 1) ? true : false;

}

if (isLiveness)//活體檢測成功

在加入活體檢測之后,整個人臉識別的流程基本就完整了。我發現在進行完所有流程后,還需要進行引擎的釋放,否則每次初始化一個引擎大概會需要50M左右的內存,多次操作之后就會出現因為內存泄漏而導致閃退的現象。

這個做法能達到目的,但是比較僵硬,在咨詢虹軟開放平臺的技術專家后,我發現應該根據實際業務需求,在程序啟動時,有選擇的初始化對應的算法屬性,避免在運行中多次做初始化和反初始化的操作,否則會導致資源波動過大以及產生內存碎片。引擎在程序結束或當前界面關閉時釋放即可。

總體而言比較順利,雖然是第一次集成人臉識別,這可能和ArcFace容易上手也有關系。希望這篇內容能對大家有幫助。

GitHub已開源:https://github.com/yumaster/ReceiveCardAIO

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Renesas攜手Aizip開發采用RA8D1 MCU的人臉識別解決方案

    人臉識別已成為智能手機與個人電腦等高性能設備的標配功能。然而,要將這項技術集成到資源受限的邊緣設備與物聯網終端中,仍面臨諸多挑戰。例如,企業級打印機的用戶身份驗證、門禁控制面板、考勤打卡機以及銷售終端等應用場景,都能通過
    的頭像 發表于 04-11 16:40 ?1781次閱讀
    Renesas攜手Aizip<b class='flag-5'>開發</b>采用RA8D1 MCU的<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>解決方案

    如何在 i.MX RT1050 上實現兩個鏡像(引導加載程序應用程序)的雙 HAB 身份驗證

    )。 目前,我的想法是實現一個自定義身份驗證機制在第二階段引導加載程序中。引導加載程序將: 讀取應用程序映像頁腳(包含公鑰、SHA-256 哈希和簽名)- 在映像上手動實現/添加。 在跳轉到應用映像之前
    發表于 04-07 06:14

    人臉識別身份核驗終端卡頓死機怎么辦?看這篇就夠了

    在智能安防和政務處理場景中,經常會使用到人臉識別身份核驗終端或人證對比一體機等智能安防設備,但在設備運行可能會出現"開機即卡頓"或"運行中死機"問題,這類故障
    的頭像 發表于 11-10 10:25 ?817次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識別</b><b class='flag-5'>身份</b>核驗終端卡頓死機怎么辦?看這篇就夠了

    使用瑞薩RA8D1開發板實現人臉識別的應用演示

    隨著科技的進步,人臉識別技術已逐漸成為一種主流的安全驗證手段。它不依賴傳統的密碼,而是通過面部特征識別驗證
    的頭像 發表于 10-14 10:58 ?5872次閱讀
    使用瑞薩RA8D1<b class='flag-5'>開發</b>板實現<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>的應用演示

    企業班車智能車載終端:人臉識別、NFC與北斗定位的多重應用

    為什么企業班車智能車載終端需要用到這三大功能呢:一、人臉識別人臉識別技術在企業班車中的應用,主要體現在身份驗證和考勤管理兩個方面。首先,車載考勤打卡一體機通過
    的頭像 發表于 09-23 10:42 ?860次閱讀
    企業班車智能車載終端:<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>、NFC與北斗定位的多重應用

    人臉識別身份核驗終端的應用場景和硬件要求有哪些?

    人臉識別身份核驗終端作為一種先進的生物識別技術設備,正廣泛應用于各個領域,為身份驗證和安全管理提供了高效、便捷的解決方案。以下是
    的頭像 發表于 08-27 11:22 ?977次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識別</b><b class='flag-5'>身份</b>核驗終端的應用場景和硬件要求有哪些?

    手持式身份識別閱讀器:移動的身份識別智能終端

    鳥鳥N70S手持式居民身份證閱讀器是一種專為移動辦公與身份核驗而設計的終端設備,集身份識別、OCR、二維碼掃描、人臉
    的頭像 發表于 08-20 14:34 ?1750次閱讀
    手持式<b class='flag-5'>身份</b>證<b class='flag-5'>識別</b>閱讀器:移動的<b class='flag-5'>身份</b><b class='flag-5'>識別</b>智能終端

    RFID在身份識別中的應用

    二、RFID在身份識別中的優勢高效率:RFID可以快速讀取身份信息,大幅縮短驗證時間,提高身份
    的頭像 發表于 07-23 15:35 ?606次閱讀
    RFID在<b class='flag-5'>身份</b><b class='flag-5'>識別</b>中的應用

    富士通創新生物識別身份驗證技術介紹

    在數字化浪潮席卷全球的當下,身份認證技術的安全性與便捷性,已然成為全社會關注的焦點。傳統的身份認證方案,諸如密碼、指紋識別人臉識別等,盡管
    的頭像 發表于 07-03 09:31 ?1139次閱讀

    基于LockAI視覺識別模塊:C++人臉識別

    基本知識講解 1.1 人臉識別簡介 人臉識別是一種利用人的臉部特征進行身份識別的生物
    發表于 07-01 12:01

    人臉識別身份核驗終端使用鴻蒙系統,有什么好處?

    隨著人臉識別技術越來越得到廣泛應用,不少人對人臉識別核驗終端所涉及的個人信息安全十分關注。而且人臉識別
    的頭像 發表于 05-20 09:57 ?1116次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識別</b><b class='flag-5'>身份</b>核驗終端使用鴻蒙系統,有什么好處?

    高考考場引入身份證人臉識別終端考務通的必要性

    終端這一先進的身份驗證技術。下面,我們將詳細探討高考考場使用身份證人臉識別終端的必要性。首先,使用身份證人臉識別
    的頭像 發表于 05-19 10:14 ?837次閱讀
    高考考場引入<b class='flag-5'>身份證人臉</b><b class='flag-5'>識別</b>終端考務通的必要性

    有些人臉識別身份核驗終端為什么晚上用不了?

    無論是身份證人臉識別身份核驗終端、刷臉核驗一體機還是人臉識別門禁考勤一體機,它都涉及到人臉
    的頭像 發表于 05-10 09:42 ?1659次閱讀
    有些<b class='flag-5'>人臉</b><b class='flag-5'>識別</b><b class='flag-5'>身份</b>核驗終端為什么晚上用不了?

    酒店使用身份證人臉身份核驗機有什么好處?

    證信息登記,還需要進行人臉識別,方便進行現場人證對比,防止有人用別人的身份證冒名入住酒店,帶來安全隱患。因此,在酒店旅館就需要引入身份證人臉識別
    的頭像 發表于 04-29 10:45 ?958次閱讀
    酒店使用<b class='flag-5'>身份證人臉</b><b class='flag-5'>身份</b>核驗機有什么好處?

    戶外人臉識別終端有哪些使用場景和注意事項?

    景。景區驗票在景區,人臉識別身份核驗終端可以用于游客的快速安檢。游客只需在身份證人臉識別
    的頭像 發表于 04-17 10:16 ?806次閱讀
    戶外<b class='flag-5'>人臉</b><b class='flag-5'>識別</b>終端有哪些使用場景和注意事項?