一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

.NET基于虹軟人臉識(shí)別SDK 快速開發(fā)身份驗(yàn)證和自助發(fā)卡應(yīng)用

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

掃碼添加小助手

加入工程師交流群

.NET基于虹軟人臉識(shí)別SDK 快速開發(fā)身份驗(yàn)證和自助發(fā)卡應(yīng)用

去年下半年開始,本人從B/S轉(zhuǎn)戰(zhàn)C/S開發(fā),相繼做了大大小小一些項(xiàng)目。最近的一個(gè)應(yīng)用是運(yùn)輸車輛通行卡自助收發(fā)應(yīng)用,并第一次用到了人臉識(shí)別功能。作為該領(lǐng)域的初學(xué)者,我摸索著把項(xiàng)目搞定了,也復(fù)盤了一些開發(fā)經(jīng)驗(yàn),總結(jié)出來給其他在項(xiàng)目上初次應(yīng)用人臉識(shí)別的朋友參考。

簡(jiǎn)單來說,這個(gè)項(xiàng)目與社??ㄗ灾l(fā)卡機(jī)、信用卡自助發(fā)卡機(jī)的原理有些類似,內(nèi)容就是:

借助人臉識(shí)別和身份證讀取,進(jìn)行人證核驗(yàn)。身份核驗(yàn)通過后,發(fā)卡機(jī)會(huì)匹配后端數(shù)據(jù),并將取卡人、取卡時(shí)間、卡片權(quán)限等信息寫入卡片,隨后吐出卡片,用戶取卡可用于后續(xù)通行的操作。

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

進(jìn)一步簡(jiǎn)單描述一下項(xiàng)目背景和需求:

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

第2, 這個(gè)項(xiàng)目比較小,在人臉識(shí)別的功能上并沒有額外預(yù)算,所以首選免費(fèi)的人臉識(shí)別算法。

第3, 項(xiàng)目地點(diǎn)的網(wǎng)絡(luò)環(huán)境比較差,為避免因?yàn)榫W(wǎng)絡(luò)故障導(dǎo)致無法取卡,優(yōu)先選擇可離線使用的人臉識(shí)別算法。

第四,因?yàn)槭亲灾】C(jī),周圍沒人看顧,為避免冒領(lǐng),人臉識(shí)別算法需要加入活體檢測(cè)功能。

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

另外,ArcFace SDK的使用也比較簡(jiǎn)單。在官網(wǎng)注冊(cè)開發(fā)者之后,新建應(yīng)用,就能得到全新的APP_ID和SDK_KEY,之后下載開發(fā)包配置到程序中。

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

開發(fā)時(shí)用到了三個(gè)引擎,第一個(gè)是圖片模式下的人臉檢測(cè)引擎:

#region圖片引擎pImageEngine初始化//初始化引擎uintdetectMode=DetectionMode.ASF_DETECT_MODE_IMAGE;//檢測(cè)臉部的角度優(yōu)先值intdetectFaceOrientPriority=ASF_OrientPriority.ASF_OP_0_HIGHER_EXT;//人臉在圖片中所占比例,如果需要調(diào)整檢測(cè)人臉尺寸請(qǐng)修改此值,有效數(shù)值為2-32intdetectFaceScaleVal=16;//最大需要檢測(cè)的人臉個(gè)數(shù)intdetectFaceMaxNum=5;//引擎初始化時(shí)需要初始化的檢測(cè)功能組合intcombinedMask=FaceEngineMask.ASF_FACE_DETECT|FaceEngineMask.ASF_FACERECOGNITION|FaceEngineMask.ASF_AGE|FaceEngineMask.ASF_GENDER|FaceEngineMask.ASF_FACE3DANGLE;//初始化引擎,正常值為0,其他返回值請(qǐng)參考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("圖片引擎初始化失敗!錯(cuò)誤碼為:{0}\n",retCode));}#endregion

第二個(gè)是視頻模式下的人臉檢測(cè)引擎:

#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引擎初始化失敗!錯(cuò)誤碼為:{0}\n", retCode));

}

// 攝像頭初始化

filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);

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

#endregion

第三個(gè)是視頻專用FR引擎,進(jìn)行活體檢測(cè):

#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引擎初始化失敗!錯(cuò)誤碼為:{0}\n", retCode));

}

// 攝像頭初始化

filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);

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

#endregion

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

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

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

