汽车驾驶任务的隐马尔可夫模型识别方法研究

汽车驾驶任务的隐马尔可夫模型识别方法研究

一、Introduction

自动驾驶汽车经过了几十年的发展,是目前国内外汽车行业中的重要研究方向。自 动驾驶汽车的智能化需要车辆能够有类“人”的行为,在决策策略上可以满足人的心理 需求。人在驾驶过程中,会根据自身对交通规则和道路结构化的认知确定交通级的驾驶 任务,针对不同的驾驶任务采取不同的决策策略。识别交通级的驾驶任务能够在车辆的 驾驶历程中自动获取每种驾驶任务的行驶过程数据,是研究人在每种驾驶任务下的决策 行为特点的前提。

自动驾驶检测算法有以下几种:

  1. 深度学习和强化学习算法:这些算法利用大量的驾驶数据(例如车辆的传感器数据、GPS数据等)进行训练,以识别和预测可能的驾驶任务。
  2. 基于传感器和机器视觉的算法:这些算法利用车辆上的传感器(例如雷达、激光雷达(LiDAR)等)和机器视觉技术来检测和识别车辆周围的环境,包括其他车辆、行人、交通信号等。
  3. 基于模型预测控制的算法:这种算法利用模型预测控制(MPC)技术,根据车辆的当前状态和预测未来的状态,来制定最佳的驾驶策略。
  4. 基于人工智能的算法:这些算法利用人工智能技术,例如神经网络、决策树等,来建立自动驾驶汽车的决策和控制模型。
  5. 基于模式识别的方法

这些算法的应用和发展,对于提高自动驾驶汽车的性能和安全性具有重要意义。然而,由于自动驾驶汽车的复杂性,需要不断地研究和改进这些算法,以满足实际应用的需求。此外,还需要解决算法的可扩展性、实时性和鲁棒性等问题。

基于模式识别的方法:

首先可以分为两种:

  1. 监督分类:这种方法是学习已标注数据的特征,得到由输入数据到分类结果的映射规律。需要已知识别模型库或各种模式的集合,根据数据特征和先验知识进行识别分类,识别分类的结果存在于已知的模型库或集合中。
  2. 无监督分类:这种方法是学习非标注数据的规律,不需要预先知道模式类别,而是根据统计规律的相似性自动识别分类。

本文提到的模式识别方法主要有以下几种:

  1. 结构模式识别:这种方法通过分析输入对象的结构关系进行识别。
  2. 统计模式识别:这种方法基于统计学习理论,通过建立统计模型,对输入数据进行分类和识别。
  3. 神经网络模式识别:这种方法通过模拟人脑神经网络的运作方式,建立神经网络模型进行识别分类。
  4. 模糊模式识别:这种方法基于模糊数学理论,通过模糊逻辑和模糊集合的方式进行识别分类。
  5. 模板匹配模式识别:这种方法通过建立模板,将待识别对象与各个模板进行比较,选出相似程度最高的作为该对象的识别结果。

这些方法在多个领域都有广泛的应用,如手势识别、文字识别、语音识别等。

驾驶任务模式识别方法研究现状:

本文提到的驾驶任务识别方法主要有以下几种:

  1. 支持向量机:支持向量机是一种有监督的学习方法,通过求解一个超平面实现二值分类。它在人脸识别、说话人识别和手写孤立字识别等方面有着广泛的应用。在车辆行为识别中,支持向量机也被用于识别车辆的快速掉头、大半径转弯等行为,以及车辆换道行为的识别。此外,本文还提到了支持向量机在统计模式识别中的应用,它是一种常见的分类器,可以通过计算机进行特征提取,效率高且稳定。
  2. 隐马尔科夫模型:隐马尔可夫模型(HMM)是一种统计模型,可以用于研究时间序列数据。其描述了两个随机过程之间的关系,一是不可见的状态之间的随机过程,二是观测值之间的随机过程,适合模拟状态不可见但状态有对应的观测的随机过程。而通过隐马尔可夫模型可以实现对车辆左转弯、右转弯、超车和直行的意图进行识别预测。
  3. 贝叶斯网络:贝叶斯网络(BN)是节点与节点之间连接形成的有向、无环的图结构,节点表示事件的发生,有向边表示两个事件先后发生的条件概率,通过先验知识构建起贝叶斯网络结构。利用贝叶斯网络对驾驶行为的识别,往往需要建立起车辆和环境的关系,考虑车辆间的交互行为。如车辆换道过程的行驶速度、换道车辆与周围车辆的速度差、换道车辆与周围车辆的距离等作为观测量,由于这些观测量是连续变化的,因此需要建立贝叶斯网络结构进行识别观测。
  4. 人工神经网络:人工神经网络(ANN)由大量神经元以一定的连接方式形成,模拟人的脑神经对信息进行处理。随着人工智能领域的兴起,对神经网络的研究逐渐加深,在模式识别、生物医学等领域得到广泛应用。如在驾驶模拟器上进行驾驶试验,获取试验数据,选取车辆相对于车道的横向偏移量、横向偏移量的一阶导数、横向加速度、方向盘转角等作为特征参数,以进行神经网络模型的构建,从而对车辆的换道行为进行识别。
  5. 其他方法:利用惯性测量单元(Inertial Measurement Unit, IMU)和全球定位系统
    (GPS)获取车辆运动过程数据,建立了随机森林(RF)、K-最近邻、隐马尔可夫模型、人工神经网络、卷积神经网络等多个模型,识别环岛行驶、左转弯、右转弯、刹车等行为。还有很多······

