“守卫者”智能行车守护系统
2019-03-28孙世若王天琪张淼
孙世若 王天琪 张淼
摘 要:智能行车守护系统具有疲劳驾驶监测、酒驾预防和儿童安全防护三大功能,可全方位保障行车安全。疲劳驾驶监测模块基于主流的OpenCV计算机视觉库开发,采用基于Dlib机器学习库的人脸检测模块,运用SVM特征分类方法,实现驾驶员驾驶状态的精准判别和疲劳驾驶的预警防范。酒驾预防模块运用高灵敏度酒精传感器对驾驶员酒精含量进行精准检测,基于酒精含量检测结果对汽车总线发出相应的逻辑指令,通过总线控制汽车组件完成相应操作,实现酒精含量的强制检测和酒驾的事前预防。儿童安全防护模块利用红外传感器判断发动机关闭后车内是否留人,车内留人时,实时监测车内温度、氧气含量,实现车内环境的综合判断,环境异常时,通过向汽车总线发送逻辑指令进行报警和智能解救,消除儿童滞留车内的隐患。作品以ARM开发板为硬件基础,采用基于Linux内核的操作系统,具有极高的车载应用潜质,使用更加方便高效,弥补了当前技术的不足,致力于为驾驶员营造更安全的驾驶环境。
关键词:机器学习;计算机视觉;Linux;ARM;多传感器模块;多进程通信
1 作品简介
“守卫者”智能行车守护系统具有疲劳驾驶监测、酒驾预防和儿童安全防护三大功能模块,可多角度开展行车安全防护,开创了安全行车系统的新模式。
团队选取ARM作为硬件基础,采用基于Linux内核的操作系统,使作品具有开源、可移植性强等特点,便于在车载平台上推广应用。此外,系统操作简单,便于使用。
2 方案设计及功能
2.1 疲劳驾驶监测
疲劳驾驶监测模块用于实时监测驾驶员的驾驶状态。疲劳驾驶监测模块以主流的OpenCV计算机视觉库进行开发,采用基于Dlib机器学习库的人脸检测模块对人脸及检测部位进行精确捕获,运用SVM特征分类方法,建立左右眼开阖库,以精确判定驾驶员的驾驶状态。当系统判断驾驶员进入疲劳驾驶状态时,通过向汽车总线发送逻辑指令,控制汽车相应组件,进行危险预警并采取相应防范措施:首先通过语音提示告知驾驶员并提醒其尽快停止驾驶;语音提示一段时间后,若驾驶员并未采取制动措施,则通过喇叭报警、开启双闪灯等方式,对周边车辆进行预警,降低疲劳驾驶引发交通事故的概率。
目前,该模块已实现疲劳驾驶状态的精准判别及语音提示功能,并可依据监测结果向汽车总线发送相应的逻辑指令;实现喇叭报警、开启双闪灯等操作需要将系统与实际汽车总线连接,涉及汽车总线的硬件改造,需与汽车厂商合作,依靠专业技术实现。
2.2 酒驾预防
酒驾预防模块用于在发动汽车前对驾驶员进行酒精含量的强制检测并实现酒驾的事前预防。酒驾预防模块通过嵌入高灵敏度酒精传感器实现对驾驶员酒精含量的精准检测,并通过适当的改造,使汽车总线控制点火开关。仅当酒精检测结果合格时,向汽车总线发送开启的逻辑指令,使驾驶员可用钥匙发动汽车。当驾驶员未进行酒精含量检测或检测结果超标时,则无法使用钥匙发动汽车。
目前,该模块已实现酒精含量检测及检测结果分析功能,可依据检测结果向汽车总线发送逻辑指令。开启系统后的自动检测功能还在研发调试阶段,对于汽车发动的实际控制需要对汽车的点火开关进行改造,同时涉及汽车总线的硬件改造,需与汽车厂商合作实现。
2.3 消除儿童滞留安全隐患
儿童安全防护模块用于儿童滞留车内时安全隐患的消除。在发动机关闭后,儿童安全防护模块会利用红外传感器判断发动机关闭时车内是否留人,车内留人时,通过车内温度、氧气含量监测实现车内环境的实时综合判断,环境异常时,通过向汽车总线发送逻辑指令,控制喇叭、车窗等组件进行报警和智能解救,消除儿童滞留车内的潜在危险。
目前,该模块已实现红外探测和温度检测,并可依据传感器检测结果,向汽车总线发送相应逻辑指令,实现对喇叭、车窗等汽车组件的逻辑控制;氧气含量检测目前还在调试阶段,对汽车组件的实际控制涉及硬件改造,需与汽车厂商合作完成。
2.4 系统整体设计
本系统采用多模块、多进程同步处理方式,具有提高多核处理器利用率、方便程序调试和维护、提高系统稳定性等优点。父进程负责维护子进程,进程间通信采用命名管道方式。
疲劳驾驶监测模块由疲劳驾驶监测进程执行,一旦发现驾驶员处于疲劳驾驶状态立即向日志记录进程发送信号(SIGUSR2)。日志记录进程在未接收到信号时处于阻塞状态,一旦接收到信号(SIGUSR2),便立即向本地日志文件写入“drive fatigue”并记录本地时间,同时向语音提示进程发送信号(SIGUSR1)。语音提示进程接收到信号(SIGUSR1)后播放疲劳驾驶警告语音。
酒驾预防模块和儿童安全防护模块由串口通信进程处理。STM32单片机获取各传感器数据并由串口将数据发送到嵌入式系统。串口通信进程负责接收和处理接收到的数据,并将判定的逻辑结果通過文件系统输出到相应的文件中,同时向数据库服务进程发送信号(SIGUSR1)和数据。数据库服务进程接收到信号后读取数据,并将数据发送到本地或远程MySQL数据库中。
3 可行性分析
疲劳驾驶模块采用的处理器架构为双核ARM Coretx-A72+四核ARM Cortex A53,性能与移动端设备类似,能够在保持一定帧率的情况下完成人眼开阖状态的检测。若在车载部分采用性能更好的处理器,则可进一步提升模块处理速度,缩短延迟时间,模块性能还将有更大提升,开发潜力巨大。
疲劳驾驶模块采用的机器学习算法在未来有广阔的前景以及发展空间,并且可通过增加训练样本、优化算法来提高检测准确性。
利用开发板丰富的接口,可读取酒精传感器、温度传感器等数据,同时,系统基于Linux内核,便于开发、设计算法,对返回至系统的传感器检测结果进行分析处理,设置酒精含量、车内温度、氧气含量等安全阈值,进行超阈值情况下的报警,实现酒驾预防和儿童安全防护功能。
4 性能优势
疲劳驾驶监测模块采用基于机器视觉的检测方法,主要通过视频图像处理技术实时监控驾驶员的眼睛变化情况,综合判断驾驶员是否处于疲劳驾驶状态。相较于基于生理信号的检测方法,此方法无需接触驾驶员身体,不会影响驾驶;同时,随着处理器性能的提升,模块可以达到更高的检测频率,相较于基于驾驶行为的检测方法,具有更低的误判率,更具发展潜力。
酒驾预防模块通过嵌入高灵敏度酒精检测传感器实现对驾驶员酒精含量的精准检测。当驾驶员不进行酒精检测或酒精检测结果超标时,驾驶员无法发动汽车。通过酒精检测结果对点火开关的控制,实现了酒驾的事前防范,从源头制止酒驾行为,弥补了目前交警抽测的不足;此外,该模块可实现酒精含量的强制检测,有效防止目前车载酒精检测仪人为弃用现象的发生,具有极高的推广价值。
儿童安全防护模块通过多种传感器获取数据,对车内环境进行综合判断,通过汽车总线控制车内必要的硬件设备,全方位消除儿童滞留时的潜在安全隐患。填补了目前市面上针对此问题的技术空缺。
5 创新点
5.1 基于机器学习的疲劳驾驶检测
区别于传统的生理信号检测,疲劳驾驶模块采用SVM特征分类方法,建立左右眼开阖库,能够更精确地判定驾驶员是否处于疲劳驾驶状态,弥补了目前疲劳驾驶检测技术的不足。同时,疲劳驾驶模块采用了基于Dlib机器学习库的人脸检测模块,能够有效对人脸及检测部位进行精确捕获,可提高系统目标识别的可靠性。
5.2 借助汽车总线实现对汽车组件的控制
系统基于各模块数据分析结果,通过向汽车总线发送相关逻辑指令,控制车内必要的硬件设备,实现危险驾驶状态的报警、酒精含量的强制检测、车内环境异常时对儿童的智能解救等操作。
5.3 消除儿童滞留隐患
通过多种传感器获取数据,对车内环境进行综合判断。通过CAN总线控制车内必要的硬件设备,全方位消除儿童滞留时的潜在安全隐患,填补该领域的技术空白。
5.4 高效安全的系统平台
基于Linux内核的操作系统具有安全高效、可移植性强等特点,便于在PC端进行程序开发。对用户权限的控制机制可防止用户随意篡改系统预设功能及数据。
5.5 多模块的硬件设计
系統硬件设计基于多模块、多传感器并行的思想,集成度高,通过设置检测模式判定功能,对不同实际环境采用不同的检测和处理方案,提高系统应变能力并有效降低功耗。
6 市场前景
6.1 应用前景
可与汽车厂商合作开发产品,由团队提供软件技术,汽车厂商完成汽车总线及相关组件的硬件改造,并完成系统的车载内嵌,借助高性能芯片,进一步提升系统处理速度,优化系统性能。这一发展方向中,可尤其重视与长途运输汽车厂商的合作,由于长途运输行业的特殊性,使得本系统更具应用和统一推广价值。
当产品具有一定的市场普及度和较高的行业认可度后,可与交管部门合作,对某一地区的车辆进行系统的统一安装,通过联网获取车辆驾驶行为记录,依据记录对危险驾驶行为进行惩处,实现疲劳驾驶、酒后驾驶的统一监管。
6.2 技术发展前景
机器学习极具发展潜力。随着技术的不断革新,疲劳驾驶监测模块的性能也将获得更大的提升空间,驾驶状态的监测和判别精度将进一步提升,依据这一技术原理,也可开发更多智能功能,丰富系统模块。
借助汽车总线实现对汽车组件的控制,可实现许多强制功能。随着系统各模块对汽车总线逻辑控制度的提升,系统可开发出更多基于检测结果的相关控制功能。
与AI芯片厂商以及互联网公司合作,使用专门针对机器学习、具备强大并行计算与浮点运算的电路,从硬件层面全方位提升运算速度,实现更高效率的疲劳驾驶检测,使得整套系统性能大幅提升。
随着数字图像处理技术的发展及相关技术的融合,可研发基于面部信息或虹膜信息的身份识别技术,为驾驶员建立面部ID,开发基于面部ID的防盗、智能启动等功能模块。