江李悅,洪志雍,石利民,周敏,馮琳
(福州大學(xué)至誠學(xué)院計(jì)算機(jī)工程系,福建 福州 350002)
目前市面上已經(jīng)有智能門鈴是通過APP綁定手機(jī)或者是通過視頻對講等方式應(yīng)用的。這種方式的問題在于,許多小家庭會出現(xiàn)老人和孩子等弱勢群體獨(dú)自在家的情況,這些群體并不是能夠很方便地操作APP和監(jiān)控視頻。本論文旨在專門為這個(gè)群體提供簡單方便的實(shí)行方案,只需要進(jìn)入安全門鈴攝像頭的范圍內(nèi),就會自動(dòng)被門鈴捕獲并進(jìn)行人臉識別,無需任何其他操作,再根據(jù)結(jié)果響應(yīng)不同的提示音。
通過人臉識別,家長可以設(shè)置可信賴人員的人臉庫,當(dāng)孩子獨(dú)自在家時(shí),陌生人按門鈴,只會產(chǎn)生普通的電子門鈴音樂,并不會讓人生疑或者產(chǎn)生尷尬。如果是可信賴家人則產(chǎn)生人工提示音提示家人開門。
對于陌生來訪者,則可以采集圖片,發(fā)送到app上,方便家庭主人添加信任名單。
本項(xiàng)目利用樹莓派開發(fā)板、外置攝像頭、喇叭實(shí)現(xiàn)了基于人臉識別的電子門鈴。在人臉識別部分采用OpenCV的人臉檢測+Dlib的人臉相似度對比技術(shù),針對來訪者進(jìn)行人臉檢測和人臉對比,從而實(shí)現(xiàn)人臉識別。在與用戶的交互中,后端采用Python+Flask+NGINX的框架進(jìn)行開發(fā),前端的交互界面使用Webstorm進(jìn)行Web端開發(fā),以及使用Eclipse編寫app。
圖1 總體技術(shù)方案
OpenCV是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫。它輕量級而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。
本項(xiàng)目選擇基于ARM11的樹莓派(Raspberry Pi)開發(fā)板,內(nèi)置GPU支持108OP高清視頻硬解碼、豐富的接口(包含以太網(wǎng)、USB、HDMI接口),基于Linx操作系統(tǒng)、支持Python語言開發(fā)環(huán)境[1]?;谝陨显?,樹莓派開發(fā)板被廣泛應(yīng)用于教育、工控、機(jī)器人、物聯(lián)國、智能家居等領(lǐng)域[2]。
2.1.1 人臉識別、人臉對比和語音播報(bào)
使用OpenCV的人臉檢測技術(shù)獲取攝像頭拍攝的來訪者照片,然后使用Dlib的人臉相似度對比技術(shù)與已存的安全名單進(jìn)行對比,識別來訪者是熟人還是陌生人,并根據(jù)識別結(jié)果進(jìn)行語音播報(bào)。其中OpenCV的人臉檢測主要通過Haar特征提取算法實(shí)現(xiàn),Dlib的人臉相似度則是通過歐式距離相似度算法實(shí)現(xiàn)。
Haar-like矩形特征是用于物體檢測的數(shù)字圖像特征。這類矩形特征模板由兩個(gè)或多個(gè)全等的黑白矩形相鄰組合而成,而矩形特征值是白色矩形的灰度值的和減去黑色矩形的灰度值的和[3]臉部的特征能夠由矩形特征簡單地描繪。
在獲得矩形特征后,要計(jì)算矩形特征的值。積分圖被定義為坐標(biāo)A(x,y)的積分圖是其左上角的所有像素之和,這樣對每個(gè)像素進(jìn)行少量的計(jì)算得到的“積分圖”可以在相同的時(shí)間里計(jì)算尺度大小不同的矩形特征值,因此大大提高計(jì)算速度[4]。
對于圖像內(nèi)一個(gè)點(diǎn)A(x,y),定義其積分圖ii(x,y)為:
其中i(x′,y′)為點(diǎn)(x′,y′)處的像素值。
坐標(biāo)A(x,y)的積分圖定義為其左上角矩陣所有像素之和[5]。
由此可知,要計(jì)算兩個(gè)區(qū)域像素值之差(即計(jì)算矩形模板的特征值),只需要用特征區(qū)域端點(diǎn)的積分圖來進(jìn)行簡單加減運(yùn)行就可以了。用積分圖的方法可以快速計(jì)算矩形特征的特征值[6]。
歐氏距離相似度算法:歐氏距離是最易于理解的一種距離計(jì)算方法,源自歐氏空間中兩點(diǎn)間的距離公式[7]。
兩個(gè)n維向量a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的歐氏距離:
2.1.2 app和Web端
通過app和web端實(shí)現(xiàn)主人隨時(shí)添加和刪除安全名單里的人員,實(shí)現(xiàn)對安全門鈴的遠(yuǎn)程監(jiān)控,獲取來訪者照片。
2.2.1 通過opencv進(jìn)行人臉檢測,具體過程如下:
(1)通過opencv調(diào)用攝像頭獲取來訪者的照片;(2)調(diào)用opencv庫,使用訓(xùn)練好的人臉識別模型對照片進(jìn)行切割,獲取來訪者人臉部分的圖片;
(3)將切割好的圖片進(jìn)行保存,以待后續(xù)使用。
2.2.2 通過dlib進(jìn)行人臉相似度對比
(1)對安全名單內(nèi)的人臉圖片使用檢測器畫出人臉的68個(gè)特征點(diǎn)
(2)計(jì)算每張圖片的特征
(3)將opencv獲取的來訪者圖片也使用檢測器獲取68個(gè)特征點(diǎn)
(4)通過安全名單的人臉的特征點(diǎn)和來訪者人臉的特征點(diǎn)計(jì)算歐氏距離來獲取安全名單和來訪者的相似度
(5)當(dāng)安全名單中的人臉和來訪者的相似度達(dá)到一定程度時(shí),既視為來訪者為安全名單內(nèi)的人
2.2.3 app和Web端。
通過手機(jī)app軟件實(shí)現(xiàn)人臉數(shù)據(jù)的錄入、來訪者的登記以及鈴聲信息。通過Web端實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)的管理。
本項(xiàng)目所使用的人臉數(shù)據(jù)集來自ibug 300-W數(shù)據(jù)集(https://ibug.doc.ic.ac.uk/resources/facial-point-annota tions/),人臉識別模型是在該數(shù)據(jù)集上訓(xùn)練的[8]。
本項(xiàng)目最終的評價(jià)指標(biāo)是識別速度和準(zhǔn)確度。項(xiàng)目在測試過程中,準(zhǔn)確度非常高,基本沒有出現(xiàn)識別錯(cuò)誤的情況,但是識別的速度還有待提高,目前的識別速度可能需要3-6秒圖2,造成這個(gè)問題主要有以下幾種方面:1. 訓(xùn)練的模型不夠好,不是非常的優(yōu)秀2. 在進(jìn)行人臉識別時(shí)候的參數(shù)沒有設(shè)置好3. 樹莓派性能較弱,運(yùn)算速度不夠快。
圖2 最終測試結(jié)果(部分)
隨著時(shí)代的發(fā)展,現(xiàn)在人們越來越注重安全,對于家里安全的保護(hù)越來越受到重視。在這種情況下,安全門鈴作為保護(hù)家里的第一道防線將會越來越被大眾所認(rèn)可。目前門鈴的推廣還有很大的局限性,而且有些使用上也不太方便,需要人為操作,而我所設(shè)計(jì)的門鈴不需要人為操作,方便老人和小孩等不方便自己操作的人使用,這樣更加智能安全的門鈴肯定會受到更多人的歡迎。