二、模型建立

1.驾驶任务分析

驾驶员对车辆的操纵是人的操 纵行为,例如对加速踏板、制动踏板、方向盘的操纵;车辆的行驶运动是车辆的行驶行 为,最直接的体现是车辆的速度和方向。驾驶员操控加速踏板和制动踏板改变车辆的速 度,操控方向盘改变车辆的行驶方向,所以,人的操纵行为决定了车辆的行驶行为。人的操纵行为受人的习惯、身体状态、驾车的熟练程度等因素的影响,不同的人在同样的路段上驾车会有不同的操纵行为,即使是同一个 人,每次经过同样的路段,其操纵行为也会有差异,操纵行为的不同导致了车辆行驶行 为的不同。但人的操纵行为受到道路结构化和交通规则的决定,道路结构化和交通规则 确定的情况下,尽管每个人的操纵行为有差异,但总体的趋势是一样的,车辆运动的总 体趋势也是相似的。在车辆的横向运动上,这样的“总体趋势”称为驾驶任务。

本文 的驾驶任务包括左转弯驾驶任务(Turning Left, TL)、右转弯驾驶任务(Turning Right, TR)、掉头行驶驾驶任务(U-Turn, UT)、左换道驾驶任务(Lane Changing of Left, LCL)、 右换道驾驶任务(Lane Changing of Right, LCR)和沿道行驶驾驶任务(Lane Keeping, LK),其中掉头行驶是指车辆在交叉路口处的 U 型弯掉头行驶,沿道行驶是指车辆在小曲率道路的同一条车道上行驶。

在这里插入图片描述

车辆在十字路口处的左转弯行驶过程,每一条行驶路径都是先后经过直线 行驶、转向行驶、直线行驶,只是直线行驶和转向行驶的过程有所不同,不同转向行驶 过程中的轨迹的曲率不同,是“大转弯”还是“小转弯”,这是因为受到影响人的操纵行为的因素的影响,但每种轨迹形态都是完成左转弯的驾驶任务。

若把完成每种驾驶任务的轨迹形态看成是从起点到终点的有向曲线,不同驾驶任务 的轨迹形态有明显区别;以车辆行驶过程的驾驶员操作量为例,完成不同的驾驶任务, 驾驶员操作量信号区别也很明显。如图方向盘转角不同,车辆轨迹也不同:

在这里插入图片描述

在这里插入图片描述

车辆的行驶过程和人类的说话过程是相似的,一个车辆的行驶过程和一段语音过程 都是连续的、随时间变化的。类比语音识别我们发现出车辆的行为和人的语音行为相似。

在这里插入图片描述

鉴于语音识别与驾驶任务识别之间的相似性,我们相应地提出了驾驶任务的识别方式。

​ 1. 以固定长度的时间窗口对行驶 过程进行截取,并将所截取部分的特征向量输入至每个驾驶任务的隐马尔可夫模型,输 出该窗口下的 行驶过程属于何种驾驶任务的子片段。通过不断滑动窗口,可以得到连续 的驾驶任务子片段的输出结果,相同子片段的拼接即可形 成同一种驾驶任务,进而完成 对完整的行驶过程的切分工作。

​ 2. 将每一种驾驶任务看作是一个字,分别建立各自的隐马尔可夫模型,在识别的过程,把一段待识别的行驶过 程的特征向量输入至每 个隐马尔可夫模型,求出最大的概率值对应的驾驶任务。但待识别的行驶过程片段需要以某种方式在整个行驶过程中切分好,该段行 驶过程片段属于驾驶任务中的某一种,这样对驾驶过程的自动化标注才能准确,否则,即使不属于某一驾驶任务的一段行驶过程,在 每个隐马尔可夫模型中也会求得相应的概率值,也会有一个概率值最大的模型对应的驾驶任务作为识别结果,但识别结果和这段行驶 过程并不匹 配。因此需有一种正确分割完整行驶过程的方法来保证识别驾驶任务并自动标注的准确性。