在獲得注冊(cè)照和識(shí)別照的特征值之后,就可以交給算法來做比對(duì),得出一個(gè)相似度。注意,人臉識(shí)別算法是不會(huì)直接告訴你兩張照片是不是同一個(gè)人的,只會(huì)給出一個(gè)可能性。最終輸出的結(jié)果需要人為設(shè)置一個(gè)閾值,譬如相似度超過90%,我們就可以認(rèn)定是同一個(gè)人。當(dāng)然閾值也不是越高越好,具體設(shè)置需要根據(jù)項(xiàng)目的實(shí)際情況來做權(quán)衡。

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

所以說,在自助設(shè)備這類無人值守場(chǎng)景下,活體檢測(cè)基本上不可或缺。虹軟ArcFace自帶的活體檢測(cè)有單目RGB活體檢測(cè)和IR雙目紅外活體檢測(cè)兩種。我因?yàn)橹挥昧似胀ǖ腞GB攝像頭,所以采用單目RGB活體檢測(cè),這種算法主要分析采集摩爾紋、成像畸形、反射率等人像破綻,從而獲得活體檢測(cè)所需要的識(shí)別信息,對(duì)屏幕成像和紙張照片類攻擊有著良好防御性。

多說一句,IR雙目紅外活體中會(huì)加入了紅外攝像頭,防攻擊效果是更好的,不過這個(gè)項(xiàng)目暫時(shí)沒有這么高的需求。

int retCode_Liveness = -1;

//RGB活體檢測(cè)

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

//判斷檢測(cè)結(jié)果

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

{

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

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

}

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

在加入活體檢測(cè)之后,整個(gè)人臉識(shí)別的流程基本就完整了。我發(fā)現(xiàn)在進(jìn)行完所有流程后,還需要進(jìn)行引擎的釋放,否則每次初始化一個(gè)引擎大概會(huì)需要50M左右的內(nèi)存,多次操作之后就會(huì)出現(xiàn)因?yàn)閮?nèi)存泄漏而導(dǎo)致閃退的現(xiàn)象。

