基于老年及老年MCI疾病患者驾驶员眼部及瞳孔追踪系统毕业论文
2020-02-16 21:42:00
摘 要
现阶段已经进入自动驾驶高速发展阶段,但是由于法律的限制或是各个其他方面的原因,现阶段的自动驾驶技术仅仅停留在辅助驾驶阶段。而这些辅助驾驶手段主要是为了帮助一些特殊驾驶员,因此此篇论文主要针对于美国密歇根地区的老年驾驶员及MCI患者驾驶员的驾驶辅助设备部分功能进行设计。
本文通过对机器学习眼部识别算法研究,搭建OpenCV框架,通过高斯模糊及直方图均衡方法进行图像处理,并对产生的眼部二位图进行算法设计,最终总结为两个算法图像特征点提取方法与动态追踪方法。基于TRI公司与University of Michigan-Dearborn合作项目采集数据,对老年驾驶员及MCI患者驾驶员进行瞳孔追踪以完成未来驾驶员对于是否需要驾驶辅助设备进行介入。
本次实验设计首先进行了数据采集及数据处理工作,并测试详细比较了所有可能选择眼部识别算法的优劣,最终选择出一个最为合适的眼部识别算法,为了满足实验室对算法运行速度要求,自行进行设计了瞳孔识别算法,并对所有算法进行了详细的阐述工作。
关键词:机器学习;眼部识别;瞳孔追踪
Abstract
Now it has entered the blowout development stage of automatic driving. However, due to the limitation of law and reliability, the application of automatic driving technology at this stage can only stay in the assistant driving stage, especially for the assistant driving equipment of special drivers. This paper focuses on the preconditions of driving aids for elderly and MCI drivers in Michigan, USA.
In this dissertation, through the study of machine learning eye recognition algorithm, OpenCV framework is built, image processing is carried out by Gauss blur and histogram equalization method, and the algorithm design of eye binary image is carried out. Finally, the two algorithms are summarized as image feature point extraction method and dynamic tracking method. Based on data collected by TRI and University of Michigan-Dearborn, pupil tracking was performed for elderly drivers and drivers with MCI to complete future driver intervention on the need for driving aids.
The experimental design compares the advantages and disadvantages of all possible selection algorithms on eye detection in detail through testing, and finally chooses the most suitable algorithm. Then design the gaze tracking algorithm, in order to meet the efficiency limit by the lab, I come up with two new algorithms for it. Then elaborates the algorithms in detail.
Key Words:machine learning; eye recognition; pupil tracking
目 录
摘 要 I
Abstract II
目 录 III
第1章 绪论 1
1.1 研究背景与意义 1
1.2 本文研究内容 1
1.3 本文组织结构 2
第2章 驾驶员瞳孔分析算法综述 4
2.1 瞳孔追踪算法概述 4
2.2 眼部识别算法 4
2.3 瞳孔识别算法 6
2.3.1 瞳孔训练方法 6
2.3.2 图像识别算法 7
2.3.3 动态追踪算法 8
2.4 图像处理算法 8
2.4.1 图像灰度图 8
2.4.2 图像模糊算法 9
2.4.3 图像去噪 10
2.5 本章小结 11
第3章 数据集分析及处理方法 12
3.1 数据采集设备及采集方式 12
3.2 数据统筹与数据同步 14
3.3 数据社会意义 17
第4章 驾驶员瞳孔追踪算法 18
4.1 眼部识别训练方法 18
4.2 瞳孔识别算法设计 23
4.3采集数据运行测试 26
第5章 总结与展望 28
5.1 本文工作总结 28
5.2 未来工作展望 28
5.2.1 Pygaze多平台瞳孔追踪模组 28
5.2.2 Opengazer面部及瞳孔追踪系统 29
5.2.3 Haytham实时专业瞳孔分析软件 29
参考文献 30
致 谢 32
第1章 绪论
1.1 研究背景与意义
根据维基百科定义,自动驾驶汽车(另说机器人汽车,无驾驶参与汽车)是一种能够不在人类操作的干预下,能够自动的适应道路,感知周围驾驶环境变化的车辆。为实现这一功能,车辆一般需要搭载雷达系统,声纳系统以及各种高级自主控制系统。在2018年的10月份,自动驾驶汽车研发公司Waymo已经让其公司研发汽车在完全自动驾驶情况下行驶超过16000000千米,而且这个数字还在以每个月1600000千米的速度增加,现阶段自动驾驶汽车已经成为了热门所在。但是根据《经济参考报》评论:“自动驾驶技术可能给人类交通行为带来颠覆性改变,这就给相关立法提出了诸多问题。”这也是每个自动驾驶参与者正在面临的问题,因此现阶段的自动驾驶更多是下放到辅助驾驶内容,例如残疾人辅助驾驶。
轻度认知障碍(MCI)[1]指的是正常老化过程中和早期老年性痴呆(阿尔茨海默症)的一个过渡阶段,主要表现为轻度的记忆和只能损害。在国外的一个测试当中,作者通过视觉识别记忆损伤作为MCI的潜在早期诊断标志物,通过视觉延迟匹配任务,评估MCI患者的视觉记忆,通过两组轻度AD(阿尔茨海默症)和重度AD患者作为对照组,最终得到的结果MCI患者在视觉记忆上的得分处在两组对照组之间。在美国法律中规定,轻度认知障碍在经过驾驶管理中心认定并通过驾驶员资格考试,在驾驶辅助设备的辅助之下,是可以上路驾驶的,但是他们的眼部认知记忆速度下降。因此,现阶段的自动驾驶辅助驾驶系统,希望首先可以能够进行残疾驾驶员的辅助驾驶,以便能够提升道路参与者安全性以及道路通行效率。而通过眼部行为进行驾驶员的行为判断,是一个现阶段可以采用的得力方式。
眼球识别[2]是一种用于测量焦点(注视位置)或者测量眼球相对于头部进行的移动位置。眼球追踪现在广泛的应用于视觉系统软件及应用当中,它主要是作为一个人机交互系统的输入系统,能够应用在心理学,市场学等领域。现阶段眼神追踪也用于人类辅助设备(眼部控制轮椅或者机械臂)。现阶段英国公司eyedrivomatic已经实现了能够仅仅使用眼睛可以对轮椅进行控制的系统,他们提出的是相应的轮椅改装方案,轮椅只需要有机械化移动系统就可以适应eyedrivomatic系统以实现眼神控制轮椅移动,因此在现阶段技术条件之下,眼神追踪本身有着很大的经济价值。
MCI在国内外有着很大的群体,是老年群体当中的很大的组成部分,为提升老年群体便利性以及交通参与者安全性,一项可靠的第二阶段驾驶辅助系统[3]迫在眉睫。而此系统本身也为未来完全自动驾驶阶段做一项基础工作,因此,此系统本身有着巨大的经济驾驶及社会意义。
1.2 本文研究内容
本文的数据来源是根据Toyota Research Intitution赞助下的University of Michigan-Dearborn TRI项目采集的有关于MCI与非MCI老年驾驶者的车辆以及视频数据作为数据源,利用数据的影像内容进行驾驶员的瞳孔分析来获取当前驾驶员的驾驶状态。并在之后的工作中,和实验室路况危险区域热感分析图结合,获取驾驶员能够安全判断此时道路情况的评估及预测功能[4]。具体研究工作主要包括,基于车内老年驾驶员及MCI驾驶员眼部识别算法,基于已获取驾驶员眼部图像的图像处理算法,相应处理完成图像的瞳孔识别算法。此次毕业设计通过瞳孔作为驾驶员人体特征,完成驾驶行为分析中人体分析的先决条件——瞳孔追踪系统。在系统开发过程中的架构主要包括:
(1)基于车内老年驾驶员及MCI驾驶员眼部识别算法主要是通过OpenCV下的haarcascade[5]中眼部识别库实现,具体是利用每个眼睛的图片进行训练,每张图片会形成多个核(kernel)利用这些核来对眼睛的特征进行训练,并通过cascade分类器和滑动窗口确定疑似眼睛的位置。
(2)基于已获取驾驶员眼部图像的图像处理算法主要通过图像高级形态学(morphology[6])实现,通过图像的分割操作可以实现图像的去噪,进而提升瞳孔识别位置的可靠性。
(3)相应处理完成图像的瞳孔识别算法是采用常用的瞳孔识别方法,霍夫(Hough)方法,方法的主要内容是能够找到对应的圆形结构,由于此次设计没有训练过程,因此需要执行圆形的选择算法来选择最终可信瞳孔位置。
(4)实际使用中主要是进行实时监控,并即时演算,所以OpenCV架构下的眼神追踪系统不能够满足算法的速度需要,因此此次设计在未来的实际使用当中会借鉴Opengazer, Pygaze, Haythem架构,更快更自主的眼神追踪方法。
1.3 本文组织结构
本文主要分为五章,分别进行了图像及眼球识别算法描述,用户端算法及架构描述,UMD-TRI数据描述,以及对此次设计的总结和对未来进行的展望。
第一章从背景及意义,国内外的现状对现在机器辅助驾驶进行分析,对本文的研究内容进行了介绍,说明本文结构。
第二章对基于老年及MCI驾驶员的瞳孔追踪算法进行了描述,包括为实现瞳孔追踪我们首先要实现的条件,对整个算法做出分析。另外是图像处理算法进行描述,由于在识别过程中会受到来自光线,角度等因素的影响,源数据无法直接使用,因此图像需要经过处理。
第三章主要对数据进行描述,主要是为了确保数据的可靠性,科学性,真实性,原创性。数据来自UMD-TRI项目获得,此章主要对此进行分析工作。
第四章设计在实验室条件下使用的架构,主要通过OpenCV方法进行实现,并对此方法进行分析。
第五章为了实现能够在实际条件下在丰田品牌车型当中的使用,我们需要对此软件进行重构以便提高其速度及识别精准度。设计也从网络寻找并组建了几个成熟的架构。
第2章 驾驶员瞳孔分析算法综述
2.1 瞳孔追踪算法概述
视频为基础的瞳孔追踪(video-based eye-trackers)方法是通过电脑的外置摄像头,或者一段视频的主要内容,用以获取对应的瞳孔位置。工业使用中,瞳孔软件识别通过一个前置的红外或者近红外发射装置,用于产生眼睛的康奈尔反射效应(CR),如图2.1所示。而此次设计当中,为了能够实现非实时监测瞳孔追踪,即对现有的视频进行直接的眼神追踪,红外方法显然是无法实现的,所以在此次设计当中,我采用的是通过OpenCV进行面部识别,眼部识别最后进行瞳孔识别的算法,以能够实现对应的视频眼神识别方法。
图2.1 瞳孔追踪
2.2 眼部识别算法
眼部识别因为作为面部识别的一个特征值,在面部识别的过程中是可以产生对应眼部特征点的位置,所以算法可以通过面部识别产生对应的眼部特征点位置进而确定对应的眼睛的位置。
现阶段采用的面部识别方法能够进行直接眼部特征提取的是基于特征脸(PCA)的人脸识别方法,特征脸人脸识别方法首先是要对图像进行压缩,对应产生原始图像数值x的n维向量。获取训练集为p,形成一个大的训练矩阵X[n][p],n代表着是一个图像当中的每一个元素,p代表着训练人脸图像的序号,用每个值减去平均人脸图像,获取误差函数。
紧接着获取它的协方差矩阵,并求解协方差矩阵当中的每个特征值,最大特征值的特征向量反映的是训练图像间的最大差异,相反,特征值越小的向量,反应图像间的差异越小。这产生了一个特征脸的子空间,每一个人脸向量图片都可以投影到子空间中,形成子空间中的一个点并可以产生对应的图像特征人脸[7],如图2.2所示。
图2.2 特征脸
人的眼部识别作为面部识别的一个基础方法,眼部识别是面部识别的一个特征,但是在面部识别中进行眼部特征的提取,也是一个难题,因此在此次眼部识别在当今阶段的识别当中,可以作为一个单独的特征实体作为识别的内容。
现阶段直接进行眼部识别的方法和面部识别方法类似,但是由于眼睛的特征点数量相对于面部识别来说更少,因此在识别过程中会有更多的迷惑因素,特别在被测试者头部移动,导致的眼睛的形态变化相对于面部的形态变化更加剧烈,因此眼部识别相对于面部识别来说,图像处理的过程需要更加复杂的过程。
完成后我们需要对处理后的图片进行投影,我们在投影的过程中可以首先对眼睛可能存在于图像的大致区域进行预估,可以大致获取眼部区域的横坐标。根据横坐标的位置,确定眼部位置,对响应眼部位置灰度进行测值,并设定阈值对眼部区域进行二值化,最终获得眼部区域位置。
2.3 瞳孔识别算法
眼部特征值获取是瞳孔获取的前提工作,而此次设计的核心工作是瞳孔位置的识别。在获取眼部位置的图像之后,在眼部位置图像上面进行瞳孔识别算法。在此次设计采用时(包括实验室阶段和实际应用阶段)主要参考三大类型的算法,分别是神经网络训练方法,图像处理后识别方法,动态追踪图像移动位置方法。
2.3.1 瞳孔训练方法
神经网络训练方法现在已经能够适用于各种形式下的图像识别技术当中,神经网络(Neural Network)是将计算机通过人脑的方式思考问题,对人脑神经元网络方法进行抽象,建立某种简单模型,如图2.3所示。
图2.3 图像卷积操作
因此在瞳孔识别算法中,需要使用已经成立的人脸图像库,能够进行大量的人脸识别训练和瞳孔识别训练,输入是被测试者的眼部图片,输出则是已经池化学习完成的一个个像素图片,用这样的方式进行瞳孔识别的算法。
2.3.2 图像识别算法
图像识别算法主要是通过对已经获得的眼部照片进行处理,通过图像处理算法,例如模糊化处理,去噪,二位法处理,将眼部位置图片简化为一个清晰的,能够适应不同光线环境下的,易于计算机进行识别的图像。现阶段图像识别方法最常使用的就是二位法处理,因此在计算机进行图像处理算法完成后,得到的图像就是一个二位图,对二位图的内容进行判断,其中何种内容是可能对应的瞳孔位置,选出最有可能是眼部瞳孔位置的图像,标记点位位置,建立起对应的坐标点的位置,计算大概瞳孔位置面积,按照人瞳孔占据眼球的大致比例,将对应瞳孔位置通过一个标志标识出来显示在眼球位置上。
在瞳孔识别过程中,现阶段算法常用霍夫圆形算法用于获得一个完整圆形,即瞳孔位置。
2.3.3 动态追踪算法
动态追踪算法是通过已经获得的眼睛图片,因为在眼睛的图片当中,眼睛位置是相对来说处于静止状态的,而眼球相对来说则是处于活动状态的,因此要获取捕捉当前驾驶员的驾驶状态,我们只需要进行眼球转动的捕捉就可以。
获取眼睛图片,在眼部识别过程当中会生成对应的图片,即视频当中的每一帧的内容,处理并捕捉前一帧与后一帧的图片的差别,用以获取当前可能发生动态移动的区域。发生移动的区域,就是人眼的瞳孔区域,或者说是人眼球的眼白区域发生方向相反的移动或者变化,通过眼白区域或者瞳孔区域位置的变化,我们就可以获得瞳孔的相对位置。
2.4 图像处理算法
在获取的TRI数据当中,为了保证获取数据的多样性,数据本身采集过程中经历了不同的光线条件,因此在数据分析过程中我们必须要进行图像处理,如不进行图像处理,图像识别的准确率会大大降低,特别是在瞳孔识别的内容当中。因此此次毕业设计在图像处理算法的选择上,主要考虑了一下几种算法。
2.4.1 图像灰度图
在计算机视觉当中,灰度图[10]是一个常用的图像处理手段,灰度图顾名思义就是将图片变成灰色,而每一个像素点代表的就是相对图像的亮度,这样图像只会留下一些重要的图像信息,而这些图像信息是我们在进行图像处理时所需要的。
一张彩色的图片的像素组成是有红绿蓝(RGB)三种色彩组合而成,每个色彩都有0到255的色彩区域,因此在图像保存的内容当中,我们可以将其抽象成一个python的字典,所有的像素集合序号为一个字典头,而每个元素内部则保存着对应的红绿蓝的整数数字,例如:(255,0,0)即为红色,每个像素都由这样的(R,G,B)组成,最终形成一个大的矩阵区域,而我们在计算灰度的过程当中,由于各种色彩带来的灰度影响各不相同,所以采用以下的公式:
相关图片展示: