郭子芊,陳江濤,麥偉健,寧 琳,劉佐濂
(廣州大學 電子與通信工程學院,廣東 廣州 510006)
隨著社會老齡化的不斷加劇,老齡人口比例上升,老人獨自在家的情況增多。而青壯年往往忙于工作,無暇照顧獨自在家的老人。獨自在家的老人面對非法入侵時往往不能及時響應。此外,高齡老人由于身體機能的下降或自身疾病的影響,易在家中摔倒[1]。針對這類現象,設計一款基于深度學習的家庭異常監控終端很有必要。該終端以樹莓派為核心控制系統,將監控圖像數據上傳至服務器。服務器對圖像數據進行人臉識別和摔倒檢測,判斷畫面中是否出現陌生人臉或是家庭成員不慎摔倒的情況,并將異常情況反饋至客戶端APP,向用戶發送報警信息,從而保護家庭成員的人身安全與家庭財產安全[2]。
監控終端包括攝像頭模塊、樹莓派終端、云服務器、人臉識別算法、摔倒檢測算法和客戶端APP。總體架構如圖1所示。

圖1 總體架構
監控終端采用樹莓派作為核心控制部分。樹莓派是一款基于ARM的微型電腦,其系統基于Linux,具有適配多種深度學習框架的特點,且滿足系統對數據傳輸能力的高要求,可保證圖像數據上傳的流暢性和穩定性[3-4]。本監控終端將攝像頭錄到的實時圖像經樹莓派上傳至云服務器,確保信息傳輸的高效性[5]。服務器通過人臉檢測算法檢測圖像中是否出現人臉,若出現人臉則進行人臉識別,判斷該人員身份,若為未知人員,則向客戶端APP發送報警信息。同時,服務器還會通過人體檢測算法檢測圖像中是否出現人體,若出現人體則進行骨架提取和摔倒檢測,若有人員摔倒且在一定時間內未站起,則向客戶端APP發送報警信息。
監控終端軟件包括:人臉檢測算法、人臉識別算法、骨架提取算法和客戶端APP。軟件流程如圖2所示。

圖2 軟件流程
受樹莓派硬件資源所限,樹莓派無法達到對人臉檢測的實時性與高準確性要求,因此需要利用服務器強大的計算能力,構建MTCNN網絡(多任務級聯卷積神經網絡)進行人臉檢測。
MTCNN算法采用級聯CNN結構實現了多任務學習[6]。其網絡由P-Net、R-Net以及O-Net子網絡組成,這3個網絡中前者的輸出會作為后者的輸入。MTCNN網絡流程如圖3所示。

圖3 MTCNN網絡流程
2.1.1 P-Net
P-Net的主要目的是生成一些候選框,通過P-Net網絡對圖像金字塔上不同尺度圖像的每個12×12×3區域做人臉檢測。P-Net的輸入為12×12×3的RGB圖像,在訓練時,網絡要判斷該12×12×3的圖像中是否存在人臉,并且給出人臉框的回歸和人臉關鍵點定位。在測試時,輸出只有N個邊界框的4個坐標信息和score,這4個坐標信息已使用網絡人臉框回歸進行校正,score可以看做是分類的輸出,即人臉出現的概率。
2.1.2 R-Net
由于P-Net的檢測比較粗略,因此還需要使用R-Net做進一步優化。R-Net和P-Net類似,不過這一步的輸入是前面P-Net生成的邊界框,不論實際邊界框的大小,在輸入R-Net之前,都需要縮放到24×24×3,以排除大量的非人臉框。
2.1.3 O-Net
進一步將R-Net得到的區域縮放到48×48×3,輸入O-Net。O-Net的結構與P-Net類似,不同之處在于在測試輸出時多了關鍵點位置的輸出。輸入為48×48×3的圖像,輸出包含P個邊界框的坐標信息,score以及關鍵點位置。
從P-Net到R-Net,再到O-Net,網絡輸入的圖像越來越大,卷積層的通道數越來越多,網絡深度隨之增加,人臉識別的準確率越來越高。P-Net網絡的運行速度最快,R-Net次之,O-Net運行速度最慢。系統使用P-Net對初始圖像進行過濾,之后將過濾后的結果交由R-Net進行再次過濾,最后將結果交由O-Net識別,以降低需要判別的圖像數量,減少計算時間,得到準確的人臉檢測結果。
傳統基于CNN的人臉識別方法利用CNN的siamese網絡提取人臉特征,然后利用SVM等方法分類達到人臉識別的目的。FaceNet利用DNN學習從原始圖片到歐式距離空間的映射關系,直接使用兩種圖片的歐式距離來度量人臉相似度[7]。本文選用VGG16作為Deep Architecture構建FaceNet。FaceNet網絡結構[8]如圖4所示。