2.隐马尔科夫模型基本理论

马尔可夫链是一种概率统计模型,是在马尔可夫过程的理论基础上形成的。当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性。马尔可夫模型是对马尔可夫过程进行建模,通过状态和状态之间的转移概率表达一个马尔可夫过程。在马尔可夫模型中,状态和观测到的事件能够相互对应,但在更复杂的问题中,随机过程的状态不能直接观测,是“隐藏”的,与可观测的事件无法直接对应起来,但两者之间仍存在一定的联系,这种联系可以通过不可观测的状态和可观测事件之间的概率关系建立,即不可观测的状态到可观测到的事件有一定的概率,这样建立起来的模型即是隐马尔可夫模型

隐马尔可夫模型是一个双重的随机过程,第一个随机过程体现在隐含状态的变化,是隐含状态之间按照一定的概率随着时间的变化发生状态转移的过程,即t时刻的状态 q t q_t qt 到下一时刻的任何一个状态 q ( t + 1 ) q_(t+1) q(t+1)都有一定的转移概率。

在这里插入图片描述

假设在长度为 T 的时间序列中,隐含状态序列为 Q = { q 1 , q 2 , ⋅ ⋅ ⋅ , q T } Q=\{q_1,q_2,···,q_T\} Q={q1,q2,⋅⋅⋅,qT},对应的观测序列为 O = { o 1 , o 2 , ⋅ ⋅ ⋅ , o T } O=\{o_1,o_2,···,o_T\} O={o1,o2,⋅⋅⋅,oT}。一个隐马尔可夫模型由以下五个参数确定:

1.模型隐含状态数 N:一个隐马尔可夫模型包括有限个隐含状态 S。 S = { s 1 , s 2 , ⋅ ⋅ ⋅ , s N } S=\{s_{1},s_{2},···,s_{N}\} S={s1,s2,⋅⋅⋅,sN}。N 为模型隐含状态数

2.隐马尔可夫模型中每个隐含状态 s 都对应着可观测值,所有可观测值构成的集合为 HMM 模型的可观测值 V, V = { v 1 , v 2 , ⋅ ⋅ ⋅ , v M } V=\{v_1,v_2,···,v_M\} V={v1,v2,⋅⋅⋅,vM}

M 为每个隐含状态对应的观测值数目

3.初始状态概率向量 π \pi π ,初始状态概率向量 π \pi π 表示了隐含状态 S 在初始时刻的概率分布
π = ( π i ) π i = P ( q 1 = s i ) , i = 1 , 2 , . . . , N \pi=(\pi_i) \\ \pi_i=P(q_1=s_i),\quad\quad i=1,2,...,N π=(πi)πi=P(q1=si),i=1,2,...,N
其中, π i \pi_i πi表示时刻 t =1 时处于状态 S i S_i Si的概率。

4.状态转移概率矩阵 A 是一个大小为 N × N的矩阵,描述了所有状态之间的概率转移关系:
A = [ a i j ] N × N a i j = P ( q t + 1 = s j ∣ q t = s i ) , i = 1 , 2 , ⋅ ⋅ ⋅ , N , j = 1 , 2 , ⋅ ⋅ ⋅ , N A=[a_{ij}]_{N\times N}\\ a_{ij}=P(q_{t+1}=s_j\mid q_t=s_i),\quad i=1,2,···,N,\quad j=1,2,···,N A=[aij]N×Naij=P(qt+1=sjqt=si),i=1,2,⋅⋅⋅,N,j=1,2,⋅⋅⋅,N
5.发射矩阵 B 也称观测概率矩阵,是一个大小为 N × M的矩阵,描述了状态与观测之间的概率转移关系:
B = [ b j ( k ) ] N × M b i ( k ) = P ( o t = ν k ∣ q t = s i ) , i = 1 , 2 , . . . , N , k = 1 , 2 , . . . , M B=[b_{j}(k)]_{N\times M}\\ b_{i}(k)=P(o_{t}=\nu_{k}\mid q_{t}=s_{i}),i=1,2,...,N,k=1,2,...,M B=[bj(k)]N×Mbi(k)=P(ot=νkqt=si),i=1,2,...,N,k=1,2,...,M
对一个问题采用隐马尔可夫模型建模时,首先要根据实际问题确定模型隐含状态数 N 和可观测值数目 M ,进而求解 π \pi π、 A 和 B 。因此确定了初始状态概率向量 π \pi π 、状态转移概率矩阵 A 和发射矩阵 B 这三个要素,就确定了一个隐马尔可夫模型,三者可由一 个三元组表示:
λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)
其中,由初始状态概率向量 π \pi π 和状态转移概率矩阵 A 确定了隐含的状态序列,由隐含的状态和状态之间的概率转移关系确定了马尔可夫链。发射矩阵 B 确定了隐含状态产生观测值的过程,和隐含状态序列一起形成了观测序列。

