一种用于监测城轨车辆司机盹睡系统的设计与实现*
2021-07-12杨旭林卢万平王红艳
杨旭林,高 凯,卢万平,王红艳,张 宇
(1 北京纵横机电科技有限公司,北京100094;2 北京地铁运营有限公司地铁运营技术研发中心,北京102208;3 北京地铁运营有限公司运营三分公司,北京100082)
疲劳驾驶直接关系到地铁运营的安全,目前地铁车辆普遍采用单司机值乘,车辆司机操纵时间长,且单岗作业,精神状态至关重要。如何监控司机在运行过程中的状态,对城轨车辆司机在值乘当中标准化作业执行不到位、精力不集中、盹睡等违章行为通过网络或电话形式及时给予提醒纠偏,避免列车发生冒进信号、冲撞甚至撞人等事故,对列车行车安全有着重要的意义。
随着机器视觉技术的突飞猛进,近年来视频分析与识别技术已广泛应用于交通、安防、金融、建筑、医学、军事等领域,有人脸识别、人眼定位以及疲劳状态检测[1-4]等技术。
司机盹睡监测系统采用基于机器视觉的智能图像处理技术,以人脸识别技术和人眼识别技术,通过人眼的开/闭合度等特征并融合人体的姿态和运动特征,如头部姿态的俯仰角信息,从而实现司机盹睡状态的智能识别。当监测到司机有视野偏离、精神不振等现象时,立即实施分级语音报警,在线提醒司机,从而减少因司机精神不专注导致的行车事故发生。
1 系统架构
1.1 系统框架
本系统实现了针对地铁10号线安装司机盹睡监测系统,实现车辆司机盹睡状态智能识别,当监测到司机有视野偏离、精神不振等间断现象时,立即实施分级语音报警,在线提醒司机,使之保持专注状态,并将报警的实时视频无线传输至运营管理部门。
盹睡检测算法主要过程如图1所示:先从视频图像中检测出人脸,根据人脸检测的结果提取出眼睛部位,通过人眼的开/闭合度等特征并融合人体的姿态和运动特征,如头部姿态的俯仰角信息,构建深度学习神经网络分类器进行分类,从而实现司机盹睡状态的智能识别。
图1 算法处理流程
1.2 人脸关键点算法介绍
人脸关键点采用图2所示的网络训练得到一系列的特征图最终输出68个人脸关键点。
图2 训练过程图
这里关于重要的几个关键点作以说明,如图3所示:鼻尖为31,鼻根为28,下巴为9,左眼外角为37,左眼内角为40,右眼内角为43,右眼外角为46,嘴中心为67,嘴右角里为55,左脸为1,右脸为17。头部姿态由方位角,俯仰角和翻滚角表示。
图3 68个人脸关键点
损失函数采用线性回归函数,其中Φ(⋅)为正则化项,ℓ(⋅)是损失函数,采用的是Least-Squares Re⁃gression,求出预测值和真值之间的误差,为式(1):
式中:
基于卷积神经网络的关键点检测技术,能够在复杂环境下稳定地运行,包括不同光照变换、各种姿态、表情以及部分遮挡人脸。在训练的过程中,通过大量训练样本数据使得网络模型能够自主学习各关键点的梯度特征,有监督地学习出形状和纹理的回归模型,计算得到关键点的检测结果。
1.3 疲劳检测算法介绍
将人脸关键点信息,结合头部姿态的俯仰角信息和人眼的开/闭合状态信息,组成68×6的特征向量,再将每帧的特征向量输入到设计的卷积网络中,输出网络提取的feature向量,再将此特征输入到BiLSTM中输出驾驶员的当前状态,如图4所示。例如:专心驾驶,疲劳驾驶或者左顾右盼。
图4 疲劳检测算法流程
通过CNN网络(RPN)产生一系列稀疏的候选框,然后对这些粗粒度的box信息进行分类与回归,以便进一步回归从而得到更加精确的框信息,采用了特征融合操作用于检测网络,有效提高对小目标的检测效果,整个检测网络采用的损失函数为式(2):
预测过程首先根据类别置信度来过滤掉属于背景的预测框和阈值较低的预测框,根据置信度进行降序排列,然后仅保留top-k预测框,最后进行NMS算法过滤掉那些重叠度较大的预测框,从而得到检测结果。
2 系统实现
2.1 盹睡监测系统
选择线路、车辆号、车厢号后,可查询司机室驾驶员历史记录,盹睡分神等记录。如果当前车辆驾驶员出现盹睡分神现象,系统将上传盹睡时间的截图和时间节点。所有故障和报警信息将滚动显示在主页面下方,如图5所示。
图5 城轨盹睡监测系统
2.2 系统组成
本系统由3部分组成:电路硬件板卡,前面板,软件算法(FPGA+ARM)构成。
如图6所示,PS端为ARM处理器,用来进行算法运行以及程序调度和协调,PL端为FPGA,用来进行卷积计算,PS与PL之间通过AXI总线进行通信。其中:
图6 司机盹睡识别卡设计框图
(1)DDR做程序运行时的存储器,SD/SATA作为图像存储介质。
(2)M 12为前面板以太网接口,接入盹睡摄像头。
(3)USB为前面板存储器连接接口。
盹睡监测摄像头是司机盹睡监测子系统的图像采集和语音报警部件,摄像头采用SONY红外,高清2.8 mm CCD图像传感器,盹睡摄像头外形如图7所示。
图7 盹睡摄像头
2.3 软件功能
防盹睡系统具备以下几项功能:
(1)盹睡状态实时识别在线提醒
若发现司机疲劳驾驶在线提醒实施分级语音报警,同时,在图像采集器(摄像头)检测到被遮挡时也会报警。报警均为语音实时报警,具体参数可以通过软件进行设置,见表1。
表1 报警类别及启动条件
(2)数据存储分析
系统监测数据可通过3G/4G/WALN和USB下载、机内存储2种方式保存,并可通过地面分析软件进行分析处理,自动生成退勤凭证和统计报表,管理者可分权限对重点时间区域以及重点人员的工作状态进行检索和分析,针对问题采取管理措施,为安全风险管理提供了重要技术支撑。
(3)车辆休眠
车辆速度小于5 km/h时系统待机休眠,为乘务员停车时的休息提供良好环境。
(4)外部接口功能
通过RS485或Enthernet接入车载PHM系统或TMS系统将报警信息无线传输至车辆运营管理部门或车辆本地报警显示和存储。
2.4 Tensor Flow分布式训练系统搭建
文中建4台高性能服务器作为分布式训练计算机集群,如图8所示,A服务器用于存储参数、共享参数、共享计算;其他3台服务器B、C、D用于并行计算。另外,在实施分布式训练前,模型中集成了对视频数据的增强处理,如数据旋转、反射变换、翻转变换、缩放变换等。
图8 分布式训练计算机集群
构建深度学习模型,对网络的结构进行优化改进。根据需求方给出城轨车辆运行时驾驶室录像,由开发方人工训练出相应的网络模型,具体流程为:在视频中截取相应动作的图片,然后进行人工标注,之后在darknet中迭代训练得到模型,其中影响网络模型的因素有:标注图片的数量和准确度、网络模型结构、训练中的一些参数等。标注图片越多、越精确、越均衡,训练效果越好;网络结构方面,一般来说,越大的网络精度越高,但同时运行速度会越低,具体采用什么网络,需要在训练工程中反复尝试和权衡,最后达到精度和速度同时满足开发需求;训练中的参数,如每批次载入的图片数量,总体迭代次数等,都影响着最后得到的网络质量,需要在训练过程中反复尝试和调整。流程如图9所示。
图9 算法训练流程图
检测阶段,就是将上述训练过程中得到的网络模型应用于实际场景,如图10所示,从摄像头的视频流中截取每一帧图片,将这些图片通过网络模型,可以得到司机目前的动作类别:
图10 检测阶段应用于实际场景流程图
整个网络结构图如图11所示。
图11 网络结构图
其中,除了最后一个detection层之外(detection层结构比较复杂,在FPGA上实现比较困难,本层计算量较小),网络的其他部分都由FPGA部分
实现。
3 结束语
司机盹睡监测装置在车辆运行中实时监测车辆司机的精神状态,并在其出现打盹等状态时,及时分级发出提示报警信号,有效地减少了司机疲劳状态出现的次数和避免了司机盹睡状态的出现,从而将安全管理由结果控制转化为在线实时预防,对地铁运营安全具有十分重要的现实意义,本系统将引领盹睡监测在城轨车辆上的应用和推广的方向,为我国轨道交通安全又增添了一道保障。