這個(gè)做法能達(dá)到目的,但是比較僵硬,在咨詢虹軟開放平臺(tái)的技術(shù)專家后,我發(fā)現(xiàn)應(yīng)該根據(jù)實(shí)際業(yè)務(wù)需求,在程序啟動(dòng)時(shí),有選擇的初始化對(duì)應(yīng)的算法屬性,避免在運(yùn)行中多次做初始化和反初始化的操作,否則會(huì)導(dǎo)致資源波動(dòng)過大以及產(chǎn)生內(nèi)存碎片。引擎在程序結(jié)束或當(dāng)前界面關(guān)閉時(shí)釋放即可。

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    高考考場(chǎng)引入身份證人臉識(shí)別終端考務(wù)通的必要性

    終端這一先進(jìn)的身份驗(yàn)證技術(shù)。下面,我們將詳細(xì)探討高考考場(chǎng)使用身份證人臉識(shí)別終端的必要性。首先,使用身份證人臉識(shí)別
    的頭像 發(fā)表于 05-19 10:14 ?225次閱讀
    高考考場(chǎng)引入<b class='flag-5'>身份證人臉</b><b class='flag-5'>識(shí)別</b>終端考務(wù)通的必要性

    有些人臉識(shí)別身份核驗(yàn)終端為什么晚上用不了?

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

    戶外人臉識(shí)別終端有哪些使用場(chǎng)景和注意事項(xiàng)?

    景。景區(qū)驗(yàn)票在景區(qū),人臉識(shí)別身份核驗(yàn)終端可以用于游客的快速安檢。游客只需在身份證人臉識(shí)別
    的頭像 發(fā)表于 04-17 10:16 ?247次閱讀
    戶外<b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>終端有哪些使用場(chǎng)景和注意事項(xiàng)?

    人臉識(shí)別身份核驗(yàn)終端,要看這個(gè)部分靠不靠譜

    使用人臉識(shí)別作為身份核驗(yàn)方式就一定安全系數(shù)高嗎?這還要看這類人臉識(shí)別身份核驗(yàn)設(shè)備使用的
    的頭像 發(fā)表于 04-07 10:33 ?272次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b><b class='flag-5'>身份</b>核驗(yàn)終端,要看這個(gè)部分靠不靠譜

    如何使用PN7制作具有5180字節(jié)UID的身份驗(yàn)證mifare plus?

    我正在開發(fā)的讀卡器使用 PN5180。 我想讀取 7 字節(jié) UID 的 Mifare Plus ev1 卡 但 PN5180數(shù)據(jù)表僅解釋了4字節(jié) UID 卡。 如何使用 PN7 制作具有 5180 字節(jié) UID 的身份驗(yàn)證 mifare plus 請(qǐng)幫我怎么做。
    發(fā)表于 04-01 06:37

    人臉識(shí)別技術(shù)的優(yōu)勢(shì)與劣勢(shì)

    人臉識(shí)別技術(shù)的優(yōu)勢(shì) 1. 高度準(zhǔn)確性 人臉識(shí)別技術(shù)在理想條件下可以達(dá)到非常高的準(zhǔn)確性。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,現(xiàn)代人臉
    的頭像 發(fā)表于 02-06 18:23 ?1555次閱讀

    人臉識(shí)別技術(shù)的算法原理解析

    在數(shù)字化時(shí)代,人臉識(shí)別技術(shù)已經(jīng)成為身份驗(yàn)證和安全監(jiān)控的重要手段。這項(xiàng)技術(shù)的核心在于算法,它們能夠從圖像中提取關(guān)鍵信息,并與數(shù)據(jù)庫中的信息進(jìn)行匹配,以識(shí)別個(gè)體。 1.
    的頭像 發(fā)表于 02-06 17:50 ?1637次閱讀

    深度識(shí)別人臉識(shí)別有什么重要作用嗎

    深度學(xué)習(xí)人臉識(shí)別技術(shù)是人工智能領(lǐng)域的一個(gè)重要分支,它利用深度學(xué)習(xí)算法來識(shí)別驗(yàn)證個(gè)人身份。這項(xiàng)技術(shù)在多個(gè)領(lǐng)域都有廣泛的應(yīng)用,包括但不限于安全
    的頭像 發(fā)表于 09-10 14:55 ?1083次閱讀

    TMP1827 的 密鑰生成和身份驗(yàn)證機(jī)制

    電子發(fā)燒友網(wǎng)站提供《TMP1827 的 密鑰生成和身份驗(yàn)證機(jī)制.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 09:24 ?0次下載
    TMP1827 的 密鑰生成和<b class='flag-5'>身份驗(yàn)證</b>機(jī)制

    微軟推出企業(yè)版付費(fèi)人臉識(shí)別技術(shù)Face Check

    微軟近日宣布,其先進(jìn)的人臉識(shí)別技術(shù)Face Check已全面向全球企業(yè)客戶開放,標(biāo)志著微軟在身份認(rèn)證安全領(lǐng)域邁出了重要一步。Face Check技術(shù)通過融合用戶手機(jī)自拍與已驗(yàn)證
    的頭像 發(fā)表于 08-14 17:38 ?1558次閱讀

    人員定位發(fā)卡機(jī)智能充電柜,集人臉識(shí)別發(fā)卡充電于一體

    生產(chǎn)了人員定位發(fā)卡機(jī)充電柜,下面為大家詳細(xì)介紹這款設(shè)備。 人員定位發(fā)卡機(jī)充電柜簡(jiǎn)介 人員定位發(fā)卡機(jī)充電柜,是一款集人臉識(shí)別
    的頭像 發(fā)表于 07-24 11:55 ?1553次閱讀
    人員定位<b class='flag-5'>發(fā)卡</b>機(jī)智能充電柜,集<b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b><b class='flag-5'>發(fā)卡</b>充電于一體

    ESP8266使用命令A(yù)T CWJAP_CUR連接wifi,如何增加身份驗(yàn)證時(shí)間?

    我嘗試使用命令 AT CWJAP_CUR 連接 wifi。但是在超時(shí)時(shí)給出響應(yīng),我想知道如何增加身份驗(yàn)證時(shí)間
    發(fā)表于 07-16 07:29

    人臉識(shí)別技術(shù)的原理介紹

    人臉識(shí)別技術(shù)是一種基于人臉特征信息進(jìn)行身份識(shí)別的生物識(shí)別技術(shù)。它通過分析
    的頭像 發(fā)表于 07-04 09:22 ?2761次閱讀

    人臉識(shí)別模型訓(xùn)練是什么意思

    的各個(gè)方面。 人臉識(shí)別技術(shù)概述 人臉識(shí)別技術(shù)是一種生物特征識(shí)別技術(shù),通過分析人臉圖像的特征,實(shí)現(xiàn)
    的頭像 發(fā)表于 07-04 09:16 ?1279次閱讀

    人臉檢測(cè)和人臉識(shí)別的區(qū)別是什么

    人臉檢測(cè)和人臉識(shí)別是計(jì)算機(jī)視覺領(lǐng)域的兩個(gè)重要技術(shù),它們?cè)谠S多應(yīng)用場(chǎng)景中都有廣泛的應(yīng)用,如安全監(jiān)控、身份驗(yàn)證、社交媒體等。盡管它們?cè)谀承┓矫嬗邢嗨浦帲鼈冎g存在一些關(guān)鍵的區(qū)別。本文
    的頭像 發(fā)表于 07-03 14:49 ?2230次閱讀