一个隐马尔可夫模型包括三个基本问题,分别是评估问题、学习问题和解码问题,而三种问题常见的求解算法分别为前向-后向算法(Forward-Backward)、鲍姆-韦尔奇算法(Baum-Welch )和维特比算法(Viterbi )。

在这里插入图片描述

本文采用隐马尔可夫模型对驾驶任务识别,识别的过程主要采用隐马尔可夫模型的评估问题的解决思路,但在进行识别之前,需要通过训练数据对模型进行训练,得到隐马尔可夫模型的模型参数。因此,本文的研究主要涉及隐马尔可夫模型的学习问题和评估问题。

这里对此三种算法不再进行赘述,接下来我们看本文驾驶任务识别所用到的HMM。

3.基于 HMM 的驾驶任务识别模型建立

基于 HMM 的驾驶任务识别模型的建立流程如图所示:

在这里插入图片描述

本文采用利用汽车驾驶模拟器进行试验,采集车辆行驶过程的数据,进行模型的训练和测试,具体试验方法和数据采集方法将在本文第 4 部分详细介绍

1.选择模型输入的特征参数

在原有数据的 n 维特征选择其中对识别过程价值最大的 m 维特征。首先选择出能表现车辆横向运动状态变化的物理量。车辆运动状态量信号:侧向速度 v 、侧向加速度 a y a_y ay 、横摆角速 度 r ;驾驶员操作量信号:方向盘转角 θ \theta θ 、方向盘转角速率 ω ;车辆位置信息:车辆的 横坐标 X 和纵坐标 Y 。其中,在实际车辆上,车辆运动状态量和驾驶员操作量可以由 CAN 总线、惯性测量单元(IMU)等直接获得或计算得到,车辆位置信息可以通过 GPS 与 IMU 对车辆进行定位获得。

CAN(controller area network)控制器局域网是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线

惯性测量单元IMU由三部分组成:加速度计、磁力计、陀螺仪。
加速度计就是测量三个方向的加速度;磁力计就是测量磁场北极的方位;陀螺仪测量的就是绕三个方向旋转速度:

通过驾驶模拟器得到车辆的运动状态信号:侧向速度 v 、侧向加速 度 a y a_y ay 、横摆角速度 r、方向盘转角 θ \theta θ、车辆运动轨迹的曲率K。

2.模型参数设计与训练

HMM 模型参数选取:

确定将每个驾驶任务的多个试 验样本的特征参数组合形成模型的特征向量;然后将每组特征向量输入至每个隐马尔可 夫模型中,得到每个 HMM 识别模型的模型参数:
λ 1 ——左转弯驾驶任务模型 T L _ H M M λ 2 ——右转弯驾驶任务模型 T R _ H M M λ 3 ——掉头行驶驾驶任务模型 U T _ H M M λ 4 ——左换道驾驶任务模型 L C L _ H M M λ 5 ——右换道驾驶任务模型 L C R _ H M M λ 6 ——沿道行驶驾驶任务模型 L K _ H M M \begin{aligned} &\lambda_1——左转弯驾驶任务模型 TL\_HMM \\ &\lambda_2——右转弯驾驶任务模型 TR\_HMM \\ &\lambda_3——掉头行驶驾驶任务模型 UT\_HMM \\ &\lambda_4 —— 左换道驾驶任务模型 LCL\_HMM \\ &\lambda_5 —— 右换道驾驶任务模型 LCR\_HMM \\ &\lambda_6 —— 沿道行驶驾驶任务模型 LK\_HMM \end{aligned} λ1——左转弯驾驶任务模型TL_HMMλ2——右转弯驾驶任务模型TR_HMMλ3——掉头行驶驾驶任务模型UT_HMMλ4——左换道驾驶任务模型LCL_HMMλ5——右换道驾驶任务模型LCR_HMMλ6——沿道行驶驾驶任务模型LK_HMM
在这里插入图片描述

已知一个隐马尔可夫模型由 5 个参数组成,分别是隐含状态数 N 、可观测 值数目 M 、初始状态概率向量 π \pi π 、状态转移概率矩阵 A、发射矩阵 B 。需要确定隐含 状态数 N 和可观测值数目 M ,并初始化初始状态概率向量 π \pi π 、状态转移概率矩阵 A、 发射矩阵 B ,以此来完成模型的训练过程,进而建立隐马尔可夫模型。

HMM 模型参数设计:

