聶承啟,李 增,左少華,石富文,江錦春
(1.華東師范大學(xué) 通信與電子工程學(xué)院,上海 201100;2.華東師范大學(xué) 物理與電子科學(xué)學(xué)院,上海 201100)
隨著信息科技的不斷發(fā)展,人臉識別技術(shù)愈發(fā)引起社會關(guān)注,應(yīng)用愈發(fā)廣泛[1]。校園中隨處可見具有人臉識別技術(shù)的攝像頭,其已被應(yīng)用于門禁管理與教室中,方便校園安全管理與課堂考勤[2-5]。張立剛等采用人臉識別技術(shù)進行礦井人員的唯一性檢測,確保入井人員的信息真實、準(zhǔn)確[6]。在智能交通方面,人臉識別技術(shù)可方便安保人員識別、管控在逃人員,提高了身份驗證效率[7-10]。在智能家居領(lǐng)域,大多通過物聯(lián)網(wǎng)技術(shù)采集、檢測環(huán)境信息,獲取并保存視頻[11],尚未進行實時對象檢測和人臉識別。本文通過OpenCV和深度學(xué)習(xí)構(gòu)建一個包括對象檢測、人臉識別和微信消息發(fā)送功能的視頻監(jiān)控系統(tǒng),以保障家庭安全。硬件選用樹莓派、Picamera攝像頭和英偉達(dá)TX2,系統(tǒng)搭建簡單,運行穩(wěn)定,成本較低,可接入智能家居系統(tǒng),提高房屋的安全監(jiān)控等級。
本系統(tǒng)由客戶端(Client)、服務(wù)器(Server)、手機端等組成。客服端與服務(wù)器采用Linux系統(tǒng),客戶端可以布置多個監(jiān)控并由其獲取各處視頻。ImageZMQ庫將獲取的視頻發(fā)送至服務(wù)器,經(jīng)過服務(wù)器的視頻幀處理模塊處理后得到相應(yīng)的結(jié)果。之后對結(jié)果進行分析,按照不同的程序運行。
當(dāng)出現(xiàn)檢測對象時,拍照并保存照片,進行人臉識別后將結(jié)果發(fā)送至手機微信指定聯(lián)系人。家居領(lǐng)域的視頻監(jiān)控采用局域網(wǎng)通信,設(shè)備簡單,成本低,對象檢測精度高,系統(tǒng)運行穩(wěn)定。系統(tǒng)流程如圖1所示。
圖1 系統(tǒng)流程
樹莓派3B+:搭載64位4核ARM Cortex-A53 CPU,擁有無線網(wǎng)卡、藍(lán)牙及充足的接口用于外設(shè)與串口間通信??赏ㄟ^40 pin GPIO接口進行擴展板加載,方便后續(xù)功能擴展。
Picamera:樹莓派匹配的攝像頭具有豐富的Picamera API數(shù)據(jù)庫,通過Python語言可直接調(diào)用,縮短項目開發(fā)周期。
英偉達(dá)Jetson TX2:配有NVIDIA PascalTMGPU,各標(biāo)準(zhǔn)接口便于功能擴展,實現(xiàn)邊緣位置的AI計算。
樹莓派與Picamera構(gòu)成客戶端,用以獲取檢測地的視頻圖像,在同一局域網(wǎng)下將服務(wù)端IP地址綁定到客戶端,通過VidoeStream獲取視頻流,借助ImageZMQ庫進行視頻幀傳輸。為區(qū)分視頻流來源地,客戶端采用Socket模塊獲取樹莓派Hostname,將其標(biāo)記到所傳輸?shù)囊曨l幀上。將TX2用作PC服務(wù)器,對接收的視頻流進行檢測、計算與顯示。如圖2所示,將客戶端攝像頭布置于所需場景中,例如臥室、客廳與家門前等,將獲取的監(jiān)控視頻流通過局域網(wǎng)發(fā)送至服務(wù)器進行處理與顯示。服務(wù)器對視頻流中的對象進行檢測識別,將結(jié)果發(fā)送至手機微信指定聯(lián)系人。
圖2 硬件結(jié)構(gòu)
ImageZMQ基于ZMQ(ZeroMQ)構(gòu)建,ZMQ是分布式系統(tǒng)中使用的高性能異步消息傳遞庫,是使用率較高的消息傳遞系統(tǒng)之一。在構(gòu)建使用OpenCV通過網(wǎng)絡(luò)傳輸實時視頻的系統(tǒng)時,需要專注于以下2方面:
(1)高吞吐量:來自視頻流的新幀快速進入;
(2)低延遲:當(dāng)攝像機捕獲幀后立即分發(fā)到系統(tǒng)中的所有節(jié)點。
ZMQ側(cè)重于高吞吐量和低延遲類應(yīng)用。ImageZMQ與OpenCV兼容,能夠?qū)崟r傳輸數(shù)據(jù),且運行穩(wěn)定可靠,同時還具有易安裝等優(yōu)點。
在服務(wù)端接收到所有客戶端傳送的視頻幀時,通過OpenCV調(diào)用blobFromImage函數(shù)對圖像進行預(yù)處理,并設(shè)置相關(guān)參數(shù),為后續(xù)模型分類做準(zhǔn)備。通過對網(wǎng)絡(luò)圖片數(shù)據(jù)集進行預(yù)先訓(xùn)練,得到caff深度學(xué)習(xí)模型文件,其中caffemodel和prototxt文件用于目標(biāo)對象檢測,本系統(tǒng)目前僅支持對狗、人和車的檢測。服務(wù)端PC可以通過調(diào)整對象檢測置信度來控制檢測精度,在對各自樹莓派視頻幀進行檢測后,將檢測結(jié)果以字典的形式存放,當(dāng)出現(xiàn)目標(biāo)物時利用OpenCV對目標(biāo)使用方框標(biāo)記,同時將檢測結(jié)果標(biāo)記到各自的視頻幀上。每個樹莓派均獨立運行,相互解耦,以便于后續(xù)節(jié)點的調(diào)整。通過調(diào)整PC端顯示窗口的長和寬來容納接收的視頻幀,以實時動態(tài)顯示視頻。
為達(dá)到人臉識別的目的,當(dāng)檢測結(jié)果中出現(xiàn)人物時,需對其進行識別處理。由于拍攝角度固定,而人物在移動,因此需要對大量視頻幀進行同步識別處理,避免無用視頻數(shù)據(jù)占用計算資源和空間,形成延遲。通過編寫shell腳本添加啟動項,按規(guī)定的間隔周期清理內(nèi)存,防止存儲的圖片超出固有容量。本系統(tǒng)通過增加人臉檢測功能,進而有效控制待檢測視頻幀數(shù)量,以提高后續(xù)識別效率,降低延遲。
3.3.1 人臉檢測
在檢測結(jié)果出現(xiàn)人物時,本地服務(wù)端保存當(dāng)前視頻幀,通過Redis將圖片路徑發(fā)布到指定通道,由人臉檢測程序獲取路徑對其進行檢測。同樣由預(yù)先訓(xùn)練的caffemodel模型和prototxt文件進行檢測,通過設(shè)定的置信度進行精度控制。只有當(dāng)檢測結(jié)果滿足要求時,才會進行后續(xù)的人臉識別流程,否則拋棄當(dāng)前圖片,檢測下一幀圖片。
3.3.2 人臉識別
需要建立人臉識別數(shù)據(jù)集,通過程序調(diào)用攝像頭拍取一定數(shù)量的照片,將圖片分類后建立圖片數(shù)據(jù)庫,如圖3所示。此外,還需通過網(wǎng)絡(luò)獲取其他人物圖片建立陌生人類別。
圖3 數(shù)據(jù)集示例
(1)人臉特征向量提?。翰捎妹娌繖z測器進行圖像面部定位。使用深度學(xué)習(xí)方法對人臉數(shù)據(jù)進行特征提取,生成面部描述的128維特征向量,與對應(yīng)的標(biāo)簽以字典格式序列化保存到pickle文件中。
(2)訓(xùn)練人臉識別模型:獲取所有人臉特征向量后,安裝scikit-learn機器學(xué)習(xí)庫,采用支持向量機(SVM)進行訓(xùn)練。將訓(xùn)練獲取的模型和標(biāo)簽以pickle文件保存在本地文件夾。
(3)人臉識別:通過對人臉特征向量的提取與模型的訓(xùn)練,獲取圖片人臉識別模型,服務(wù)端PC將經(jīng)過人臉檢測篩選的圖片路徑發(fā)送至人臉識別模塊。將待識別圖片進行面部定位后,提取對應(yīng)的特征向量,將其輸入到訓(xùn)練得到的模型進行比對,設(shè)置識別置信度參數(shù)閾值,以獲取最高的匹配度及相應(yīng)的標(biāo)簽名稱。之后將標(biāo)簽與匹配度標(biāo)記在圖片上,顯示在公屏。
當(dāng)運行服務(wù)器程序時會自動彈出微信登錄二維碼,方便用戶使用網(wǎng)頁版微信。在實驗室中搭建2個客戶端,運行程序后服務(wù)端接收視頻幀并顯示,圖4所示為無人時的視頻監(jiān)控畫面,可通過視頻窗口標(biāo)簽得知監(jiān)控地點與對象檢測結(jié)果。無人時顯示“car:0. person:0. dog:0?!?/p>
圖4 服務(wù)端視頻監(jiān)控畫面
當(dāng)攝像頭中出現(xiàn)檢測對象時,會進行類型分類與數(shù)目統(tǒng)計,并標(biāo)記在視頻窗口。圖5所示為2人同時出現(xiàn)在pilivingroom2攝像頭中的檢測結(jié)果,即“car:0. person:2.dog:0。”出現(xiàn)檢測對象后,保存此視頻幀,并進行面部檢測與人臉識別。圖6所示為人臉識別結(jié)果,其中l(wèi)i的識別概率為99.87%,nie的識別概率為87.68%。對象檢測與人臉識別準(zhǔn)確率較高。系統(tǒng)檢測到對象時,會通過網(wǎng)頁版微信Itchat庫將結(jié)果發(fā)送至指定聯(lián)系人進行實時提醒。圖7所示為微信發(fā)送監(jiān)控結(jié)果。
圖5 視頻監(jiān)控中人物出現(xiàn)的畫面
圖6 人臉識別結(jié)果
圖7 微信發(fā)送監(jiān)控結(jié)果
本系統(tǒng)為家居安全提供了有效的視頻監(jiān)控,可與智能家居系統(tǒng)平臺對接,通過增加客戶端樹莓派實現(xiàn)對目標(biāo)地的監(jiān)控,具有很強的兼容性和擴展性。同時還增加了人臉識別功能,可通過微信將監(jiān)控結(jié)果實時發(fā)送至指定聯(lián)系人。系統(tǒng)硬件結(jié)構(gòu)簡單,運行穩(wěn)定,識別準(zhǔn)確率較高,后續(xù)可進一步做系統(tǒng)優(yōu)化與功能擴展,以滿足更廣泛的視頻監(jiān)控需求。