基于Python的车载人脸情绪检测报警系统
2020-06-17王亮亮
王亮亮,苏 蕤,程 昆
(山东商业职业技术学院,山东 济南 250103)
随着城市公共交通网络的成熟及市民环保意识的增强,公交已成为居民出行的首选方式。而自2018年10月28日重庆公交坠江事故发生至今,不到一年半的时间,仅媒体公开报道的乘客恶性干扰驾驶员的事件就多达几十起![1]由此可见,公共交通在为我们带来便利的同时,乘车环境的安全也应引起我们的重视。而处理此类问题时,除了在道德法律层面上对施暴者进行谴责制裁,更重要的是预防。本文旨在介绍为公交车建立的一套安防预判及报警系统——基于Python的车载人脸情绪检测报警系统,实现对运行中的公交车辆实时治安动态监控。
1.系统简介
本系统是基于Python tensorflow环境下实现人脸识别功能,并对图片训练分析,通过树莓派和硬件方面交互。即先检测人脸拍照,再给摄像头一个延时,每隔一定的时间进行拍照,拍照之后立即输入模型中进行分析判定表情,一旦表情级别达到阈值报警的级别,就会自动语音播报和报警[1][2][3]。另一方面上传到后台服务器,由后台服务器人员进一步判定,并做出相应的处理[5]。
图1 基于Python的车载人脸情绪检测报警系统流程框图
图2 硬件连接图
2.系统结构
本系统由智能硬件、后台端和Android端组成,对应物联网技术传感层、网络层和应用层,是人工智能技术的典型应用。通过树莓派项目开发板连接摄像头,对司机座区每10秒钟进行一次抓拍,将图片储存在指定的文件目录内,然后通过特定的算法对图片中司机的面部特征进行计算分析识别,并最终得到一个情绪值(angry危险、happy开心、normal正常),并返回给安卓app端进行直观显示。若是检测到司机此刻面部情绪值为angry(危险),一方面触发车厢内安装的蜂鸣器和危险报警灯,起到提醒司机和全体乘客的作用;另一方面会将危险信息推送到手机app端,此时车辆监管人员可以通过app连接摄像头,查看车厢内和司机的情况,并及时进行处置,从而全面保障行车安全。(若计算出司机情绪值为happy、normal,安卓端会对应显示绿色、蓝色,表示开心和正常,蜂鸣器不会报警,指示灯则相应的亮起绿灯、蓝灯)[2][3][5]。
2.1智能硬件
本系统基于python程序语言,主要运用了树莓派中的RPi.GPIO插件实现了硬件指示灯与情绪的完美结合,后台通过算法将情绪的结果传到树莓派,树莓派将结果转换成灯的颜色,来展示给用户,当用户的表情是开心时,树莓派会反馈出一个绿色的灯,用来表示识别的结果是开心;当识别的结果为愤怒时,树莓派会反馈一个红灯,以示警告;当识别的结果是正常时,指示灯会变成蓝色。主要硬件包括:树莓派(型号B,无箱式)、摄像头、蜂鸣器、指示灯等。
2.2后台端
后台主要是通过连接传感层的智能硬件,对所抓拍的图片进行处理。首先要通过神经网络对情绪库中的照片进行训练,提取特征后建立情绪分类模型。然后,利用树莓派摄像头采集人脸图像,通过神经网络计算把采集到的表情区分开,识别判断出的情绪值得到相应的结果。整个系统主要通过聚类算法和Tensorflow框架实现。特征提取后对应的分类原则为:对于angry(危险)的判断,主要通过对人嘴部的“扭曲”特征和眼睛的怒视变大从而得出结果;对于happy(开心)的判断,主要通过分析嘴部的弯曲,以及眼睛、眉毛等部位,得出结果;另外,除去这两种结果,系统会分析图像,层层“比对”,不是angry或者happy,则得到normal(正常)的结果[6]。
部分程序设计如图3-9:
(1)摄像头开启
图3 摄像头开启程序
(2)模型训练
图4 神经网络构建程序
图5 训练验证
(3)功能实现
图6 功能实现
(4)效果显示
图7 效果展示(happy)
图8 效果展示(normal)
图9 效果展示(angry)
2.3 Android端
Android端需要进行手机app安装,网络配置区域可以在输入IP地址和端口号后,点连接(或断开)按钮进行网络设置;效果展示区域可以进行效果展示(正常为蓝色,开心为绿色,当检测到愤怒时,会变成红色并发出报警);结果展示区域可以查看当前情绪检测结果;查看区域可以实时查看车载摄像头,了解当前状况[4]。
3.结论
本文从系统功能出发,首先介绍了该系统的智能硬件架构,包括树莓派、摄像头、蜂鸣器和指示灯等,随后又介绍了该系统的软件实现原理,包括基于聚类算法和Tensorflow预测模型的搭建与训练,最后进行了软硬件连接调试并展示了测试结果,表明该系统可快速准确判断目标的情绪状态并作出相应提醒或处理,对于实际应用具有重要的指导意义。
本系统可快速准确判断目标的情绪状态并作出相应提醒或处理,工作过程大致分为三个步骤:一是人脸快速检测与抓拍;二是抓拍数据即时上传至后台进行分析比对;三是分析结果迅速通过指示灯的颜色呈现出来。经多人多次试验表明,该系统的预测准确率可达95%以上,对实际应用具有重要的指导意义。
图10 Android端界面