驾驶任务的观测变量是连续变化的,因此发射矩阵 B 需 要能够表示连续型随机变量的概率分布。这里使用了高斯混合模型表达其概率分布特征:
B ( j ) = b j ( o ) = ∑ j M G c j k Γ ( O , μ j k , σ j k ) , 1 ≤ j ≤ N ∑ k = 1 M G c j k = 1 , c j k > 0 , 1 ≤ j ≤ N 其中 Γ —— 多元高斯概率密度分布函数; O ——观测序列; μ ——均值矩阵; σ —— 协方差矩阵; M G —— 高斯混合成分的个数; N —— 隐含状态数; c j k —— 第  j 个隐含状态的第 k 个高斯混合成分的系数, c j k 需要满足下式约束 : B(j)=b_j(o)=\sum_{j}^{M_G}c_{jk}\Gamma(O,\mu_{jk},\sigma_{jk}),\quad1\leq j\leq N\\ \sum_{k=1}^{M_G}c_{jk}=1,\quad c_{jk}>0,1\leq j\leq N \\ 其中 \\ \begin{aligned} &\Gamma\text{ —— 多元高斯概率密度分布函数;} \\ &\text{O ——观测序列;} \\ &\mu\mathrm{——}\text{均值矩阵;} \\ &\sigma\text{ —— 协方差矩阵;} \\ &\begin{aligned}M_G&\text{ —— 高斯混合成分的个数;}\end{aligned} \\ &N\quad——\text{ 隐含状态数;} \\ &c_{jk}\text{ —— 第 }j\text{个隐含状态的第}k\text{ 个高斯混合成分的系数,}c_{jk}\text{ 需要满足下式约束}: \end{aligned} B(j)=bj(o)=jMGcjkΓ(O,μjk,σjk),1jNk=1MGcjk=1,cjk>0,1jN其中Γ —— 多元高斯概率密度分布函数;O ——观测序列;μ——均值矩阵;σ —— 协方差矩阵;MG —— 高斯混合成分的个数;N—— 隐含状态数;cjk ——  j个隐含状态的第k 个高斯混合成分的系数,cjk 需要满足下式约束:

初始状态概率向量 π \pi π 是一个驾驶任务模型中每个隐含状态初始的概率值。状态转移概率矩阵 A 是一个驾驶任务模型中 各个隐含状态之间的转移概率。二者在模型训练之前都需要先设定初始值,初始值的设 定一般对识别结果无太大影响,所以可以任意设定。对隐含状态数为 3 的 TL_HMM、 TR_HMM、UT_HMM 的初始状态概率向量 π \pi π 和状态转移概率矩阵 A 设定相同的初值, 对隐含状态数为 4 的 LCL_HMM 和 LCR_HMM 的初始状态概率向量 π \pi π 和状态转移概率 矩阵 A 设定相同的初值。如下所示:

π 0 − 1 = π 0 − 2 = π 0 − 3 = [ 1 / 1 / 1 / 3 3 3 ] T π 0 − 4 = π 0 − 5 = [ 0.25 0.25 0.25 0.25 0.25 ] T π 0 − 6 = [ 0.5 0.5 ] T A 0 − 1 = A 0 − 2 = A 0 − 3 = ( 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 1 ⁄ 3 ) A 0 − 4 = A 0 − 5 = ( 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ) A 0 − 6 = ( 0.5 0.5 0.5 0.5 ) . \pi_{0_{-1}}=\pi_{0_{-2}}=\pi_{0_{-3}}=[\begin{array}{ccc}1/&1/&1/\\3&3&3\end{array}]^T\\ \pi_{0_-4}=\pi_{0_-5}=[0.25 \ 0.25\ 0.25\ 0.25\ 0.25]^T\\ \pi_{0_-6}=[0.5 \ 0.5]^T\\ A_{0_-1}=A_{0_-2}=A_{0_-3}=\begin{pmatrix}1⁄3&1⁄3&1⁄3\\1⁄3&1⁄3&1⁄3\\1⁄3&1⁄3&1⁄3\\1⁄3&1⁄3&1⁄3\end{pmatrix}\\ A_{0_-4}=A_{0_-5}=\begin{pmatrix}0.25&0.25&0.25&0.25\\0.25&0.25&0.25&0.25\\0.25&0.25&0.25&0.25\\0.25&0.25&0.25&0.25\end{pmatrix}\\ A_{0_{-}6}=\begin{pmatrix}0.5&0.5\\0.5&0.5\end{pmatrix}. π01=π02=π03=[1/31/31/3]Tπ04=π05=[0.25 0.25 0.25 0.25 0.25]Tπ06=[0.5 0.5]TA01=A02=A03= 1⁄31⁄31⁄31⁄31⁄31⁄31⁄31⁄31⁄31⁄31⁄31⁄3 A04=A05= 0.250.250.250.250.250.250.250.250.250.250.250.250.250.250.250.25 A06=(0.50.50.50.5).

HMM 模型参数训练:

