DMS(Driver Monitor System)是指驾驶员监控系统,又称驾驶员疲劳检测系统、行为分析系统。DMS系统最开始的应用是监控驾驶员的状态,以防止驾驶员疲劳,分神等危害驾驶过程的行为发生。随着机器视觉技术的发展,现在DMS系统的功能已经十分丰富,支持疲劳驾驶检测、分心驾驶检测、司机视线检测、手势识别(与车机交互)、人脸识别(解锁、个性化设置)、表情识别等功能。简单来说随着边缘计算的算力提升,基于机器视觉来实现的功能越来越丰富。
疲劳检测
疲劳驾驶的危害不言而喻,尤其是公共汽车、泥头车、卡车等大型车辆。从我们主观感受来看,判断一个人是否疲劳,也就是这个人是否打哈欠了,是否闭眼了。在机器视觉中,就是检测驾驶员是否有闭眼动作和打哈欠动作了,打哈欠也就是张嘴动作。
那么,闭眼和张嘴动作如何识别?目前常用的有两种方法,第一种是人脸landmark,第二种是图像分类。对于眼睛来说,根据眼睛上眼睑、下眼睑,左右眼角的landmark坐标来计算眼睛的开合程度,对于嘴巴亦是如此。使用landmark方法,其优点就是思路比较简单,只需要根据landmark的坐标计算即可,其缺点也显而易见,此算法精度跟landmark定位精度息息相关,如果landmark定位很准,那么最终计算结果就很准。除此之外还可以使用图像分类方法。此类方法对landmark的精度要求不是很高,这里常用方法是收集正负样本,训练一个鲁棒性比较强的分类器来对状态进行判断。直接由分类器来输出最终的结果。
分心驾驶检测
在驾驶过程中,一切注意力不在驾驶上的行为都被称为分心行为。例如,低头找东西,看窗外的风景,接打电话,喝水,等等。所以在分心驾驶检测算法中,就要对这些出现的动作全部检出。对于这些异常情况,可以将其分为两种。例如低头或者看窗外都是跟人头有关,如果能够得到人头姿态角度,那么问题就可以解决;喝水,打电话等动作,都属于动作识别,设计一个动作识别的算法也可以解决。
人头姿态角算法
得到人头姿态角度,一般有两种方法。第一种是上文中提到的landmark,人脸上关键点的坐标全部已知,使用PnP算法可以直接拟合出人头三维角度;第二种是使用标记好的yaw,pitch,roll三个角度的人脸图片直接训练一个小型网络,网络输出层直接回归三个float量,简单粗暴,精度较高,训练数据集直接使用开源人脸数据集,无需标注。
动作识别算法
在DMS应用中,一般需要识别出打电话动作,喝水动作,抽烟动作,一般有两种比较简单的方法。第一种是将此类的动作识别视为目标检测问题,例如打电话识别,就将手机视为待检目标,喝水检测就将水杯视为待检目标。这种方法思路很简单,但是有一个缺点就是,例如DMS摄像头装在汽车A柱,司机右手打电话,这时候成像画面中是看不到手机的,所以这种场景下检出率不高。另一种方法是将动作识别视为单帧图像分类任务,采集多种动作行为下的图片,人工标注监督信号进行训练,使用分类器判断最后的动作分类。
视线检测
司机在驾驶过程中,其注视方向,也是一个值得关注的问题。注视方向不但反应驾驶习惯,还可以判定视野范围,辅助责任认定。
随着机器视觉的快速发展,DMS系统能够实现的功能也越来越多,DMS也成为车载电脑的必备功能之一。