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