本文研究采用 10-fold 交叉验证法对数据样本进行划分,以此来完成对驾驶任务 识别模型的训练和验证。10-fold 交叉验证法将数据样本均分为十份,每次不重复地取 出其中一份作为验证集,其余九份作为训练集,对模型进行十次的训练和验证过程。

通过每个驾驶任务的试验数据对驾驶任务识别模板库的每个隐马尔可夫模型进行 训练。步骤如下:

(1)选择一组数据,计算均值 0 和协方差矩阵  0 ,和其他初始化参数一起初始化 隐马尔可夫模型;

(2)输入当前驾驶任务训练数据,利用前向-后向算法计算观测序列概率;

(3)计算在上述定义的两个概率值 ( , ) t  i j 和 () t  i ,并利用 Baum-Welch 算法对模 型参数进行重估;

(4)根据参数重估结果,计算新的观测序列概率,并判断观测序列概率的值是否 收敛。若不收敛,则迭代进行第(2)(3)步;若收 敛,停止迭代,输出模型参数。 本文研究借助 Matlab 中的 HMM 工具箱,并编写相关程序,完成对各驾驶任务的 隐马尔可夫模型 的训练工作,得到训练后的各个模型的模型参数 λ i = { π i , A i , c i , μ i , σ i } \text{ }\lambda_{i}=\{\pi_{i},A_{i},c_{i},\mu_{i},\sigma_{i}\}  λi={πi,Ai,ci,μi,σi}

训练过程如图所示:
在这里插入图片描述

三、车辆行驶过程分段方法设计

本章讨论的是如何选取分类器模型的输入信号,即车辆行驶过程的分段方法。

利用 HMM 分类器对驾驶任务识别,需要在完整的行驶过程中选取 HMM 的输入信 号,本章分析了现有的基于滑动时间窗口的识别方法存在的问题,提出了一种基于任务特征分段的驾驶任务识别方法,以此将车辆行驶过程按驾驶任务的不同进行分段,并将分段信号作为 HMM 分类器的输入完成每段行驶过程的驾驶任务识别,实现车辆行驶过程的自动分段识别。

识别流程图如下。
在这里插入图片描述

1.基于滑动时间窗口的驾驶任务识别方法

行驶过程分段识别方法分析

基于滑动时间窗口的驾驶任务识别方法目前常被用于车辆换道行为的识别研究中,其流程如图所示:
在这里插入图片描述

该方法对车辆行驶过程的识别过程与连续语音识别的过程相似,首先将车辆的行驶过程划分成小的行驶过程子片段,再按照时间顺序完成对每个行驶过程子片段的识别,每个子片段的识别结果都属于一个驾驶任务,将连续的行驶过程子片段的识别结果进行合并,相同结果的子片段合并在一起形成一段完整的驾驶任务。

隐马尔可夫模型作为该识别方法中的分类器模型,完成对 i 时刻窗口长度为 T w T_w Tw 内信号的识别,其输出的结果为窗口截取的行驶过程子片段的驾驶任务类型。

2.基于任务特征的行驶过程分段方法

在汽车驾驶任务识别中,将一种驾驶任务视为一个字,对每个驾驶任务建立单独的识别模型,形成模板库,通过将车辆完成一段完整驾驶任务行驶过程对应的信号在模板库中进行匹配,得到该段驾驶任务的识别结果,这样可以充分利用一个驾驶任务的信号特征。但这样的识别方法需要保证模型的输入信号恰好是某一种驾驶任务对应的信号,否则,不属于某种驾驶任务的行驶过程也会被识别成某一驾驶任务类型。

下面将介绍如何对车辆的行驶过程按驾驶任务进行准确分段,提取出待识别的驾驶任务行驶过程。

在这里插入图片描述

具体的分段过程中,利用驾驶任务行驶过程信号的波形特征确定沿道段,将其余行驶过程分为转向段,根据 HMM 分类器逐一对转向段进行识别,得到每个转向段的驾驶任务识别结果,完成对车辆行驶过程的分段识别。

本章针对输入HMM模型信号的截取问题,提出了基于任务特征分段的驾驶任务识别方法。

首先,分析了目前常用的车辆行为的识别方法,建立了基于滑动时间窗口的驾驶任务识别方法,在该方法中,以滑动时间窗口的形式截取车辆行驶过程的信号,输入至 HMM 分类器中识别时间窗内的驾驶任务,通过不断滑动窗口,完成对整个行驶过程的识别,并以最终的识别结果形成不同驾驶任务之间的分段点。虽然该方法可以利用局部信息实时识别或预测车辆的行为,但由于不同驾驶任务的转向过程的特征存在局部相似性,不能准确、完整地提取驾驶任务。

