自动驾驶车辆视觉全局定位研究综述
2022-11-23刘伟佟天旭田咪孙佳
刘伟,佟天旭,田咪,孙佳
(1.北京信息科技大学 自动化学院,北京 100192;2.中国科学院自动化研究所,北京 100190;3.上海谱视科技有限公司,上海 200434)
0 引言
自动驾驶指通过多种车载传感器来识别车辆所处的周边环境和状态,并自主做出分析和判断,控制车辆运动[1]。2020年,发改委等部门联合发布了《智能汽车创新发展战略》,明确指出发展智能网联车辆对我国具有极为重要的战略意义[2]。精确且鲁棒的车辆全局定位是实现自动驾驶的路径规划和控制的前提。受天气、光照等变化及道路施工、道路封闭、新标志及道路标志缺失等影响,定位成为汽车自动驾驶技术中的主要难点。按照定位的数据源来划分,目前应用于自动驾驶中常见的全局定位方法有激光雷达、高精度全球定位系统(global positioning system,GPS)[3]、毫米波雷达及视觉定位[4-5]方法。激光雷达虽不受光照条件和天气的影响,还有精度高的特点,但存在信息稀疏、建图范围有限,且设备设施昂贵等问题,对终端价格影响较大。而GPS易受卫星状态及天气情况影响,可能出现无法定位的情况。毫米波雷达对多种天气情况适应度高,空间分辨率高,但整体技术尚不成熟。而视觉方法虽然对光照条件依赖较大,存在运行鲁棒性较差的现象,但因为其相对低廉的硬件价格,同时探测范围大,能够提供丰富、直观的信息,在特定场景下(交通标志等)具有高精度感知能力,目前已成为一种自动驾驶终端重要的定位选择方案。视觉定位技术的深入研究,有望进一步简化自动驾驶汽车的位姿估算算法,提高多种场景的鲁棒性及泛化性能。
相对于通过即时定位与地图构建 (simultaneous localization and mapping,SLAM)及视觉里程计等估计相机局部相对位姿而导致定位结果不具有全局一致性的视觉局部定位方法,视觉全局定位是根据当前图像,求出相机在全局地图坐标系中的6自由度全局位姿,可以在任意位置进行绝对位姿估计,定位结果与先验地图能较好地保证全局一致性,因此视觉全局定位目前是实际自动驾驶应用中的重要选择。然而,视觉全局定位方法包含多个步骤,每一步骤对于视觉处理的精度要求都高,且步骤间的交互及参数调整较为复杂。虽然随着深度学习的发展,基于学习的端到端的视觉定位方法以及融合了传统方法的混合定位方法一定程度上解决了上述问题,但仍存在训练优化目标可解释性弱、6D位姿估计精度低等问题。针对于上述研究,本文按照模型构建方式的不同,将现有方法分为传统的视觉全局定位、基于深度学习和将两者结合的多阶段网络架构视觉全局定位方法。其中传统的视觉全局定位方法通过提取特征,进行关键点或关键帧的匹配,求解绝对位姿。此类方法的精确度较高,但依赖于局部特征的匹配,泛化性能差。最近几年,深度学习网络在各领域获得广泛应用,学者们提出不依靠图像的特征描述子,而是直接训练卷积神经网络(convolutional neural network,CNN)以从图像中回归位姿。基于深度学习的方法速度快、鲁棒性强,但定位精度仍有待提高。而将传统方法和卷积神经网络结合的方法,用神经网络代替传统定位方法中的部分模块,结合了两者的优势,在保持定位精度的同时还能保障较强的鲁棒性,逐渐成为当下研究的潮流。
本文对视觉全局定位的不同方法进行分类讨论,在此基础上分析视觉全局定位所面临的挑战,最后对整篇文章进行总结。
1 传统的视觉全局定位方法
在视觉全局定位问题提出之初,主要通过传统的建图查询及位姿计算进行视觉全局定位。基于预先建立的地图,利用特征提取与匹配获得其中最相似的子集(包括图像点云/特征点/语义信息等),进一步通过子集的位姿真值和特征真值,计算子集间的变换矩阵,进行当前相机位姿估计。基于该类方法所需的地图特征类型,可划分为如下3类方法:基于3D几何结构的方法、基于2D图像检索的方法及基于语义信息的视觉全局定位方法。
1.1 基于3D几何结构的方法
基于3D几何结构的方法依赖运动恢复结构(structure from motion,SFM)[6]技术建立点云模型,寻找自动驾驶终端所采集图像中的关键点与实际场景点之间的对应关系,典型的有文献[7-9]等提出的方法。此类方法需先构建带有三维信息和特征描述子的场景视觉地图。在定位阶段,通过提取查询对象的局部特征,建立图像的2D特征和点云模型中3D点的对应关系,在得到足够多的2D-3D匹配后使用透视n点投影(Perspective-n-Point,PnP)[10]算法求解位姿集合,通过随机抽样一致(random sample consensus,RANSAC)[11-12]算法求解最佳位姿。
此类方法基于关键点的匹配,只要有足够多的2D-3D正确匹配,就可以估计相机位姿,并且在小范围内可以实现较高的姿势精度。但由于其在特征提取时主要采用尺度不变特征变换(scale-invariant feature transform)SIFT[13]、加速稳健特征(speeded up robust features,SUFR)[14]等特征提取方法,严重依赖局部特征,很难处理因光照、噪音等因素而变化的点,且关键点匹配复杂度高,导致此类方法占用内存大、速度慢。
1.2 基于2D图像检索的方法
基于内容的图像检索方法是使用全局特征描述子对图像进行检索找到最接近检索图像的匹配。在自动驾驶场景下应用时,重点是场景图像信息(通常是2D图像)数据库的建立,以及用于加速搜索的数据库索引、检索技术,典型的有文献[15-18]等提出的方法。如Sivic等[18]提出将文字检索的一些方法移植到视频搜索中,通过词袋模型[19]进行编码和检索,选出匹配图像。文献[20-22]等提出使用改进的哈希算法进行图像检索,首先对数据集提取特征,每张图片用一个向量表示,根据训练集训练出哈希函数,将测试数据转化为哈希码。计算测试数据到训练数据的距离并进行排序,选择距离最小的前k张图片,搜出来的k张图片就是近似近邻的图片。
基于2D图像检索的方法,只要测试图像和检索到的图像之间的相似度足够大,就可以获得精准的相对姿态估计。但本方法的结果只近似于查询图像的位置,且当图片量增大时,求解速度变慢,无法满足实时性要求,复杂性也随所需合成视图的数量而线性增加;当图像被遮挡或截断时,此方法往往不能胜任,对实际使用造成了较大限制。
1.3 基于语义信息的视觉全局定位方法
基于语义信息的方法将结构、图像以及语义信息相结合,由于语义信息不随环境变化而改变,因此可作为监督者将正确检索到的图像与检索到的全部图像区分开来,典型的有文献[23-24]等提出的方法。如Shi等[23]首先通过在所有数据库图像上运行SFM技术来获得3D模型,并为每个3D模型点分配一个语义标签[25]。对于查询图像,计算其语义分割[26-28]并搜索前k个与其相似的数据库图像,使用查询图像与每个检索图像之间产生的2D-3D匹配来计算查询图像的临时姿势,并为属于所选检索图像分配语义一致性分数,最后将所有2D-3D 匹配及其语义一致性分数作为权重放在一起,运行基于RANSAC的加权 PnP 求解器来输出最终查询位姿。图1给出了基于语义信息的定位方法流程图。
图1 基于语义信息的定位方法流程
该方法把语义一致性分数用作检索图像产生的2D-3D匹配的权重,提高了定位的精度,对局部特征描述子的依赖小,在受光照、天气、季节、场景结构变化等因素影响时得出的最终位姿较为准确,且该方法的限制条件较少,实用性更强。但稀疏矩阵会严重影响内存和计算资源,未来可以尝试用密集的3D语义模型代替稀疏模型。
评价与总结:传统的视觉定位方法是自动驾驶视觉全局定位的基本方法,只要有足够多的关键点或关键帧的匹配,此类方法就能在小范围内获得精准的位姿估计。传统视觉定位方法具有较高的成熟度与定位精度,并在一些特定的场景下(如交通标志识别等)具有较高的识别精度优势,为自动驾驶定位提供了一种在较好环境条件下相对廉价、可靠的解决方案。但是,由于其过度依赖于局部特征,此类方法的泛化性和鲁棒性有待提高。针对这些问题,学者们相继提出了将深度学习方法应用到视觉全局定位中,不学习图像的描述子,直接训练网络以回归位姿。
2 基于深度学习的端到端位姿估计
场景天气变化(如季节、光照等)是自动驾驶时的常见情况。由于传统方法过分依赖于图像的特征描述子[13-14],在变化的环境下特征匹配精度降低,无法提供较高的鲁棒性,且随着深度学习在图像深层次特征信息获取上的优势不断扩大,研究人员开始尝试将深度学习应用到自动驾驶终端视觉全局定位上,通过训练卷积神经网络从图像中直接回归位姿,消除恶劣环境对定位效果的干扰,提升鲁棒性。
基于深度学习的端到端视觉全局定位,本质上是通过神经网络把传统方法的特征提取、位姿解算等步骤进行替代,直接通过神经网络完成输入图像到输出位姿的映射。
PoseNet[29]是首个使用深度学习框架来回归相机位姿的方法,其训练的卷积神经网络以端到端的方式直接对输入的RGB图像进行6自由度相机位姿回归。通过两种主要技术来实现:①标注:使用SFM构造一个点云模型,基于该模型,自动为训练照片标注,减轻了人力成本;②在线定位:采用GoogleNet[30]作为骨干网络,将Softmax分类器替换为回归器,加入一个全连接层用于最终输出。其损失函数定义为位置差异和角度差异的加权欧氏距离:
(1)
传统的视觉全局定位方法会受光照、时间、天气等情况变化的影响,而使用深度特征可以保持定位的准确度。但PoseNet[29,31]模型的数据标定基于SFM,其精度也受制于实际情况下SFM的精度;且PoseNet过拟合严重,缺乏泛化性,在室内外定位误差相差大,鲁棒性差。针对这些问题,学者们相继提出了改进网络架构和引入新的约束关系等方法,在下文中予以归纳总结。
2.1 网络架构的改进
部分学者提出在已有模型上加入新的结构单元,以提高性能。如Walch等[32]在CNN输出上添加长短时记忆(long short-term memory,LSTM)[33]单元,以结构化方式减少特征向量的维数,解决过拟合问题,对具有重复的结构和弱纹理的表面提供较为准确的姿势估计。由于LSTM所表达记录的信息有限,Xue等[34]提出了一种使用多视角图像进行相机重定位的图神经网络(graph neural network,GNN)[35],该方法重新设计了节点、边和嵌入函数,重新设计的GNN与CNN融合,分别用于知识传播和特征提取,可以使不连续帧之间进行信息传递,能捕获更多视角信息以进行定位,提高了视觉全局定位的精度,在大规模和具有挑战性的场景中具有良好的预测结果。但该方法必须是连续输入的数据且推理效率低,不适合于非连续数据集。Radwan等[36]在VLocNet[37]模型的基础上,采用自适应的加权方法,利用运动特定时间信息来提高定位精度,将几何信息和语义信息嵌入到位姿回归网络来提高整个框架的性能,解决了语义分割[38]、相机重定位[39]、视觉里程计3个任务,提高了模型的泛化性,并可实现每个任务的互惠。该方法在具有挑战性的情景中鲁棒性较强,精度较高,但其在模型训练阶段需要稠密的3D模型和语义标注信息。
此外,部分学者提出修改原PoseNet模型的部分结构,以提高定位精度。Melekhov等[40]提出一种Hourglass-Pose模型,将编码器替换成原始ResNet34网络,删去全连接层,进行特征提取。与基于结构的方法相比,该方法不需要任何3D模型;与PoseNet方法相比,该方法可以更好地利用上下文信息,定位精度更高。Naseer等[41]将基本网络换为VGG16,在第一个全连接层进行分叉,每个分叉包括3个全连接层,同时在全连接层(除最后一层)后面增加dropout层:其中一个分叉预测位置,另一个分叉预测姿态,利用迁移学习的方法来训练网络。该方法在定位精度和定位时间上都有较好的提升。Wu等[42]将PoseNet的共享定位器换成了GoogLeNet+Inception的组合,并设计了两个分支来输出平移量和旋转量,降低了平移误差和旋转误差。PoseNet及其改进方法的网络结构图总结如表1所示,表中FC代表全连接,Icp代表inception结构。
表1 PoseNet及其改进方法网络结构图
2.2 新的约束关系的引入
损失函数有助于优化神经网络的参数,通过优化神经网络的参数可最大程度地减少神经网络的损失。随着深度学习的发展,研究人员提出引入新的约束关系来优化损失函数,以提高定位精度。
针对PoseNet损失函数采用欧氏距离,造成超参数的训练难度较大的问题,Kendall等[43]提出了一种不需要任何超参数调整的训练算法——引入几何重投影误差。几何重投影误差是一种编码了定位和旋转误差的损失函数,适用于任意场景几何信息已知且内参相同的相机模型。Brahmbhatt等[44]提出在绝对位姿误差的基础上,使用额外信息设计损失函数,即MapNet深度神经网络。MapNet除了使用图像外还利用了如视觉里程计[45]和GPS等低成本的输入,并将它们融合到一起进行相机定位。这些输入表示传统上已被用于集束调整或位姿图优化的几何约束,在MapNet训练中被设定为损失项,也用于推理过程。MapNet通过加入损失项,直接提高了定位精度,并可以使用来自场景附加的未标记的视频序列以自监督的方式更新MapNet。
Tian等[46]引入了3D场景几何约束的损失函数项,设计了一种端到端的相机定位方法,利用运动和图像内容(包括相对变换、三维信息和像素强度)来学习全局的摄像机定位。该方法使用了光度一致性假设构建了光度差损失项,并搭配了结构相似性(structural similarity,SSIM)损失项[47]和常用的欧氏距离一起作为网络的损失函数,用3个加权系数进行尺度均衡。优化后的损失函数融合了运动信息、3D场景几何信息和图像内容,训练过程更高效、定位效果更准确,且在不同场景中都获得了较好的精度。该方法的流程如图2所示。其中梯形部分代表位姿预测网络,输入图像经此网络后输出三维平移和三维旋转。
图2 3D场景几何约束网络流程
表2显示了部分视觉全局定位方法在7个场景数据集上的定位精度,可以看出,传统方法绝对定位精度较高,然而随着深度学习方法的发展,已不再呈现出明显的优势。在深度学习方法中,PoseNet作为基线方法,后续网络结构变化和约束关系的调整能带来定位精度的逐步提升。深度学习网络应用于视觉全局定位,将一张查询照片输入到一个训练好的模型中,通过模型可直接推断出相机位置,实现一个端到端的自动驾驶视觉定位系统,运行效率较高。随着对深度学习的深入研究,如何搭建神经网络训练模型以提高定位精度将成为研究热潮。
表2 部分视觉全局定位方法在7个场景数据集上的定位误差比较
3 结合深度学习与传统方法的视觉全局定位方法
传统的方法定位精度较好,但缺乏鲁棒性和泛化能力;端到端的深度学习视觉全局定位方法具有较好的鲁棒性,但定位精度有待提高。自动驾驶场景下,定位系统的鲁棒性和精度指标有严格的要求,针对此问题,研究人员提出将两种方法结合,在保障定位精度的同时提高模型的鲁棒性。
结合深度学习与传统方法的视觉全局定位,是使用深度学习代替传统方法框架中的部分模块,模块化的操作一方面便于对各种传统方法和深度学习方法进行灵活集成,另一方面,与知识驱动的传统方法进行融合,能够提高数据驱动的深度学习方法的可解释性,并使深度学习的不确定性被限定在某个模块内。
3.1 利用神经网络进行特征提取匹配
为了解决传统关键点检测方法易受复杂背景和局部相似性影响,导致描述符匹配不准确的问题。Cui等[48]提出基于跨模态融合的关键点和描述符,并将其应用于相机位姿估计。该方法设计了一种卷积神经网络用于关键点检测和描述符提取。网络结构主要为编码器、关键点解码器和描述符解码器。通过编码器网络对输入的图像进行处理,降低图像的维数,生成特征图;对于关键点解码器,采用局部金字塔卷积模块[49]来捕获深度特征,输出图像的每个像素代表一个关键点的概率;描述符是对关键点的特征描述,描述符解码器首先融合局部金字塔卷积的输出和全局金字塔卷积的输出,再融合关键点的位置信息的输出,以避免局部相似性。另外,VS-Net[50]通过训练神经网络来预测图像每个像素的场景坐标来构建图像 2D-3D对应关系,然后使用RANSAC-PnP方法来计算相机位姿。该类方法解决了图像的局部相似性问题,提高了自动驾驶定位过程的特征描述精度。
3.2 利用神经网络进行建图查询
为了解决大规模自动驾驶场景外观随时间变化,导致现场查询图像和预先录制的场景图像之间视觉差异很大的问题,Wang等[51]提出一种基于图像检索技术和学习特征的全局定位方法,它包含结构化地图构建(离线)和视觉全局定位(在线)两部分。离线阶段,基于CNN的特征描述符和块均值、方差和颜色(block mean,variance,and color,BMVC)描述符提取数据库图像,构建基于原始数据集的地图。在线阶段,使用CNN全局描述符在数据库中检索与查询图像相似的图像,再使用BMVC来重新排序[52-53]检索到的图像候选名单,排名低的候选图像被过滤掉。最后利用相似性度量算法来确定最终的位姿,选择相似度最高的姿态来定位查询照片。另外,Taira等[52]通过提取局部聚集描述子向量(vector of locally aggregated descriptors,VLAD)的NetVLAD网络来提取特征,描述查询图片和数据库图片,匹配后得到候选图像及位姿。这类方法通过一系列图像描述符进行图像查询,具有较高的查询准确度和效率,有利于自动驾驶场景后续决策规划的效率提高。
3.3 利用神经网络进行位姿计算
由于RANSAC不可微,无法应用到深度学习中,Brachmann[11,54]等提出可微分RANSAC(differentiable RANSAC,DSAC),旨在用概率假说选择代替确定性假说选择,使得RANSAC过程可以被求导,并使用深度神经网络和DSAC对场景坐标回归森林方法[55]进行改造,使神经网络可以对RANSAC过程进行微分训练。该算法流程如图3所示:系统输入RGB图,首先通过坐标CNN估计像素点的三维坐标,从这些三维坐标中进行多次采样,生成假说池,对于每个假说,都生成重投影误差图,然后通过计分CNN对重投影误差进行打分,根据分数分布概率,选择一个得分最高的假说进行优化,得出最后优化过的位姿。该类方法采用了对假设模型打分的CNN网络,通过深度学习的方式[56]改进传统方法的位姿估计,提高了预测的精度。
图3 DSAC模型[10]流程
从表2可以看出,混合定位方法整体上比传统方法和端到端深度学习方法呈现出接近1个数量级的位置精度和角度精度,尤其是VS-Net在角度精度呈现最优。随着深度学习的发展,会有更多“局部最优”的方法出现,如何利用这种“局部最优”来达到“全局最优”,将成为未来研究的热门方向。
4 面临的挑战
基于视觉的自动驾驶车辆全局定位目前存在的挑战,主要包括如下几个方面:
1)真值的获取:原始数据集的采集较为昂贵;
2)对变化场景的识别效果:当场景的光照、时间、天气等情况发生变化时,现有的技术仍很难获得较为精确的姿态估计;
3)模型的泛化能力:基于视觉的位姿估计算法依赖于提取到的特征,对于数据集中很少出现的情况表现较差;
4)计算的复杂程度:位姿估计需要利用图像的空间与时间信息,计算量大,复杂程度高;
5)资源的消耗:随着移动设备应用的广泛发展,推理时间和内存占用已成为目前算法发展的瓶颈,轻量化的姿态估计方法也成为新的发展需求。
5 结束语
位姿估计是自动驾驶中的关键技术,本文主要介绍了利用视觉全局定位估计位姿的方法。按照构建方式不同,将其分为传统的、基于深度学习的和将两者结合的,并详细介绍了其中的代表性方法及其优缺点。传统的定位方法精度高,但建图和定位的效率较低,且在重复纹理的场景容易失效;基于深度学习的端到端的定位方法仅需要图像数据源和真值,方法简单,但目前精度较低,仅能定位到厘米级;而将两者结合的方法模型相对复杂,可达到传统方法的精度,同时泛化性较强。经过多年发展,各类视觉全局定位方法取得了许多进步,能够胜任更加复杂的任务。