国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Django與百度AI的人臉識別Web應(yīng)用系統(tǒng)設(shè)計

2024-05-18 17:19:59何曉輝包希日莫
電腦知識與技術(shù) 2024年8期
關(guān)鍵詞:人臉識別

何曉輝 包希日莫

摘要:人臉識別是計算機視覺領(lǐng)域內(nèi)的重要研究方向,在人臉考勤、支付和安保等應(yīng)用環(huán)境中發(fā)揮著關(guān)鍵作用。本文旨在Browser/Server架構(gòu)下,使用Django框架和百度AI開發(fā)一種高效準確的人臉識別Web應(yīng)用系統(tǒng)。通過以視頻流的形式采集人臉圖像,使用Ajax、ORM和MySQL等技術(shù)傳輸和存儲圖像數(shù)據(jù),實現(xiàn)人臉檢測、匹配和特征分析等功能。提供一種可用于應(yīng)用的人臉識別Web系統(tǒng)解決方案。實驗表明,該系統(tǒng)具有一定的人臉識別準確性和可行性。

關(guān)鍵詞:人臉識別;Django;百度AI;Web應(yīng)用;ORM

中圖分類號:TP311? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2024)08-0008-03

開放科學(xué)(資源服務(wù))標識碼(OSID)

0 引言

隨著人工智能技術(shù)的高速發(fā)展和普及,其在社會各界得到了廣泛的應(yīng)用。其中,在計算機視覺領(lǐng)域,人臉識別的應(yīng)用起到至關(guān)重要的作用。傳統(tǒng)的人臉識別系統(tǒng)主要包含以下幾個部分:人臉檢測、錄入、匹配和特征分析[1-2]。從傳統(tǒng)開發(fā)效率和難度的角度上考慮,效率低,涉及很多深層次的人臉識別算法和模型[3],開發(fā)門檻高。在這個生活節(jié)奏快,追求效率的年代,用戶格外注重應(yīng)用的開發(fā)效率和使用感受。因此,對于開發(fā)者而言,高效率開發(fā)一種人機交互的人臉識別Web應(yīng)用系統(tǒng)變得尤為重要[4]。

Django是一個開源、功能強大的Python web開發(fā)框架,遵循MVT(Model-View-Template) 設(shè)計模式,可以幫助開發(fā)者輕松添加和修改功能,為高效開發(fā)Web應(yīng)用提供了保障和服務(wù)[5]。此外,提供了對象關(guān)系映射(ORM) 工具,用于簡化數(shù)據(jù)庫操作的過程。

百度AI中的人臉識別API接口,具有良好的性能和穩(wěn)定性,同時支持多種編程語言、開發(fā)環(huán)境以及SDK文檔。據(jù)LFW測評,其人臉1:1驗證準確度高達99.77%,處于業(yè)界領(lǐng)先水平,單張圖片的特征提取速度達200 ms[6]。

因此,本文主要結(jié)合使用Django框架和百度AI中的人臉識別API接口進行人臉識別應(yīng)用系統(tǒng)開發(fā),實現(xiàn)人臉檢測、錄入、匹配和特征分析等系統(tǒng)功能。

1 需求分析

在企業(yè)、學(xué)校等工作和學(xué)習(xí)環(huán)境中,常常需要進行人臉考勤打卡和出入口掃臉認證等過程。常規(guī)情況下,用戶需下載企業(yè)和學(xué)校的應(yīng)用軟件,在完成用戶信息填寫后,上傳一張用戶的人臉照片,完成人臉錄入、圖像采集、人臉匹配和檢測等流程。此過程煩瑣不便,容易產(chǎn)生因操作不當導(dǎo)致的信息偏差錯誤,造成麻煩。另外,進行人臉檢測時,相關(guān)人臉特征的信息提取率低,識別速度緩慢,用于服務(wù)用戶的人臉特征信息量過少,無法滿足當今社會對信息量的需求。

考慮到上述內(nèi)容存在的問題,系統(tǒng)要在提升用戶使用感受、減少用戶操作難度和步驟、滿足特征信息量的社會需求和提高Web應(yīng)用系統(tǒng)的開發(fā)效率的前提下,實現(xiàn)人臉錄入、匹配、檢測和特征分析等系統(tǒng)功能,解決人臉特征的信息提取率低、人臉識別速度緩慢等問題,提高Web應(yīng)用系統(tǒng)的交互性和人臉圖像數(shù)據(jù)的傳輸響應(yīng)速度,滿足異步編程的需求。同時,在提升系統(tǒng)開發(fā)效率的同時,選擇安全穩(wěn)定的架構(gòu)模式、開發(fā)工具、框架和技術(shù)。