圖4 FaceNet網絡結構
構建好網絡后,將Center Loss作為損失函數,使用LFW (Labeled Faces in the Wild, LFW)人臉數據庫對網絡進行訓練,借助反向傳播算法進行梯度更新。多次迭代訓練后,選取精度最高的模型作為實現模型。
FaceNet網絡模型會把人臉圖片處理成NumPy可識別的二進制數據,該數據通過與人臉數據庫中所有數據進行歐氏距離的計算,得到相應距離值,該值越小,代表兩張人臉相似度越高。例如,當特征距離小于1時,認為是同一個人;當特征距離大于1時,認為是不同的人。本服務器實現人臉識別的流程:
(1)使用MTCNN進行人臉檢測;
(2)將所檢測的人臉輸入FaceNet網絡中進行處理,并與數據庫中的數據進行對比,判斷是否為同一人。
本系統使用基于Lightweight-Openpose+Fully Connection Layer的架構進行視頻流摔倒檢測。Lightweight-Openpose即輕量級Openpose架構,速度相比原Openpose更快,但精度卻相差無幾,有利于提高監測系統的實時性,同時使系統保持較高的識別準確率。使用Fully Connection Layer對骨架圖片進行摔倒識別,之后進行輔助判斷,進一步提高識別精度[9-10]。
2.3.1 構建數據集(Fall/Normal)
Fall數據集如圖5所示。獲取從摔倒狀態開始到結束的每一幀骨架圖作為Fall數據集,考慮到攝像頭位置的不同,Fall數據集中包括摔倒時各角度的圖片幀,使系統魯棒性更優。Normal數據集如圖6所示。Normal數據集包含了人體正常行走或其他非摔倒動作的骨架圖。將該數據集按8∶1∶1的比例劃分成訓練集、驗證集和測試集,以進一步訓練網絡參數。

圖5 Fall數據集

圖6 Normal數據集
2.3.2 模型訓練
為適應不同的應用場景,該系統設置了摔倒檢測閾值fall_threshold,取值范圍為[0,1],閾值越低,摔倒敏感度就越高,但容易造成誤測,即查全率(Recall)較高;閾值越高,誤測比例會相應降低,但容易造成漏測,即查準率(Precision)較高。使用F1_score衡量該系統,取最大值對應的參數組合作為最優解?,F實生活中,可根據應用場景自行選擇閾值。訓練結果如圖7所示。


圖7 訓練結果
摔倒檢測結果如圖8所示。本服務器實現摔倒檢測的流程:使用Lightweight-Openpose架構進行骨架檢測,再使用Fully Connection Layer對骨架圖片進行摔倒識別,判斷是否摔倒。

圖8 摔倒識別結果
當家中出現陌生人或家庭成員不慎摔倒等異常情況時,服務器會將現場圖像傳輸至客戶端APP并發送報警信息,用戶可通過移動端APP監控家中情況。客戶端APP檢測、報警界面如圖9所示。

圖9 客戶端APP檢測、報警界面
本文設計的家庭異常監控終端通過人臉檢測和摔倒識別技術,有效緩解了家庭安全問題,在監測入戶區域和監護家庭成員安全等方面均有良好的應用前景。經測試,本監控終端能夠及時響應家中出現陌生人或有人員摔倒等異常情況,并向客戶端APP發送報警信息,使得用戶能夠實時掌握家中的異常情況,達到了預期設計效果。