其次,考虑到本文研究是在完整的车辆行驶历程数据中识别驾驶任务,本文提出了基于任务特征分段的驾驶任务识别方法。驾驶任务受道路几何结构决定,车辆运动轨迹的曲率在一定程度上也能反映道路的结构特征,因此,该方法根据车辆完成不同驾驶任务的轨迹曲率特征,将车辆行驶过程以沿道段分割为多个转向段,每个转向段为一个完整的待识别的驾驶任务,将其输入至 HMM 分类器,可以完成对转向段的识别。通过对分段结果的比较,本文提出的基于任务特征的行驶过程分段方法可以更准确地完成对行驶过程按不同驾驶任务进行分段。

四、模型验证

通过试验验证了本文提出的基于任务特征分段的驾驶任务识别方法的有效性。 首先,利用汽车驾驶模拟器搭建试验平台,通过试验获取本文研究所需数据,并将试验 数据分为单一驾驶任务数据集和自由行驶数据集。其次,根据单一驾驶任务数据集,以 10-fold 交叉验证法完成了对驾驶任务识别模型的准确性验证,结果表明,本文建立的 驾驶任务识别模板库能够准确地对每种驾驶任务的完整行驶过程进行识别,因此,可以 保证对分段的行驶过程识别的准确性。最后,以单一驾驶任务数据集对基于任务特征分 段的驾驶任务识别方法进行整体验证,本文提出的方法对每种驾驶任务的识别准确率可 以全部达到 88.9%以上,在此结论基础上,完成了对自由行驶数据集中车辆自由行驶过 程的分段识别,可以有效地在包含多个驾驶任务的行驶过程中识别出不同的驾驶任务。

五、总结

这篇论文使用了一种基于隐藏马尔可夫模型(HMM)的驾驶任务识别模型。

首先,根据车辆完成不同驾驶任务的运动特征,以及驾驶任务识别和语音识别的相似性,确定以隐马尔可夫模型作为驾驶任务的识别模型。驾驶任务的识别包括左转弯、右转弯、左换道、右换道、掉头行驶和沿道行驶等。

其次,根据车辆行驶过程中驾驶员操作信号、车辆运动状态信号和车辆位置信息等综合分析,选取方向盘转角、横摆角速度和轨迹曲率作为模型的特征参数,并建立每个驾驶任务的隐马尔可夫模型。这些模型构成了驾驶任务识别模板库,用于驾驶任务的识别。

然后,针对车辆行驶过程的分段提取方法进行研究,提出基于任务特征的分段行驶过程分段方法。由于滑动时间窗口的驾驶任务识别方法无法完整地提取驾驶任务,因此本文提出了一种基于任务特征的分段方法,将独立的驾驶任务行驶过程信号作为模型输入,以便更准确地识别行驶过程中的驾驶任务。

最后,通过驾驶模拟器的试验对本文的驾驶任务识别方法进行验证。根据实验结果,该方法能够有效地进行驾驶任务的识别,从而实现自动驾驶。

总的来说,本文使用隐马尔科夫模型进行自动驾驶的方法主要涉及驾驶任务的识别和行驶过程的分段。通过建立每个驾驶任务的隐马尔科夫模型,以及基于任务特征的分段方法,能够有效地进行自动驾驶,从而实现更加智能的汽车驾驶。

六、展望

(1)本文所研究的驾驶任务是车辆的横向行驶过程,人的决策行为还包括在纵向 运动上的决策,因此,未来工作需要对行驶过程的纵向运动过程展开研究。

(2)本文的沿道行驶是指小曲率道路上的同一车道行驶,若考虑较大曲率的车道, 仅由本车的相关信息不足以区分大曲率的沿道行驶和转弯行驶等驾驶任务,因此,可以考虑增加外界信息作为特征参数。

(3)车辆行驶过程信号为时间序列信号,在行驶过程的分段方法上,可以采用时间序列相似性查询的相关方法进行行驶过程的分段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/149728.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业毕业设计项目推荐10-饮食搭配平台(Go+微信小程序+Mysql)