2 Web應(yīng)用系統(tǒng)設(shè)計

2.1 架構(gòu)設(shè)計

系統(tǒng)采用Browser/Server架構(gòu)模式,使用PyCharm進行系統(tǒng)開發(fā)。前端采用了BookStrap框架、HTML、CSS和JavaScript等技術(shù)。后端使用了遵循MVT設(shè)計模式的Django web開發(fā)框架。系統(tǒng)以視頻流的形式采集人臉圖像,利用AJAX(Asynchronous JavaScript and XML) 異步交互技術(shù)和JSON數(shù)據(jù)交換格式[7],對圖像數(shù)據(jù)進行前后端交互和數(shù)據(jù)傳輸。在圖像數(shù)據(jù)存儲方面,系統(tǒng)使用了Django開發(fā)框架下的對象關(guān)系映射(ORM) 和MySQL數(shù)據(jù)庫。系統(tǒng)架構(gòu)圖如圖1所示。

2.2 流程設(shè)計

系統(tǒng)首先考慮用戶進行常規(guī)的登錄/注冊流程,以補充用戶信息。在Browser/Server架構(gòu)模式下,用戶登錄成功后,可以直接進行人臉錄入,啟動攝像頭,采集人臉圖像數(shù)據(jù)。錄入完成后,用戶可以完成掃臉訪問等操作任務(wù)。

在人臉識別訪問時,系統(tǒng)首先檢測是否存在人臉:若攝像頭前沒有可識別的對象,則檢測失敗;否則檢測成功。進行人臉匹配時,系統(tǒng)查詢和匹配數(shù)據(jù)庫中的信息:若置信評分>95分,則視為匹配成功,并將特征信息等內(nèi)容反饋給用戶;反之,匹配失敗,認為此人員為非系統(tǒng)用戶。系統(tǒng)流程圖如圖2所示。

2.3 初始化AipFace對象

將百度AI中獲取到的App ID,API Key,Secret Key依次寫入到變量當中。圖像數(shù)據(jù)格式為BASE64,初始化AipFace對象client。

appId = "百度AI中的appId"

apiKey = "百度AI中的apiKey"

secretKey = "百度AI中的secretKey"

imageType = "BASE64"

client = AipFace(appId, apiKey, secretKey)

2.4 人臉錄入

初始化操作完成后,使用Django框架下的對象關(guān)系映射(ORM) 對數(shù)據(jù)庫中的數(shù)據(jù)進行操作具有以下優(yōu)勢:減少了SQL語句的編程量,提高了開發(fā)效率,實現(xiàn)了數(shù)據(jù)模型與數(shù)據(jù)庫的解耦[8],提升了應(yīng)用系統(tǒng)的性能[9]。

其中,objects是Django模型中的一個管理器,用于對數(shù)據(jù)庫進行查詢。all()、last()、create()和count()是此管理器的方法。下面通過使用ORM中的方法,對數(shù)據(jù)進行獲取,并調(diào)用Face表和User表內(nèi)的屬性信息。Face表用于存儲進行人臉錄入、檢測等相關(guān)功能的人臉信息,User表則用于存儲相關(guān)的用戶信息。

通過使用`all()`方法,可以查詢Face表和User表中的所有記錄。使用`last()`方法,可以查詢User表中最新的一條記錄。同時,獲取用戶信息(用戶名和密碼)。

reg_message=models.Face.objects.all()

all_message=models.User.objects.all()

user_message=models.User.objects.last()

username=user_message.username

password=user_message.password

Face表中設(shè)計1個group_id字段信息包含4個user_id字段信息的多對多關(guān)系。通過調(diào)用`count()`方法統(tǒng)計Face和User表中的所有實例數(shù)量,可以生成新的group_id和user_id。

group_id=str(reg_message.count()//4)

user_id=str(all_message.count())

之后獲取前端傳輸?shù)膇mageData,調(diào)用addUser()方法完成用戶信息添加。

imageData=request.POST.get("imageData")

reg=client.addUser(imageData,imageType,group_id,user_id)

