基于深度学习的家庭异常监控终端

2021-12-14 02:47郭子芊陈江涛麦伟健刘佐濂
物联网技术 2021年12期
关键词:树莓人脸识别人脸

郭子芊,陈江涛,麦伟健,宁 琳,刘佐濂

(广州大学 电子与通信工程学院,广东 广州 510006)

0 引 言

随着社会老龄化的不断加剧,老龄人口比例上升,老人独自在家的情况增多。而青壮年往往忙于工作,无暇照顾独自在家的老人。独自在家的老人面对非法入侵时往往不能及时响应。此外,高龄老人由于身体机能的下降或自身疾病的影响,易在家中摔倒[1]。针对这类现象,设计一款基于深度学习的家庭异常监控终端很有必要。该终端以树莓派为核心控制系统,将监控图像数据上传至服务器。服务器对图像数据进行人脸识别和摔倒检测,判断画面中是否出现陌生人脸或是家庭成员不慎摔倒的情况,并将异常情况反馈至客户端APP,向用户发送报警信息,从而保护家庭成员的人身安全与家庭财产安全[2]。

1 系统总体硬件设计

监控终端包括摄像头模块、树莓派终端、云服务器、人脸识别算法、摔倒检测算法和客户端APP。总体架构如图1所示。

图1 总体架构

监控终端采用树莓派作为核心控制部分。树莓派是一款基于ARM的微型电脑,其系统基于Linux,具有适配多种深度学习框架的特点,且满足系统对数据传输能力的高要求,可保证图像数据上传的流畅性和稳定性[3-4]。本监控终端将摄像头录到的实时图像经树莓派上传至云服务器,确保信息传输的高效性[5]。服务器通过人脸检测算法检测图像中是否出现人脸,若出现人脸则进行人脸识别,判断该人员身份,若为未知人员,则向客户端APP发送报警信息。同时,服务器还会通过人体检测算法检测图像中是否出现人体,若出现人体则进行骨架提取和摔倒检测,若有人员摔倒且在一定时间内未站起,则向客户端APP发送报警信息。

2 系统软件设计

监控终端软件包括:人脸检测算法、人脸识别算法、骨架提取算法和客户端APP。软件流程如图2所示。

图2 软件流程

2.1 使用MTCNN网络实现人脸检测

受树莓派硬件资源所限,树莓派无法达到对人脸检测的实时性与高准确性要求,因此需要利用服务器强大的计算能力,构建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识别,以降低需要判别的图像数量,减少计算时间,得到准确的人脸检测结果。

2.2 基于FaceNet网络的人脸识别

传统基于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网络中进行处理,并与数据库中的数据进行对比,判断是否为同一人。

2.3 摔倒检测

本系统使用基于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衡量该系统,取最大值对应的参数组合作为最优解。现实生活中,可根据应用场景自行选择阈值。训练结果如图7所示。

图7 训练结果

摔倒检测结果如图8所示。本服务器实现摔倒检测的流程:使用Lightweight-Openpose架构进行骨架检测,再使用Fully Connection Layer对骨架图片进行摔倒识别,判断是否摔倒。

图8 摔倒识别结果

2.4 客户端APP

当家中出现陌生人或家庭成员不慎摔倒等异常情况时,服务器会将现场图像传输至客户端APP并发送报警信息,用户可通过移动端APP监控家中情况。客户端APP检测、报警界面如图9所示。

图9 客户端APP检测、报警界面

3 结 语

本文设计的家庭异常监控终端通过人脸检测和摔倒识别技术,有效缓解了家庭安全问题,在监测入户区域和监护家庭成员安全等方面均有良好的应用前景。经测试,本监控终端能够及时响应家中出现陌生人或有人员摔倒等异常情况,并向客户端APP发送报警信息,使得用户能够实时掌握家中的异常情况,达到了预期设计效果。

猜你喜欢
树莓人脸识别人脸
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
基于树莓派的骑行智能头盔设计
三国漫——人脸解锁
基于树莓派的远程家居控制系统的设计
响应面法优化红树莓酒发酵工艺
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人
基于K-L变换和平均近邻法的人脸识别