一种基于光流与深度学习的视觉里程计实现方法和***
技术领域
本发明属于模式识别技术领域,更具体地,涉及一种基于光流与深度学习的视觉里程计实现方法和***。
背景技术
视觉里程计是一种利用相机采集到的图像序列来估计出智能体相对运动的计算机视觉方法,在机器人自主定位和导航过程中起着很重要的作用。
目前的视觉里程计主要是通过学习法和几何法实现。对于学习法而言,其主要是结合深度学习的优势,使用网络来进行图像识别、检测与分割,进而估算相机的运动位置和姿态;对于几何法而言,其主要是提取两幅连续图片中的特征(例如ORB特征、SIFT特征等),并在两幅图片中进行匹配和计算的方式实现。
然而,上述两种方法均存在一定的缺陷:对于学习法而言,其普适性差,尤其当测试数据的场景与训练场景变化较大或者运动速度变化时,算法的性能会受到很大的影响;对于几何法而言,首先,其实时性不好,其次,在光线昏暗环境以及照片模糊情况下,其特征检测困难,从而导致位姿跟丢,鲁棒性不好。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于光流与深度学习的视觉里程计实现方法和***,其目的在于,解决现有采用学习法实现的视觉里程计所存在的普适性差的技术问题,以及采用几何法实现的视觉里程计存在的实时性差、特征检测困难以及鲁棒性不好的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于光流与深度学习的视觉里程计实现方法,包括以下步骤:
(1)通过相机获取视频中的连续两幅照片,并使用卷积神经网络对其中的第一幅照片I1进行估计,以得到估计后的光流照片,该照片是用以下估计矩阵A1表示:
A1=(u1,v1)T
其中u1和v1分别表示估计得到的照片中像素点的横坐标和纵坐标。
(2)根据估计后的照片并使用双线性插值法对第二幅照片I
2进行处理,以得到扭曲图
并根据扭曲图和第一幅照片得到光度误差e
1:
(3)将第一幅照片I1、第二幅照片I2、估计矩阵A1、以及光度误差e1输入到另一个卷积神经网络中,以得到另一幅估计后的光流照片,该照片用估计矩阵A2表示;
(4)对步骤(3)中得到的另一幅估计后的光流照片进行下采样处理,将下采样处理后的照片输入到基于自编码器的网络中,以得到多维运动描述算子;
(5)对于视频中的其余图片,重复上述步骤(1)至步骤(4),直到所有图片均处理完毕为止,得到的多个多维运动描述算子构成相机的运动轨迹。
优选地,步骤(4)包括以下子步骤:
(4-1)对步骤(3)中得到的另一幅估计后的光流照片进行下采样处理;
(4-2)利用基于自编码器的网络中的编码器对下采样处理后的光流照片进行编码,以得到多维矩阵,具体采用以下公式:
其中u表示下采样处理后的照片,z表示得到的多维矩阵中的元素,l表示得到的多维矩阵的维数,w表示基于自编码器的网络中编码器的权重。
(4-3)利用基于自编码器的网络中的解码器对步骤(4-2)中得到的多维矩阵进行解码,以得到另一幅光流照片;
(4-4)计算步骤(4-3)中得到的另一幅光流照片与步骤(3)中得到的另一幅估计后的光流照片之间的欧氏距离作为基于自编码器的网络的损失函数,并通过最小化损失函数确定编码器的权重;
(4-5)根据步骤(4-4)中确定的编码器的权重,并使用步骤(4-2)中的公式计算得到多维矩阵;
(4-6)将步骤(4-5)得到的多维矩阵输入全连接网络,从而得到多维运动描述算子。
优选地,步骤(4-2)具体为,输入光流图片经过卷积核大小为64×5×5,步长为2×2的卷积后再使用ReLU激活函数引入非线性操作,从而得到第一卷积层大小为64×150×47,再经过2×2的最大池化后得到第一池化层,输出的大小为64×75×24,第二层卷积核大小为64×3×3,卷积步长为1×1,使用ReLU激活函数,再经过2×2的最大池化后得到第二池化层,大小为64×38×12。第三层卷积核大小同样为64×3×3,卷积步长为1×1,使用ReLU激活函数,并且输出的第三卷积层大小为64×38×12,最终得到多维矩阵。
优选地,步骤(4-3)具体为,多维矩阵首先经过卷积核大小为6×3×3、卷积步长为4×4的反卷积操作,再使用ReLU激活函数进行非线性操作,从而得到大小为6×152×48的第一反卷积层,然后,将第一反卷积层大小裁剪到6×150×47,随后,再经过卷积核大小为2×3×3,卷积步长为2×2的转置卷积操作,并利用ReLU激活函数进行非线性操作,从而输出2×300×94的光流照片。
优选地,步骤(4-6)具体为,多维矩阵经过2×2的最大池化后得到第三池化层,其大小为64×19×6,然后通过融合层将多维矩阵和第三池化层串接到成一维向量,然后输入给全连接层处理,其中全连接层是由2个激活层组成,且均使用线性整流函数ReLU,最后输出的6维向量就是多维运动描述算子。
优选地,步骤(1)和步骤(3)中的卷积神经网络均采用六层卷积神经网络。
优选地,多维运动描述算子包括三维坐标、以及分别围绕X、Y和Z轴旋转的欧拉角。
按照本发明的另一方面,提供了一种基于光流与深度学习的视觉里程计实现***,包括:
第一模块,用于通过相机获取视频中的连续两幅照片,并使用卷积神经网络对其中的第一幅照片I1进行估计,以得到估计后的光流照片,该照片是用以下估计矩阵A1表示:
A1=(u1,v1)T
其中u1和v1分别表示估计得到的照片中像素点的横坐标和纵坐标。
第二模块,用于根据估计后的照片并使用双线性插值法对第二幅照片I
2进行处理,以得到扭曲图
并根据扭曲图和第一幅照片得到光度误差e
1:
第三模块,用于将第一幅照片I1、第二幅照片I2、估计矩阵A1、以及光度误差e1输入到另一个卷积神经网络中,以得到另一幅估计后的光流照片,该照片用估计矩阵A2表示;
第四模块,用于对第三模块中得到的另一幅估计后的光流照片进行下采样处理,将下采样处理后的照片输入到基于自编码器的网络中,以得到多维运动描述算子;
第五模块,用于对于视频中的其余图片,重复上述第一模块至第四模块,直到所有图片均处理完毕为止,得到的多个多维运动描述算子构成相机的运动轨迹。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明使用基于自编码器的网络来逼近输入光流图片的非线性子空间,同时使用计算出来的多维矩阵来估算多维运动描述算子,能够提高算法的普适性;
(2)本发明的实时性好:由于本发明不需要对传统几何法中提取的特征(例如ORB特征、SIFT特征等)进行计算,从而提高了运行速度,保证了良好的实时性;
(3)由于本发明的步骤(1)和(3)中均获取得到了光流照片,因此即使在光线差的环境下,也能够实现路径的估计,避免了传统几何法中的特征跟踪,由此实现了高鲁棒性。
附图说明
图1是本发明基于光流与深度学习的视觉里程计实现方法的流程图。
图2是本发明平均旋转误差与视频序列长度的关系曲线图。
图3是本发明平均旋转误差与行驶速度的关系曲线图。
图4是本发明平均平移误差与视频序列长度的关系曲线图。
图5是本发明平均平移误差与行驶速度的关系曲线图。
图6是本发明步骤(4)中基于自编码器的网络中编码器的示意图。
图7是本发明步骤(4)中基于自编码器的网络中解码器的示意图。
图8是本发明步骤(4)中使用的全连接网络的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了解决传统基于几何方法实现的视觉里程计实时性不好,在光线昏暗环境以及照片模糊情况下特征检测困难导致位姿跟丢,鲁棒性不好等的技术问题,本发明提出了基于光流和深度学习的视觉里程机实现方法。该方法使用卷积神经网络学习估算光流场并进行运动位移和旋转估计,同时使用GPU加速,提高了视觉里程计的实时性和鲁棒性。
本发明的方法首先使用连续两帧图片作为整个***的输入,利用深度堆叠网络来学习估算输入的光流场,并且将估算的光流场作为2级级联网络的输入,最终输出相机位移与旋转的欧拉角。整个过程大致可以分为2个过程,先估算估算连续帧的光流场,让后通过光流场去估算运动路线。
如图1所示,本发明基于光流与深度学习的视觉里程计实现方法包括以下步骤:
(1)通过相机获取视频中的连续两幅照片,并使用卷积神经网络(在本实施方式中是采用六层卷积神经网络)对其中的第一幅照片I1进行估计,以得到估计后的光流照片,该照片是用以下估计矩阵A1表示:
A1=(u1,v1)T
其中u1和v1分别表示估计得到的照片中像素点的横坐标和纵坐标。
(2)根据估计后的照片并使用双线性插值法对第二幅照片I
2进行处理,以得到扭曲图
并根据扭曲图和第一幅照片得到光度误差e
1:
(3)将第一幅照片I1、第二幅照片I2、估计矩阵A1、以及光度误差e1输入到另一个卷积神经网络(在本实施方式中是采用6层卷积神经网络)中,以得到另一幅估计后的光流照片,该照片用估计矩阵A2表示;
需要注意的是,本步骤中使用的卷积神经网络与步骤(1)中使用的卷积神经网络具有完全相同的架构。
(4)对步骤(3)中得到的另一幅估计后的光流照片进行下采样处理(例如采样到155*48),将下采样处理后的照片输入到基于自编码器的网络中,以得到多维运动描述算子;
具体而言,本步骤包括以下子步骤:
(4-1)对步骤(3)中得到的另一幅估计后的光流照片进行下采样处理;
具体而言,本步骤中下采样处理的方法可以采用平均池化法、最大池化法等。
(4-2)利用基于自编码器的网络中的编码器对下采样处理后的光流照片进行编码,以得到多维矩阵;
本步骤中的编码是采用以下公式:
其中u表示下采样处理后的照片,z表示得到的多维矩阵中的元素,l表示得到的多维矩阵的维数,w表示基于自编码器的网络中编码器的权重。
如下图6所示,是本步骤中基于自编码器的网络中编码器的示意图,输入光流图片经过卷积核大小为64×5×5,步长为2×2的卷积后再使用ReLU激活函数引入非线性操作,从而得到第一卷积层大小为64×150×47,再经过2×2的最大池化后得到第一池化层,输出的大小为64×75×24,第二层卷积核大小为64×3×3,卷积步长为1×1,使用ReLU激活函数,再经过2×2的最大池化后得到第二池化层,大小为64×38×12。第三层卷积核大小同样为64×3×3,卷积步长为1×1,使用ReLU激活函数,并且输出的第三卷积层大小为64×38×12,最终得到多维矩阵。
(4-3)利用基于自编码器的网络中的解码器对步骤(4-2)中得到的多维矩阵进行解码,以得到另一幅光流照片;
如下图7所示,是本步骤中基于自编码器的网络中解码器的示意图,多维矩阵通过反卷积即转置卷积操作后,为了得到第一反卷积层大小为6×152×48,是使用的卷积核大小为6×3×3,卷积步长为4×4,非线性操作为ReLU激活函数。为使输出与输入的光流图大小相同,将第一反卷积层大小裁剪到6×150×47,然后再使用卷积核大小为2×3×3,卷积步长为2×2的转置卷积,并利用非线性操作为ReLU激活函数,输出2×300×94的光流照片。
步骤(4-1)和(4-2)的编解码过程的优点在于,在压缩了输入的光流图片的同时,尽可能多的保留图片中的有用信息。
(4-4)计算步骤(4-3)中得到的另一幅光流照片与步骤(3)中得到的另一幅估计后的光流照片之间的欧氏距离作为基于自编码器的网络的损失函数,并通过最小化损失函数确定编码器的权重;
(4-5)根据步骤(4-4)中确定的编码器的权重,并使用步骤(4-2)中的公式计算得到多维矩阵;
(4-6)将步骤(4-5)得到的多维矩阵输入全连接网络,从而得到多维运动描述算子。
如下图8所示,本步骤中使用的全连接网络处理过程是,多维矩阵经过2×2的最大池化后得到第三池化层,大小为64×19×6。融合层将多维矩阵和第三池化层串接到成一维向量,然后输入给全连接层。全连接层由2个激活层组成,均使用线性整流函数(ReLU)。最后输出的6维向量就是多维运动描述算子。
得到的多维运动描述算子可以是多维向量或多维矩阵。
在本实施方式中,得到的多维运动描述算子包括6个,分别是三维坐标,以及三个欧拉角(即分别围绕X、Y和Z轴旋转的欧拉角)。
上述步骤(4-1)到(4-6)的优点在于,使用基于自编码器的网络来逼近输入光流图片的非线性子空间,同时使用步骤(4-5)计算出来的多维矩阵来估算多维运动描述算子,能够提高算法的普适性。
(5)对于视频中的其余图片,重复上述步骤(1)至步骤(4),直到所有图片均处理完毕为止,得到的多个多维运动描述算子构成相机的运动轨迹。
实验结果
下表1是本发明与去掉回环检测的ORB-SLAM2(其属于一种几何法)和使用FlowNet2预处理的P-CNN VO(其属于一种学***移误差方面的比较,可以看出,本发明平均误差均小于P-CNN深度学***移误差是远小于ORB-SLAM2。
表1
下表2示出本发明与现有算法在序列的计算时间方面的比较。可以看出,本发明优势在于从输入图片到最后运行输出的计算时间短,符合实时性要求。ORB-SLAM2运算尽管速度最快,但在输入图片模糊时,估算精度低,相对本发明表现出的很差的鲁棒性。因为本发明采用FlowNet2-ss的算法模型,并且里程计算前不需要将光流图转化为RGB图,从而效率优于P-CNN VO。KITTI数据集中连续的1000张照片被选中用来计算每个***的计算时间。所有的测试是使用Intel(R)Xeon(R)CPU
[email protected]和NVIDIA Tesla K40GPU完成的。
表2
视觉里程计的平移和旋转误差可以分别从序列长度和行驶速度来测算。下图2至图5表明,所有测试序列的平均误差与序列长度和行驶速度的组合关系。随着长度的增加,平均的误差反而减小,并且在速度较小的时候会出现较大的误差,可能的原因是本发明的训练数据多数是启动一段时间采集的,此时的速度相对开始时较大,所以最后的训练模型在开始的一段路程以及低速和高速时的误差大。从图3和图5可以看出,速度增大45Km/h后,旋转误差增大,然而平移误差依然减小。
通过使用KITTI数据集测试视觉里程计(该数据集是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集),该数据集用于评测立体图像,光流,视觉测距,3D物体检测和3D跟踪等计算机视觉技术在车载环境下的性能。本发明只使用前11套视频序列因为提供对应的路径。开始的8个数据集用于训练网络,后面的3个用于测试并且评估***的精度。最后本发明的平均平移误差为10.63%,旋转误差为0.0346deg/m,每帧的平均计算时间为73ms,符合实时性要求。通过处理光流图片,保证了图片在进行暗化或者模糊处理后的任然有较高的估算精度。提高了里程计的鲁棒性。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。