基于FaceNet的智能自習(xí)室的設(shè)計與實現(xiàn)*
*基金項目:鄭州工商學(xué)院科研創(chuàng)新項目,項目編號:2022-KYDXS-10
本文引用地址:http://butianyuan.cn/article/202306/447904.htm隨著近些年高校的擴(kuò)招,不斷增加的學(xué)生數(shù)量使校園的公共資源陷入資源緊張和管理混亂的局面。很多高校共自習(xí)室的使用和管理中都面臨著“長期占座”或者“高峰搶座”等問題的困境。本文以鄭州GS 學(xué)院的圖書館公共自習(xí)室實際應(yīng)用為研究背景,設(shè)計研發(fā)一款基于微信小程序前端以及人臉識別技術(shù)的公共自習(xí)室座位預(yù)約及管理系統(tǒng)。從而幫助學(xué)生更合理有效地安排自習(xí)時間,并幫助學(xué)校緩解公共自習(xí)室資源緊缺問題。
1 系統(tǒng)總體設(shè)計
研究生擴(kuò)招,在考研熱潮之下寬敞明亮、學(xué)習(xí)氛圍濃郁的公共自習(xí)室無疑是考研族學(xué)習(xí)的最佳場所。引入公共自習(xí)室座位座位預(yù)約及管理系統(tǒng),希望實現(xiàn)座位共享,提高座位的利用率,緩解座位緊張的問題。本系統(tǒng)共包含了四大功能模塊,如圖1 所示:
圖1 公共自習(xí)室管理系統(tǒng)框架
1) 微信小程序模塊:本模塊主要負(fù)責(zé)提供學(xué)生用戶訪問系統(tǒng)的交互UI。學(xué)生僅需在手機(jī)端關(guān)注圖書館微信公眾號即可進(jìn)入公共自習(xí)室在線預(yù)約系統(tǒng)。通往微信小程序?qū)W生能夠以可視化的方式查看圖書館公共自習(xí)室座位的使用情況。同時還可通過微信小程序?qū)崿F(xiàn)自習(xí)室座位的在線預(yù)約。
2) 后端服務(wù)模塊:后端服務(wù)包含了座位預(yù)約信息的管理;人臉識別模塊中人臉圖庫的管理;學(xué)生學(xué)習(xí)記錄統(tǒng)計;物聯(lián)網(wǎng)模塊邏輯控制,以及其他信息管理功能。該模塊是公共自習(xí)室智能化管理的中樞模塊,負(fù)責(zé)各個模塊中的消息轉(zhuǎn)發(fā)工作。
3) 人臉識別模塊:本模塊是實現(xiàn)公共自習(xí)室智能化無人化管理的核心功能模塊。首先系統(tǒng)通過控制自習(xí)室入口處的攝像頭,采集學(xué)生的面部圖片,然后運(yùn)用FaceNet 模型實現(xiàn)人臉特征提取,隨后比對并將結(jié)果傳送給后端服務(wù)模塊。在由后端服務(wù)程序把控制信號傳輸給物聯(lián)網(wǎng)模塊。
4) 物聯(lián)網(wǎng)模塊:實現(xiàn)智能化管理的硬件實施模塊,根據(jù)后端服務(wù)模塊傳遞的控制信號,分別控制自習(xí)室門口的出入閘機(jī)和放置在自習(xí)室座位上的物聯(lián)網(wǎng)LED小燈。
2 微信小程序模塊設(shè)計與實現(xiàn)
微信小程序作為騰訊公司推出的一款基于微信平臺的移動APP,具有簡單易用、跨平臺、即走即用等特點(diǎn)。因此本系統(tǒng)的用戶UI 交互系統(tǒng)采用了微信小程序進(jìn)行開發(fā)設(shè)計。主要實現(xiàn)了鄭州GS 學(xué)院圖書館公共自習(xí)室座位使用情況的實時可視化的信息展示,包含當(dāng)前座位的狀態(tài)及本座位已有的預(yù)約信息。
自習(xí)室中有8 張大桌子,每張桌子上可安排8 個自習(xí)座位,每個方塊就代表一個自習(xí)座位。白色方塊代表該座位為空閑狀態(tài),無人預(yù)約,單擊此方塊則可以進(jìn)入預(yù)約信息填寫界面。紅色方塊則表示該座位已經(jīng)被預(yù)約或正在使用,點(diǎn)擊此方塊則可以產(chǎn)看座位具體的使用信息,包括預(yù)約的開始時間和結(jié)束時間以及預(yù)約人的基本信息。具體流程如下圖所示:
3 后端服務(wù)設(shè)計與實現(xiàn)
后端服務(wù)主要采用了SpringBoot 框架,實現(xiàn)了整個系統(tǒng)的數(shù)據(jù)傳遞和業(yè)務(wù)邏輯控制。主要的數(shù)據(jù)交互流程包括個人信息,座位信息,控制信號幾部分。首先前端復(fù)制接收用戶控制信號或者收集用戶的數(shù)據(jù),提交到基于SpringBoot 框架的服務(wù)器程序進(jìn)行邏輯處理和數(shù)據(jù)交互。例如登錄模塊由SpringBoot 的control 層接收預(yù)約請求,并接收傳入的用戶名、座位編號、預(yù)約時間等數(shù)據(jù)。然后由service 層負(fù)責(zé)對收集的數(shù)據(jù)進(jìn)行非空或者字符集轉(zhuǎn)換等加工處理。座位預(yù)約數(shù)據(jù)信息的存儲需要通過Mapper 層的Java 接口調(diào)用項應(yīng)的Mapper 文件,完成Java 接口和SQL 語句之間的映射。而本系統(tǒng)的數(shù)據(jù)底層采用MySQL 數(shù)據(jù)庫實現(xiàn)。整個后端服務(wù)采用SpringBoot框架能有利于這個程序的后期維護(hù)。
4 人臉識別模塊的設(shè)計實現(xiàn)
4.1 RetinaFace網(wǎng)絡(luò)
RetinaFace 是一種用于人臉檢測和人臉識別的深度學(xué)習(xí)網(wǎng)絡(luò)模型,由中國科學(xué)院自動化研究所的陳澤民等人在2019 年提出。它采用了一種新穎的多任務(wù)損失函數(shù),可以同時預(yù)測人臉的邊界框、人臉關(guān)鍵點(diǎn)、人臉的姿態(tài)和人臉的人種信息,具有較高的檢測精度和速度。
RetinaFace模型的基本思路是通過將人臉檢測問題轉(zhuǎn)化為一個回歸問題,預(yù)測每個人臉的邊界框、關(guān)鍵點(diǎn)、姿態(tài)和人種信息。模型主要由兩部分組成:特征提取網(wǎng)絡(luò)和人臉檢測頭。
特征提取網(wǎng)絡(luò)采用了ResNet-50 作為骨干網(wǎng)絡(luò),通過提取特征圖來表征不同尺度的特征。檢測頭采用了一種類似于RetinaNet 的方法,對于不同尺度的特征圖,使用多個分支來預(yù)測不同大小的人臉邊界框和關(guān)鍵點(diǎn)。此外,檢測頭還使用了一種人種分類分支,可以用于預(yù)測人臉的人種信息。
4.2 FaceNet模型介紹
圖4 FaceNet網(wǎng)絡(luò)結(jié)構(gòu)
本文使用MobileNet 作為FaceNet 網(wǎng)絡(luò)的主干特征提取網(wǎng)絡(luò),MobileNet 網(wǎng)絡(luò)是專注于移動端或者嵌入式設(shè)備中的輕量級CNN, 相比于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò), 在準(zhǔn)確率小幅度降低的前提下大大減少模型參數(shù)與運(yùn)算量。
圖片batch經(jīng)過深度卷積之后會得到一組人臉數(shù)據(jù)。將得到的數(shù)據(jù)采用L2 歸一化得到128 維人臉的特征矩陣。然后針對圖片的128 位特征矩陣,采用計算歐氏空間距離的方法進(jìn)行人臉相似度的判斷。兩組向量的歐式距離越小說明兩圖相似度越高,反之則相似度越低[2]。設(shè)圖像A 的特征向量集為a(a11,a12,a13...a1n),圖像B 的特征向量集為b(b11,b12,b13...b1n), 則計算兩圖的歐式空間距離的公式如下:
然后通過控制對人臉特征向量之間的歐氏空間距離的閾值,就可以實現(xiàn)對人臉圖像的區(qū)分。
圖5 人臉處理流程
4.3 人臉識別流程
1) 靜態(tài)人臉圖像采集,在用戶注冊該系統(tǒng)時,小程序會調(diào)用移動設(shè)備的攝像頭或者相冊功能,要求用戶提供一張正面的人臉照片。
2) 人臉圖像提取,利用RetinaFace 網(wǎng)絡(luò)進(jìn)行邊框回歸檢測來確定人臉的區(qū)域,并將框選人臉圖像信息錄入本地圖庫。
3) 人臉特征提取,基于本地人臉圖庫運(yùn)用FaceNet網(wǎng)絡(luò)進(jìn)行人臉特征的向量提取,經(jīng)過深度學(xué)習(xí)網(wǎng)絡(luò)會提取到的128 維特征向量矩陣。
4) 存儲人臉特征,將人臉圖像提取的128 位的特征向量存入到數(shù)據(jù)庫。
5) 動態(tài)圖像采集,通過攝像頭終端每間隔3 秒鐘采集時長為一秒的短視頻20f/s,并從中平均抽樣5 禎的圖像作為識別圖片。
6) 提取人臉特征提取,重復(fù)上述(2~3) 步的操作,提取出5 張動態(tài)圖像的特征向量。并進(jìn)行均值計算,得出1 個特征向量矩陣。
7) 載入本地人臉庫,將數(shù)據(jù)表中存放的靜態(tài)人臉特征矩陣以numpy 模塊格式進(jìn)行載入,而人臉信息則封裝入JSON 字符串。
8) 歐式距離計算,將步驟(6) 中得出的特征向量于載入的本地特征矩陣庫中的特征向量運(yùn)用式(1) 計算歐式距離d。
9) 識別結(jié)果輸出, 如果歐式距離d 大于預(yù)訂設(shè)置的閥值則認(rèn)定為匹配失敗則是輸出Unknown,反之d 小于閥值則匹配成功輸出本地庫中的用戶標(biāo)簽信息。
4.4 模型訓(xùn)練
LFW 數(shù)據(jù)集主要應(yīng)用對人臉識別的準(zhǔn)確度的測試上,并采用遷移學(xué)習(xí)的方式對該數(shù)據(jù)集進(jìn)行訓(xùn)練[4]。從數(shù)據(jù)集中隨機(jī)選擇5 000 對由人臉組成的人臉圖片識別對,其中2 500 對的兩張人臉圖片來自于同一個人,另2 500 對的兩張人臉圖片來自于不同的人。測試過程中LFW 隨機(jī)給出1 對照片,詢問被測系統(tǒng)兩張照片是否屬于同一個人,系統(tǒng)正確或錯誤兩種答案。將這5 000對人臉測試的系統(tǒng)答案與真實答案的比值就是人臉識別準(zhǔn)確率。
4.5 閾值測算
真正例率tpr表示測試結(jié)果中通過預(yù)測正確的次數(shù)占所有匹配結(jié)果為真的比值。tp表示模型中匹配結(jié)果為真且預(yù)測也正確的次數(shù),fn為預(yù)測錯誤但匹配結(jié)果正確。表示模型其計算公式如下:
假正例率表述預(yù)測結(jié)果錯誤次數(shù)占所有匹配結(jié)果為真的比例,記作fpr。其計算公式如下:
(3)式中,fp表示模型預(yù)測為真但匹配答案錯誤,tn表示預(yù)測為錯匹配結(jié)果為假的次數(shù)[2]。那么,經(jīng)過對數(shù)據(jù)模型的訓(xùn)練去尋求一個閾值使得tpr盡可能高,fpr盡可能低。本文在閾值區(qū)間 [0,1] 步長為0.01 中尋求最佳閾值,每一次閾值迭代出來的fpr、tpr都記錄下來,畫成一個二維平面圖。以fpr為橫坐標(biāo)、tpr為縱坐標(biāo)的二維平面圖中,最佳閾值應(yīng)該位于最接近左上角的一點(diǎn),那么可以求左上角的(0,1) 點(diǎn)與Roc 曲線的直線最短距離來確定最佳閾值。
5 結(jié)果分析
將測試集進(jìn)行分組輸入給模型進(jìn)行測試。驗證結(jié)果如下:
測試集的準(zhǔn)確率分組測試結(jié)果顯示較接近訓(xùn)練的準(zhǔn)確率,準(zhǔn)確率約為89%,且實際部署使用的過程中會多次驗證。因此實際部署使用過程中產(chǎn)生的誤差可忽略不計。
6 結(jié)束語
本文通過引入智能自習(xí)室系統(tǒng)。以解決傳統(tǒng)自習(xí)室問題,加入FaceNet 網(wǎng)絡(luò)在中低性能的機(jī)器部署時仍有20 幀左右的速度。故有望在實際部署中以低成本解決實際問題。
參考文獻(xiàn):
[1] 劉秀麗,陳銳.基于深度學(xué)習(xí)的人臉識別技術(shù)及其應(yīng)用場景探討[J].黑龍江科學(xué),2021,12(22):12-13.
[2] 李志華,張見雨,魏忠誠.基于MTCNN和Facenet的人臉識別系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2022,45(4):139-143.
[3] 張綠云,馬海榮,岑凱.威基于 FaceNet 的人臉識別研究與實現(xiàn)[J].信息與電腦,2022,10(10):134-136
[4] 董濤,秦勤.基于魯棒最大單純形體積的高光譜圖像快速端元提取[J].電子測量技術(shù),2021,5(44):121-127.
[5] FLORIAN S, DMITRY K, JAMES P. Facenet: a unified embedding for face recognition and clustering [C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Boston: IEEE, 2015:815-823.
(本文來源于《電子產(chǎn)品世界》雜志2023年6月期)
評論