最后,使用create()方法將新創(chuàng)建的人臉user_id、username、password、group_id、count和userFace(錄入的人臉圖像數(shù)據(jù))信息存儲到Face表中,同時更新count值。

models.Face.objects.create(user_id=user_id,username=username,password=password,group_id=group_id,count=reg_message.count()+1,userFace=imageData)

2.5 人臉檢測與特征分析

檢測時,需使用detect()人臉檢測函數(shù)。函數(shù)參數(shù)分別是前端獲取到的imageData、BASE64編碼的imageType以及options。

result = client.detect(imageData, imageType, options)

在detect()人臉檢測函數(shù)調(diào)用成功的前提下,函數(shù)返回包含人臉檢測結(jié)果的JSON數(shù)據(jù)。其中鍵face_list包含了很多面部特征信息值。本文主要針對年齡、顏值、性別、情緒四類值進行特征分析。因此,需在請求參數(shù)options中,添加一個鍵名為face_field,值為age,beauty,gender,emotion的鍵值對。

options = {"face_field": 'age,beauty,gender,emotion'}

添加后,得以提取出名為face_field的鍵和相關(guān)值,如表1所示是系統(tǒng)所需的用戶面部特征信息。由表可知,可識別對象的年齡是22歲,顏值評分為30.72,性別為男性,情緒穩(wěn)定。

2.6 人臉匹配

匹配時,系統(tǒng)依然使用Django提供的數(shù)據(jù)庫管理器objects和all()方法,all()方法獲取數(shù)據(jù)庫Face表中的所有實例。

mr = models.Face.objects.all()

通過遍歷實例,訪問人臉錄入過程中存儲到`Face`表中的每行人臉圖像數(shù)據(jù)。

for i in range(models.Face.objects.count()):

user_obj = mr[i]

face_list = user_obj.userFace

之后使用match()人臉匹配函數(shù)進行比對匹配,參數(shù)為數(shù)組類型。因此,需將mr1(face_list)和mr2(imageData)作為數(shù)組faceList的值使用。mr2是進行前端人臉匹配時,系統(tǒng)采集到的人臉圖像數(shù)據(jù),用于比對數(shù)據(jù)庫中已經(jīng)錄入好的人臉圖像數(shù)據(jù)mr1。

mr1 = {'image': face_list, 'image_type': imageType}

mr2 = {'image': imageData, 'image_type': imageType}

faceList = [mr1, mr2]

matchResult = client.match(faceList)

match()函數(shù)調(diào)用成功后,將以JSON格式返回`matchResult`結(jié)果,部分內(nèi)容如表2所示。

表2? matchResult結(jié)果

[key value 'error_code' 0 'error_msg' 'SUCCESS' 'result' 'score' 'face_list' ]

error_code=0和error_msg=SUCCESS表示函數(shù)調(diào)用成功,其中鍵result包含score值。系統(tǒng)通過獲取score,來作為系統(tǒng)匹配人臉的評分依據(jù)。在函數(shù)調(diào)用成功的前提下,score達到95分以上視為匹配成功;反之則失敗。

3 系統(tǒng)實驗

在系統(tǒng)實驗前,針對特征信息,本文只涉及年齡、顏值、性別和情緒4個人臉特征值。針對實驗集,實驗選取了年齡范圍為中年、青年、幼年、老年,性別比例1:1,情緒涉及開心、傷心和憤怒的用戶群體對象。本文用于實驗的人臉圖像實驗集如圖3所示。按照從左到右的順序依次命名為face_1、face_2、face_3和face_4。

此外,實驗還需考慮系統(tǒng)在特殊情況下的運行效果,內(nèi)容包括在攝像頭前沒有出現(xiàn)可識別對象的情況和人臉識別匹配失敗的情況。

3.1 錄入實驗

完成常規(guī)用戶登錄/注冊操作后,系統(tǒng)以視頻流的形式,依次錄入上述實驗集中的人臉圖像,以模擬真實用戶的人臉錄入情況。錄入完成后,系統(tǒng)通過Django框架下的對象關(guān)系映射(ORM) ,將用戶ID、用戶信息(用戶名和密碼)、用戶組ID、圖像數(shù)量和圖像數(shù)據(jù)信息,存儲到Face表中,內(nèi)容如表3所示。其中字段userFace中的圖像數(shù)據(jù)以Base64編碼的格式存儲,由于內(nèi)容過多,只展示前幾位。

