法律状态公告日
法律状态信息
法律状态
2020-06-16
授权
授权
2019-09-24
实质审查的生效 IPC(主分类):G06K9/00 申请日:20190530
实质审查的生效
2019-08-30
公开
公开
技术领域
本发明涉及自动驾驶控制领域,特别是一种基于CNN-LSTM的自动驾驶控制方法。
背景技术
随着电动汽车产业的兴起以及人工智能技术的火热发展,AI技术在智能驾驶方向表现出了极大的价值与潜力,而仿照人脑工作模式被设计而生的神经网络,更是凭借其强大的性能,以及广泛的适用性受到各界追捧。
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化特征,例如像素和音频进行学习,有稳定的效果,且对数据没有额外的特征工程要求。
长短期记忆网络(LSTM)是循环神经网络的一种,它在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用的结构被称为细胞(cell)。一个cell当中被放置了三扇门,分别叫做输入门、遗忘门和输出门。一个信息进入LSTM的网络当中,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符的信息则通过遗忘门被遗忘。由此使得LSTM具有记忆长期及短期信息的能力,从而能够用来解决具有长期依赖的时序性问题。
CNN-LSTM结合可以提取路况的时间和空间域特征,训练后可以得到全面可靠的自动驾驶算法。
现有技术一,专利号为CN201810730555.X,现有技术一的缺点,第一,输入数据只有自车车速、前车车速、自车加速度、车间距四个特征,难以表征复杂的驾驶路况;第二,输出数据只有油门和踏板,无法控制车辆转向,只能用于简单跟车。
发明内容
为解决现有技术中存在的问题,本发明提供了一种基于CNN-LSTM的自动驾驶控制方法,解决了以往方法由于路况复杂多变,依靠传统穷举式的自动驾驶算法,无法涵盖所有路况的问题。
本发明采用的技术方案是,一种基于CNN-LSTM的自动驾驶控制方法,包括以下步骤:
S1:通过实车驾驶或行车录像或模拟驾驶系统与驾驶台架结合的方式,以相同的采样频率,采集图像数据和驾驶员的驾驶信息;
S2:基于c++,python语言,结合openCV库,利用Tensorflow框架自动将图像数据提取到感兴区域,并规范为统一尺寸,驾驶图像数据整理为N×4的二维张量,并作为训练标签Label
Label=[[ac0>0>0>0]
···
···
[acn>n>n>n]]
其中,ac代表油门开度,br代表制动踏板开度,st代表方向盘转角,ge代表挡位,n代表样本序号;
S3:搭建CNN-LSTM神经网络,利用google Tensorflow框架根据参数搭建模型,其中,CNN部分由5个卷积层,4个池化层,2个全连接层组成;LSTM部分由10-300个LSTM单元组成;
S4:将驾驶图像数据作为输入,司机驾驶信息数据作为Label,进行CNN-LSTM神经网络模型训练,采用均方误差函数MSE作为损失函数,设置指数衰减学习率Lr,利用梯度下降优化器,直至均方误差函数收敛;
S5:将训练好的模型嵌入到实车或模拟驾驶系统中,根据摄像头采集到的图像,输出驾驶命令,完成控制。
优选地,S1的相同采用频率为10-30Hz或根据实验条件选取更适合的频率,S1图像数据为以帧为单位的图片;驾驶员的驾驶信息为油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
优选地,S3的参数表示为:
输入图像:统一尺寸,3通道
卷积层1:卷积核3×3,步长2,相同填充,ReLU激活;
池化层1:2×2,步长2;
卷积层2:卷积核3×3,步长1,相同填充,ReLU激活;
池化层2:2×2,步长2;
卷积层3:卷积核3×3,步长1,相同填充,ReLU激活;
池化层3:2×2,步长2;
卷积层4:卷积核3×3,步长1,相同填充,ReLU激活;
池化层4:2×2,步长2;
卷积层5:卷积核3×3,步长1,相同填充,ReLU激活;
全连接层1:4096个神经元,tanh激活;
全连接层2:1024个神经元,tanh激活;
且各层均设置随机遗忘,遗忘率0.8,以防止过拟合;
LSTM:10-300个LSTM单元,步长10-300;
输出层:2维张量,1×4,分别为预测的油门踏板开度ac,制动踏板开度br,方向盘转角st,以及挡位信息ge。
优选地,S4的均方误差函数MSE的计算公式为
Lrepo=Lr0*Decayepo-1
式中,Pred为训练过程中的预测结果,是与Label相同大小的2维张量,i,j为行列的坐标;n为批量大小;Lr0为初始学习率,Lrepo为当前学习率,Decay为衰减率,epo为迭代次数,训练过程中的衰减,之后开始迭代训练,次数设定为100。
本发明基于CNN-LSTM的自动驾驶控制方法的有益效果如下:
1.本发明采用的数据集来源广泛,易于获取。
2.本发明采集的路况信息全面,透彻,CNN可以深度挖掘图像的空间特征,LSTM可以深度挖掘路况的时间特征,保证此网络能够做出最准确可靠的判断。
附图说明
图1为本发明基于CNN-LSTM的自动驾驶控制方法的神经网络结构示意图。
图2为本发明基于CNN-LSTM的自动驾驶控制方法的学习率衰减示意图。
图3为本发明基于CNN-LSTM的自动驾驶控制方法的误差收敛示意图。
图4为本发明基于CNN-LSTM的自动驾驶控制方法的总流程图。
图5为本发明基于CNN-LSTM的自动驾驶控制方法的实施例1的神经网络结构示意图。
图6为本发明基于CNN-LSTM的自动驾驶控制方法的实施例1的损失函数收敛示意图。
图7为本发明基于CNN-LSTM的自动驾驶控制方法的实施例2的神经网络结构示意图。
图8为本发明基于CNN-LSTM的自动驾驶控制方法的实施例3的神经网络结构示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1至图4所示,一种基于CNN-LSTM的自动驾驶控制方法,包括以下步骤:
S1:通过实车驾驶或行车录像或模拟驾驶系统与驾驶台架结合的方式,以相同的采样频率,采集图像数据和驾驶员的驾驶信息;
S2:基于c++,python语言,结合openCV库,利用Tensorflow框架自动将图像数据提取到感兴区域,并规范为统一尺寸,驾驶图像数据整理为N×4的二维张量,并作为训练标签Label
Label=[[ac0>0>0>0]
···
···
[acn>n>n>n]]
其中,ac代表油门开度,br代表制动踏板开度,st代表方向盘转角,ge代表挡位,n代表样本序号;
S3:搭建CNN-LSTM神经网络,利用google Tensorflow框架根据参数搭建模型,其中,CNN部分由5个卷积层,4个池化层,2个全连接层组成;LSTM部分由10-300个LSTM单元组成;
S4:将驾驶图像数据作为输入,司机驾驶信息数据作为Label,进行CNN-LSTM神经网络模型训练,采用均方误差函数MSE作为损失函数,设置指数衰减学习率Lr,利用梯度下降优化器,直至均方误差函数收敛;
S5:将训练好的模型嵌入到实车或模拟驾驶系统中,根据摄像头采集到的图像,输出驾驶命令,完成控制。
本实施方案的S1的相同采用频率为10-30Hz或根据实验条件选取更适合的频率,S1图像数据为以帧为单位的图片;驾驶员的驾驶信息为油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
本实施方案的S3的参数表示为:
输入图像:统一尺寸,3通道
卷积层1:卷积核3×3,步长2,相同填充,ReLU激活;
池化层1:2×2,步长2;
卷积层2:卷积核3×3,步长1,相同填充,ReLU激活;
池化层2:2×2,步长2;
卷积层3:卷积核3×3,步长1,相同填充,ReLU激活;
池化层3:2×2,步长2;
卷积层4:卷积核3×3,步长1,相同填充,ReLU激活;
池化层4:2×2,步长2;
卷积层5:卷积核3×3,步长1,相同填充,ReLU激活;
全连接层1:4096个神经元,tanh激活;
全连接层2:1024个神经元,tanh激活;
且各层均设置随机遗忘,遗忘率0.8,以防止过拟合;
LSTM:10-300个LSTM单元,步长10-300;
输出层:2维张量,1×4,分别为预测的油门踏板开度ac,制动踏板开度br,方向盘转角st,以及挡位信息ge。
本实施方案的S4的均方误差函数MSE的计算公式为
Lrepo=Lr0*Decayepo-1
式中,Pred为训练过程中的预测结果,是与Label相同大小的2维张量,i,j为行列的坐标;n为批量大小;Lr0为初始学习率,Lrepo为当前学习率,Decay为衰减率,epo为迭代次数,训练过程中的衰减,之后开始迭代训练,次数设定为100。
本实施方案在实施时,第一,通过实车驾驶或行车录像或模拟驾驶系统与驾驶台架结合的方式,以相同的采样频率(10~30Hz或根据实验条件选取更适合的频率),对图像数据和驾驶员驾驶信息进行采集,图像数据为以帧为单位的图片,驾驶信息为油门踏板开度,制动踏板开度,方向盘转角以及挡位信息的数据采集方法。第二、CNN与LSTM结合用于自动驾驶的思路,第三、油门踏板开度,制动踏板开度,方向盘转角以及挡位信息作为神经网络输出的控制信号的思路。
实施例1
如图5至图6所示,S11:从行车录像中以10Hz频率,对图像数据进行采集(以帧为单位的图片),同时利用仿真驾驶台架进行对应操作,采集油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S12:利用Tensorflow框架自动将图像数据提取感兴区域,并规范为统一的200×200×3(3为通道数,表示RGB色彩空间)尺寸,驾驶数据整理为[1,4]的二维张量。
S13:搭建CNN-LSTM神经网络,其中CNN部分由5个卷积层,4个池化层,2个全连接层组成,LSTM部分由100个LSTM单元组成,具体参数如下:
输入图像:200×200×3
卷积层1:卷积核3×3,步长2,相同填充,ReLU激活。
池化层1:2×2,步长2。
卷积层2:卷积核3×3,步长1,相同填充,ReLU激活。
池化层2:2×2,步长2。
卷积层3:卷积核3×3,步长1,相同填充,ReLU激活。
池化层3:2×2,步长2。
卷积层4:卷积核3×3,步长1,相同填充,ReLU激活。
池化层4:2×2,步长2。
卷积层5:卷积核3×3,步长1,相同填充,ReLU激活。
全连接层1:4096个神经元,tanh激活。
全连接层2:1024个神经元,tanh激活。
且各层均设置随机遗忘,遗忘率0.8,以防止过拟合。
LSTM:100个LSTM单元,步长100。
输出层:2维张量,1×4,分别为预测的油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S14:将S12中得到的包括各种天气,场景,路况,工况的驾驶图像数据作为输入,司机驾驶信息数据作为标签,对步骤二中的CNN-LSTM模型进行训练,采用均方误差函数,梯度下降优化器,直至误差函数收敛。
S15:将训练好的模型嵌入到CARLA模拟驾驶系统,根据摄像头采集到的图像,输出驾驶命令,完成控制。CARLA仿真结果表明,模拟驾驶的车辆碰撞率仅为4.1%,行人碰撞率仅为2.3%,车道偏移率仅为2.1%。可以有效进行控制。
如图7所示,实施例2
S21:从CARLA仿真环境中以20Hz频率,对图像数据进行采集(以帧为单位的图片),同时利用仿真驾驶台架进行对应操作,采集油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S22:利用Tensorflow框架自动将图像数据提取感兴区域,并规范为统一的300×300×3(3为通道数,表示RGB色彩空间)尺寸,驾驶数据整理为[1,4]的二维张量。
S23:搭建CNN-LSTM神经网络,其中CNN部分由5个卷积层,4个池化层,2个全连接层组成,LSTM部分由150个LSTM单元组成,具体参数如下:
输入图像:300×300×3
卷积层1:卷积核3×3,步长2,相同填充,ReLU激活。
池化层1:2×2,步长2。
卷积层2:卷积核3×3,步长1,相同填充,ReLU激活。
池化层2:2×2,步长2。
卷积层3:卷积核3×3,步长1,相同填充,ReLU激活。
池化层3:2×2,步长2。
卷积层4:卷积核3×3,步长1,相同填充,ReLU激活。
池化层4:2×2,步长2。
卷积层5:卷积核3×3,步长1,相同填充,ReLU激活。
全连接层1:4096个神经元,tanh激活。
全连接层2:1024个神经元,tanh激活。
且各层均设置随机遗忘,遗忘率0.8,以防止过拟合。
LSTM:150个LSTM单元,步长150。
输出层:2维张量,1×4,分别为预测的油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S24:将S22中得到的包括各种天气,场景,路况,工况的驾驶图像数据作为输入,司机驾驶信息数据作为标签,对步骤二中的CNN-LSTM模型进行训练,采用均方误差函数,梯度下降优化器,直至误差函数收敛。
S25:将训练好的模型嵌入到CARLA模拟驾驶系统,根据摄像头采集到的图像,输出驾驶命令,完成控制。CARLA仿真结果表明,模拟驾驶的车辆碰撞率仅为3.2%,行人碰撞率仅为1.9%,车道偏移率仅为1.7%。可以有效进行控制。
如图8所示,实施例3
S31:实车驾驶并以30Hz频率,由行车记录设备对图像数据进行采集(以帧为单位的图片),同时记录司机对应操作,采集油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S32:利用Tensorflow框架自动将图像数据提取感兴区域,并规范为统一的400×400×3(3为通道数,表示RGB色彩空间)尺寸,驾驶数据整理为[1,4]的二维张量。
S33:搭建CNN-LSTM神经网络,其中CNN部分由5个卷积层,4个池化层,2个全连接层组成,LSTM部分由200个LSTM单元组成,具体参数如下:
输入图像:400×400×3
卷积层1:卷积核3×3,步长2,相同填充,ReLU激活。
池化层1:2×2,步长2。
卷积层2:卷积核3×3,步长1,相同填充,ReLU激活。
池化层2:2×2,步长2。
卷积层3:卷积核3×3,步长1,相同填充,ReLU激活。
池化层3:2×2,步长2。
卷积层4:卷积核3×3,步长1,相同填充,ReLU激活。
池化层4:2×2,步长2。
卷积层5:卷积核3×3,步长1,相同填充,ReLU激活。
全连接层1:4096个神经元,tanh激活。
全连接层2:1024个神经元,tanh激活。
且各层均设置随机遗忘,遗忘率0.8,以防止过拟合。
LSTM:200个LSTM单元,步长200。
输出层:2维张量,1×4,分别为预测的油门踏板开度,制动踏板开度,方向盘转角以及挡位信息。
S34:将S32中得到的包括各种天气,场景,路况,工况的驾驶图像数据作为输入,司机驾驶信息数据作为标签,对步骤二中的CNN-LSTM模型进行训练,采用均方误差函数,梯度下降优化器,直至误差函数收敛。
S35:将训练好的模型嵌入到CARLA模拟驾驶系统,根据摄像头采集到的图像,输出驾驶命令,完成控制。CARLA仿真结果表明,模拟驾驶的车辆碰撞率仅为4.2%,行人碰撞率仅为2.9%,车道偏移率仅为2.7%。可以有效进行控制。
机译: 基于深度学习的自动驾驶汽车,基于深度学习的自动驾驶控制装置,以及基于深度学习的自动驾驶控制方法
机译: 基于深度学习的自动驾驶汽车,基于深度学习的自动控制器和基于深度学习的自动驾驶控制方法
机译: 基于CNN-LSTM深度学习模型的驾驶员疲劳识别方法