本发明涉及自动机器人的视觉避障领域,尤其涉及一种基于神经网络算法的碰撞时间计算系统和方法。
背景技术:
随着多旋翼无人机市场的飞速增长,相关的技术也在发生日新月异的变革,在多旋翼无人机的技术诸多趋势中,避障能力是实现自动化和智能化的关键环节,完善的自主避障系统能够在很大程度上减少因操作失误造成的无人机损坏和伤及人身和障碍物的事故发生率,进而,完善的避障技术也将成为高端旋翼无人机中的标配系统。
当前基于碰撞时间的避障的方法中,大多用于汽车领域中的辅助驾驶,例如前车预警,但是前车预警只关注当前主目标的碰撞时间信息,碰撞时间是稀疏的,而且只用来进行预警提醒。
在现有多旋翼视觉避障研究和专利中,主要还是通过双目视觉算法或者深度传感器获取距离障碍物的绝对距离信息进行的,当然也有利用光流信息进行避障的,但是具有以下缺陷:
1)采用绝对深度的方式,如果使用深度相机,则容易受光照和场景的限制,而且目前深度相机的探测距离有限,不适合无人机快速运动的条件,整体来看,成本高,抗干扰能力较差;
2)使用双目相机,算法的复杂度较高,双目相机标定困难,且距离估计的误差随距离变大而成指数级增长;
3)使用光流的方法,光流对光照比较敏感,对于动态场景、光照变化、纯旋转以及遮挡问题,光流目前没有通用的较好的处理方法,同时光流容易造成误匹配,对后续的算法带来一定的困难。
因此,针对当前已经存在的多旋翼无人机视觉避障系统存在的成本高、算法复杂且稳定性较差的问题,本领域的技术人员致力于开发一种基于神经网络算法的碰撞时间计算系统和方法。
技术实现要素:
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何利用单目相机的视频序列,预测稠密的碰撞时间,提高算法的适用性。
为实现上述目的,本发明提供了一种基于神经网络算法的碰撞时间计算系统和方法。
在本发明的较佳实施方式中,基于神经网络算法的碰撞时间计算系统包括摄像头获取视频序列模块、图像预处理模块、基于神经网络计算碰撞时间模块、稠密碰撞时间处理模块、输出模块、神经网络训练模块,所述摄像头获取视频序列模块、所述图像预处理模块、所述基于神经网络计算碰撞时间模块、所述稠密碰撞时间处理模块和所述输出模块依次通信连接,所述神经网络训练模块从所述图像预处理模块获取信息进行离线训练,输出收敛和完整的网络结构模型,供所述基于神经网络计算碰撞时间模块使用。
可选地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述摄像头获取视频序列模块获取当前的图像序列,包括采集图像,输出连续的图像序列以及每帧图像对应的时间戳信息。
可选地,在上述任一实施例中的基于神经网络算法的碰撞时间计算系统中,所述摄像头获取视频序列模块使用的传感器为普通单目相机。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述普通单目相机帧率满足30帧以上、fov满足90以上。
可选地,在上述任一实施例中的基于神经网络算法的碰撞时间计算系统中,所述图像预处理模块对图像序列进行预处理,格式满足神经网络的输入要求。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述图像预处理模块将前后两帧图像打包为一个单元,同时记录前后两帧的时间差,输出为时间上连续的图像单元包,同时包含对应的时间差。
可选地,在上述任一实施例中的基于神经网络算法的碰撞时间计算系统中,所述基于神经网络计算碰撞时间模块预测并输出稠密碰撞时间。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述基于神经网络计算碰撞时间模块包括基础网络卷积模块和基础网络反卷积模块。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述基础网络卷积模块包括net-s卷积部分和net-c卷积部分。
可选地,在上述任一实施例中的基于神经网络算法的碰撞时间计算系统中,所述稠密碰撞时间处理模块对稠密碰撞时间进行归一化处理,消除传感器自身带来的时间误差,同时对稠密碰撞时间进行局部区域建图,方便后续避障算法的展开。
可选地,在上述任一实施例中的基于神经网络算法的碰撞时间计算系统中,所述神经网络训练模块对网络模型进行离线训练。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,所述神经网络训练模块采用训练的方法为仿真虚拟场景的预训练与基础模块训练相结合的方式进行。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算系统中,对于基础网络(net-c网络和net-s网络)结构,利用仿真场景进行预训练,基础网络模型收敛之后,用真实的数据对整体网络结构进行再训练,最终输出为收敛的完整的网络结构模型,供所述基于神经网络计算碰撞时间模块使用。
在本发明的另一较佳实施方式中,使用上述基于神经网络算法的碰撞时间计算系统,进行碰撞时间计算方法包括如下步骤:
s1、网络模型的训练;
s2、网络的正常运行。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s1包括:
s11、训练数据的准备;
s12、训练数据的预处理和数据增强;
s13、基础网络的训练;
s14、整体网络的再训练。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s11包括仿真数据制作以及真实数据集的采集,所述仿真数据分为动态场景和静态场景两种,所述动态场景的计算公式为:
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s12,所述训练数据的预处理包括对所述仿真数据的碰撞时间(ttc)真值归一化处理,公式为:
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s13,所述基础网络的训练为利用仿真数据集对两个基本的网络(net-c网络和net-s网络)结构进行训练,训练的策略采用递进式,第一阶段采用较高的学习率进行训练,当模型收敛速度较低时,采用较低的学习率进行再训练,模型收敛后,继续降低学习率训练,直到模型损失函数在合理的范围内终止训练。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s14,所述整体网络的再训练,当每一个基础网络(net-c网络和net-s网络)在仿真数据集结果最优时,固定当前的基础网络模块,开始训练后续叠加的基础模块,训练方法包括:
s1401、在仿真数据集中增加一部分真实场景的数据集,以0.0001的学习率训练500k次;
s1402、继续再增加真实的数据集,仿真数据和真实数据数量为1:1,以0.0001的学习率训练1.2m次;
s1403、完全采用真实场景的数据集,以0.00001的学习率训练500k次,最终模型收敛。
进一步地,在上述实施例中的基于神经网络算法的碰撞时间计算方法中,上述步骤s2,对摄像头采集的图像序列进行处理,以前后帧为单元,满足神经网络的输入要求,所述网络模型输出每一个单元第一帧图像的稠密碰撞时间信息。
本发明中,发明人使用pytorch的开源网络结构实现神经网络,并使用基于cuda结构的gtx1080ti显卡进行网络模型的训练。本发明利用单目相机的视频序列,预测稠密的碰撞时间,提高了算法的适用性。旋翼无人机端图片可以传回本地,利用本地的模型计算出结果后,返回旋翼无人机的运动指令。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的一个较佳实施例的结构示意图;
图2是本发明的一个较佳实施例的神经网络计算碰撞时间模块结构示意图;
图3是本发明的一个较佳实施例的基础网络通用结构示意图;
图4是本发明的一个较佳实施例的基础网络net-s卷积部分结构示意图;
图5是本发明的一个较佳实施例的基础网络net-c卷积部分结构示意图;
图6是本发明的一个较佳实施例的基础网络反卷积部分结构示意图;
图7是本发明的一个较佳实施例的碰撞时间计算方法示意图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
如图1所示,本发明的一个较佳实施例包括摄像头获取视频序列模块、图像预处理模块、基于神经网络计算碰撞时间模块、稠密碰撞时间处理模块、输出模块、神经网络训练模块,摄像头获取视频序列模块、图像预处理模块、基于神经网络计算碰撞时间模块、稠密碰撞时间处理模块和输出模块依次通信连接,神经网络训练模块从图像预处理模块获取信息进行离线训练,输出收敛和完整的网络结构模型,供基于神经网络计算碰撞时间模块使用。其中,摄像头获取视频序列模块获取当前的图像序列,包括采集图像,输出连续的图像序列以及每帧图像对应的时间戳信息;摄像头获取视频序列模块使用的传感器为普通单目相机,帧率满足30帧以上、fov满足90以上;图像预处理模块对图像序列进行预处理,格式满足神经网络的输入要求,将前后两帧图像打包为一个单元,同时记录前后两帧的时间差,输出为时间上连续的图像单元包,同时包含对应的时间差。
整体网络结构如图2所示,由基础网络结构(网络net-c结构和网络net-s结构)堆叠而成的,基于神经网络计算碰撞时间模块预测并输出稠密碰撞时间。在第一路中,原始的输入为前后两帧的图像经过基础网络结构net-c之后,输出的结果同时和两张图片作为基础网络net-s的输入,最终第一路输出该路碰撞时间。第二路中,输入为相同的两张图片,经过基础网络结构net-s之后,输出该路的碰撞时间。最终第一路和第二路的结果进行融合,生成最终的碰撞时间
如图3所示,基于神经网络计算碰撞时间模块包括基础网络net-c和基础网络net-s,各个模块之间是顺序链接,上一模块的输出即为下一模块的输入。图像预处理模块主要是将图像数据处理为方便网络底层操作的数据格式。神经网络卷积模块主要是提取图像的高维特征,与神经网络反卷积模块的功能正好相反,反卷积主要为从高维特征中恢复我们需要的碰撞时间信息。神经网络输出模块主要是将网络输出的碰撞时间进行插值和边缘处理,使之成为我们需要的分辨率。
基础网络net-c和基础网络net-s结构的主要区别在卷积部分,基础网络net-s的卷积部分如图4所示,将输入的两帧图像合并为一个六通道的数据。各个卷积层之间通过卷积核操作,整体的有九个卷积层,其中只有六个的步进为2,剩余的步进为1,每经过一次步进为2的池化层,输入图像的分辨率降为原来的一半。每一层之后的激活函数为relu非线性的激活函数。卷积核的设置,随着网络层数的增加而递减,第一层为7*7,后面两层为5*5,第四层为3*3,最后均未1*1,卷积核的通道数随着网络层数的增加而增加,每当输入图像的分辨率减小一半时,卷积核的通道数增加一倍。
基础网络net-c的卷积部分如图5所示,相比较于基础网络net-c的卷积部分,主要区别是引入了关联层,输入为两帧分别进行卷积,然后在高维的特征进行匹配关联后,再进行卷积操作。具体的卷积设置和基础网络net-c的卷积部分保持一致,同样是包含了9层卷积结构,卷积核和池化层设置在对应的位置均相同。
基础网络net-c的反卷积部分和基础网络net-s的反卷积部分是完全相同,如图6所示,反卷积各层之间只要是通过向上的反卷积核进行向上映射的,反卷积过程中上采用的区域均为5*5。发明人使用反卷积的时候,输入的数据包含更多的信息,主要有三部分:粗碰撞时间的预测、对应的特征图和对应的卷积层。这样既保留从较粗略的特征图传递来的高级信息,又保留了较低层特征图中提供的精细的局部信息。没经过一次反卷积,图像的分辨率提高一倍,发明人总共设计了四层反卷积,输出了相对较为稠密和准确的碰撞时间信息,最终网络输出的结构的分辨仍然比输入的图像分辨率小四倍。在最后的地方,采用了双线性上采样的方法得到了最终的输出结果,这样和输入图像的分辨率是完全匹配的。
稠密碰撞时间处理模块对稠密碰撞时间进行归一化处理,消除传感器自身带来的时间误差,同时对稠密碰撞时间进行局部区域建图,方便后续避障算法的展开;神经网络训练模块对网络模型进行离线训练,采用训练的方法为仿真虚拟场景的预训练与基础模块训练相结合的方式进行,对于基础网络(net-c网络和net-s网络)结构,利用仿真场景进行预训练,基础网络模型收敛之后,用真实的数据对整体网络结构进行再训练,最终输出为收敛的完整的网络结构模型,供所述基于神经网络计算碰撞时间模块使用。
在本发明的另一较佳实施方式中,使用上述基于神经网络算法的碰撞时间计算系统,进行碰撞时间计算方法包括如下步骤:
s1、网络模型的训练;
s2、网络的正常运行。
如图7所示,各个模块主要是表示训练工作的先后顺序,之间是时间上的先后。发明人对步骤s1进行细化,包括:
s11、训练数据的准备;
s12、训练数据的预处理和数据增强;
s13、基础网络的训练;
s14、整体网络的再训练。
对于步骤s11,包括仿真数据制作以及真实数据集的采集,所述仿真数据分为动态场景和静态场景两种,所述动态场景的计算公式为:
对于步骤s12,训练数据的预处理包括对所述仿真数据的碰撞时间(ttc)真值归一化处理,公式为:
对于步骤s13,基础网络的训练为利用仿真数据集对两个基本的网络(net-c网络和net-s网络)结构进行训练,训练的策略采用递进式,第一阶段采用较高的学习率进行训练,当模型收敛速度较低时,采用较低的学习率进行再训练,模型收敛后,继续降低学习率训练,直到模型损失函数在合理的范围内终止训练。
对于步骤s14,整体网络的再训练,当每一个基础网络在仿真数据集结果最优时,固定当前的基础网络模块,开始训练后续叠加的基础模块,训练方法包括:
s1401、在仿真数据集中增加一部分真实场景的数据集,以0.0001的学习率训练500k次;
s1402、继续再增加真实的数据集,仿真数据和真实数据数量为1:1,以0.0001的学习率训练1.2m次;
s1403、完全采用真实场景的数据集,以0.00001的学习率训练500k次,最终模型收敛。
对于步骤s2,对摄像头采集的图像序列进行处理,以前后帧为单元,满足神经网络的输入要求,所述网络模型输出每一个单元第一帧图像的稠密碰撞时间信息。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
1.一种基于神经网络算法的碰撞时间计算系统,其特征在于,包括摄像头获取视频序列模块、图像预处理模块、基于神经网络计算碰撞时间模块、稠密碰撞时间处理模块、输出模块、神经网络训练模块,所述摄像头获取视频序列模块、所述图像预处理模块、所述基于神经网络计算碰撞时间模块、所述稠密碰撞时间处理模块和所述输出模块依次通信连接,所述神经网络训练模块从所述图像预处理模块获取信息进行离线训练,输出收敛和完整的网络结构模型,供所述基于神经网络计算碰撞时间模块使用。
2.如权利要求1所述的基于神经网络算法的碰撞时间计算系统,其特征在于,所述摄像头获取视频序列模块获取当前的图像序列,包括采集图像,输出连续的图像序列以及每帧图像对应的时间戳信息。
3.如权利要求1所述的基于神经网络算法的碰撞时间计算系统,其特征在于,所述图像预处理模块对图像序列进行预处理,格式满足神经网络的输入要求。
4.如权利要求1所述的基于神经网络算法的碰撞时间计算系统,其特征在于,所述基于神经网络计算碰撞时间模块预测并输出稠密碰撞时间。
5.如权利要求1所述的基于神经网络算法的碰撞时间计算系统,其特征在于,所述稠密碰撞时间处理模块对稠密碰撞时间进行归一化处理,消除传感器自身带来的时间误差,同时对稠密碰撞时间进行局部区域建图。
6.如权利要求1所述的基于神经网络算法的碰撞时间计算系统,其特征在于,所述神经网络训练模块对网络模型进行离线训练。
7.一种基于神经网络算法的碰撞时间计算方法,其特征在于,使用如权利要求1-6任一所述的基于神经网络算法的碰撞时间计算系统,包括以下步骤:
s1、网络模型的训练;
s2、网络的正常运行。
8.如权利要求7所述的基于神经网络算法的碰撞时间计算方法,其特征在于,所述步骤s1包括:
s11、训练数据的准备;
s12、训练数据的预处理和数据增强;
s13、基础网络的训练;
s14、整体网络的再训练。
9.如权利要求8所述的基于神经网络算法的碰撞时间计算方法,其特征在于,所述步骤s11包括仿真数据制作以及真实数据集的采集,所述仿真数据分为动态场景和静态场景两种,所述动态场景的计算公式为:
10.如权利要求9所述的基于神经网络算法的碰撞时间计算方法,其特征在于,所述步骤s14,当每一个基础网络在仿真数据集结果最优时,固定当前的基础网络模块,开始训练后续叠加的基础模块,训练方法包括:
s1401、在仿真数据集中增加一部分真实场景的数据集,以0.0001的学习率训练500k次;
s1402、继续再增加真实的数据集,仿真数据和真实数据数量为1:1,以0.0001的学习率训练1.2m次;
s1403、完全采用真实场景的数据集,以0.00001的学习率训练500k次,最终模型收敛。
技术总结