3.2 檢測和匹配實驗

檢測時,依次完成實驗集對象face_1、face_2、face_3和face_4的人臉檢測訪問。如果檢測到可識別對象,并且匹配成功,系統(tǒng)則反饋可識別對象的用戶特征信息。反之,則提示匹配失敗。表4是通過檢測和匹配人臉圖像實驗集,經(jīng)前端頁面提取到的人臉特征結(jié)果。

從表4中的結(jié)果來看,系統(tǒng)提取到了準確、詳細的用戶特征信息。而面對除實驗集之外的可識別對象時,系統(tǒng)則會提示匹配失敗和沒有檢測到人臉。效果如圖4所示。

4 結(jié)束語

綜上所述,基于Django與百度AI的人臉識別Web應(yīng)用系統(tǒng),在Browser/Server架構(gòu)模式下,使用Ajax和MySQL等技術(shù),實現(xiàn)了人臉錄入、匹配、檢測和特征分析等系統(tǒng)功能。通過對人臉圖像實驗集進行功能實驗,結(jié)合最終的實驗結(jié)果和運行效果來看,系統(tǒng)能夠穩(wěn)定有效地達到預(yù)定目標和效果?;贒jango與百度AI的人臉識別Web應(yīng)用系統(tǒng)具有一定的準確性和可行性,為人臉識別應(yīng)用領(lǐng)域提供了一種解決方案。

參考文獻:

[1] 周激流,張曄.人臉識別理論研究進展[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,1999,11(2):180-184.

[2] 羅佳偉,孫雪峰,李琳.基于百度AI平臺的Web人臉注冊和登錄系統(tǒng)的設(shè)計[J].中國新通信,2018,20(11):73.

[3] 林維訓(xùn),潘綱,吳朝暉,等.臉部特征定位方法[J].中國圖象圖形學(xué)報,2003,8(8):849-859.

[4] 陳曉倩,許孜奕,陸麗,等.基于臉部特征的性別識別[J].數(shù)據(jù)采集與處理,2010,25(5):595-599.

[5] 楊洪濤.基于Django的MVC框架設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2023,19(4):62-65.

[6] 葉陽,顧國民.基于百度API的實時人臉檢測[J].信息記錄材料,2020,21(5):226-227.

[7] 屈展,李嬋.JSON在Ajax數(shù)據(jù)交換中的應(yīng)用研究[J].西安石油大學(xué)學(xué)報(自然科學(xué)版),2011,26(1):95-98,122.

[8] 郭顯娥.Django實現(xiàn)ORM模型數(shù)據(jù)查詢優(yōu)化[J].山西大同大學(xué)學(xué)報(自然科學(xué)版),2019,35(3):27-31,36.

[9] 賀宗平,賀曦冉,秦新國.一種Python ORM框架性能測試分析方法研究[J].現(xiàn)代信息科技,2021,5(6):83-86.

【通聯(lián)編輯:唐一東】

猜你喜歡
人臉識別
人臉識別 等
揭開人臉識別的神秘面紗
人臉識別技術(shù)的基本原理與應(yīng)用
電子制作(2019年14期)2019-08-20 05:43:34
人臉識別技術(shù)在高速公路打逃中的應(yīng)用探討
基于(2D)2PCA-LBP 的人臉識別方法的研究
電子制作(2017年17期)2017-12-18 06:40:55
淺談人臉識別技術(shù)
人臉識別在高校安全防范中的應(yīng)用
電子制作(2017年1期)2017-05-17 03:54:46
巡演完美收官 英飛拓引領(lǐng)人臉識別新潮流
人臉識別在Android平臺下的研究與實現(xiàn)
基于Metaface字典學(xué)習(xí)與核稀疏表示的人臉識別方法
丹江口市| 察隅县| 抚顺市| 门源| 老河口市| 大连市| 噶尔县| 临漳县| 长岭县| 宜昌市| 靖边县| 兴仁县| 屏东县| 靖州| 永清县| 武川县| 贵德县| 海口市| 随州市| 峡江县| 星子县| 大石桥市| 文山县| 金乡县| 萝北县| 九龙县| 永嘉县| 清新县| 巴马| 宁都县| 福泉市| 彰化县| 阿荣旗| 洪泽县| 德州市| 原阳县| 商水县| 田东县| 会同县| 来凤县| 视频|