饮食搭配平台(Go微信小程序Mysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程…

什么是TF-A项目的长期支持?

安全之安全(security)博客目录导读 问题:Trusted Firmware-A社区每六个月发布一次代码。然而,对于生产中的平台,该策略在维护、重要软件修复的向后兼容性、获得最新的安全缓解措施和整体产品生命周期管理方面不具备可扩展性。 开源软件项目&…

【CMU15-445 Part-15】Query Planning Optimization II

Part15-Query Planning & Optimization II Selection Statistics 维护每张表中的基本主要信息也就是tuple数量 N R N_R NR​以及每个属性中不同值的数量 V ( A , R ) V(A,R) V(A,R), N R N_R NR​关系R中的元组数量,单独维护,不能用pag…

【网络编程】UDP数据报套接字编程和TCP流套接字编程

文章目录 1. 网络编程基础1.1 为什么需要网络编程?1.2 网络编程是什么?1.3 概念 2. Socket套接字3. UDP数据报套接字编程3.1 DatagramSocket API3.2 DatagramPacket API3.3 InetSocketAddress API 4. UDP构建服务端客户端(一发一收&#xff0…

Java基于SSM+Vue的平时成绩管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Pytorch之shuffleNet图像分类

💂 个人主页:风间琉璃🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 ShuffleNet是Face(旷视)在2017年发布的一个高效率…

el-date-picker增加默认值 修改样式

预期效果 默认是这样的 但希望是直接有一个默认的当天日期,并且字体颜色啥的样式也要修改(在这里假设今天是2023/10/6 功能实现 踩了坑挺多坑的,特此记录 官方文档 按照官方的说明,给v-model绑定一个字符串就可以了 在j…

【MySQL】基本查询 (一)

文章目录 一. 基础查询二. where条件子句三. NULL的比较结束语 操作如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chinese float default 0.0 comment…

基于SSM的大学生就业信息管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

《Spring Boot入门》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

PyTorch入门之【AlexNet】

参考文献:https://www.bilibili.com/video/BV1DP411C7Bw/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 AlexNet 是一个经典的卷积神经网络模型,用于图像分类任务。 目录 大纲dataloadermodeltraintest 大纲 各个文件的作用&…

软件设计师_数据结构与算法基础_学习笔记

文章目录 6.1 数组与矩阵6.1.1 数组6.1.2 稀疏矩阵 6.2 线性表6.2.1 数据结构的定义6.2.2 顺序表与链表6.2.2.1 定义6.2.2.2 链表的操作 6.2.3 顺序存储和链式存储的对比6.2.4 队列、循环队列、栈6.2.4.2 循环队列队空与队满条件6.2.4.3 出入后不可能出现的序列练习 6.2.5 串6.…

Hive【Hive(六)窗口函数】

窗口函数(window functions) 概述 定义 窗口函数能够为每行数据划分 一个窗口,然后对窗口范围内的数据进行计算,最后将计算结果返回给该行数据。 语法 窗口函数的语法主要包括 窗口 和 函数 两个部分。其中窗口用于定义计算范围…

【计算机网络面试题(62道)】

文章目录 计算机网络面试题(62道)基础1.**说下计算机网络体系结构2.说一下每一层对应的网络协议有哪些?3.那么数据在各层之间是怎么传输的呢? 网络综合4.**从浏览器地址栏输入 url 到显示主页的过程?5.说说 DNS 的解析…

LabVIEW工业虚拟仪器的标准化实施

LabVIEW工业虚拟仪器的标准化实施 创建计算机化的测试和测量系统,从计算机桌面控制外部测量硬件设备,以及在计算机屏幕上显示的类似仪器的面板上查看来自外部设备的测试或测量数据,所有这些都需要虚拟仪器系统软件。该软件允许用户执行所有这…

VL53L5CX驱动开发(1)----驱动TOF进行区域检测

VL53L5CX驱动开发----1.驱动TOF进行区域检测 闪烁定义视频教学样品申请源码下载主要特点硬件准备技术规格系统框图应用示意图区域映射生成STM32CUBEMX选择MCU 串口配置IIC配置X-CUBE-TOF1串口重定向代码配置Tera Term配置演示结果 闪烁定义 VL53L5CX是一款先进的飞行感应&…

总结二:linux面经

文章目录 1、 Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。2、文件权限怎么修改?3、说说常用的Linux命令?4、说说如何以root权限运行某个程序?5、 说说软链接和硬链接的区别?6、说说静态库和动态…

【目标检测】——PE-YOLO精读

yolo,暗光目标检测 论文:PE-YOLO 1. 简介 卷积神经网络(CNNs)在近年来如何推动了物体检测的发展。许多检测器已经被提出,而且在许多基准数据集上的性能正在不断提高。然而,大多数现有的检测器都是在正常条…

1700*C. Number of Ways(贪心前缀和)

Problem - 466C - Codeforces Number of Ways - 洛谷 解析: 首先判断所有数总和是否能被三整除。 之后遍历前缀和数组,如果某个位置的前缀和等于sum/3,则记录。 某个位置前缀和等于sum/3*2则记录答案。 注意由于分成三份,所以同…

Qt 设置软件的版本信息:QMake、CMake工程

本文借鉴了Qt 设置软件的版本信息 - 疯狂delphi - 博客园 (cnblogs.com) 在原文基础增加了CMake工程实现的方法。 Qt设置软件的版本等信息 对于Qt开发的软件,我们如何去方便的查看其软件的版本信息。这里提供了几种方式。 在运行程序期间设置版本信息 大部分的程序…