点击我爱计算机视觉标星,更快获取CVML新技术
大家好,我是旷视研究院SLAM组负责人刘骁,很高兴能和大家分享机器人领域一些有关三维视觉技术的思考。
这次分享的主题集中在SLAM与三维重建两方面,大纲如下:
SLAM 研究内容与应用概要
专题1:VIO & 多传感器融合
专题2:Struct SLAM
专题3:Visual Localization
专题4:激光 SLAM
专题5:三维重建
专题6:语义 SLAM & HDMap
SLAM 研究内容与应用概要
首先,三维视觉的基本问题包括SLAM、三维重建、Stereo(深度估计)、姿态估计、图像拼接、视频编辑等;其中,SLAM与三维重建是机器人领域常涉及的问题。
SLAM技术全称为Simultaneous Localization and Mapping(即时定位与地图重建),简单而言,它包含三大问题:1)“我在哪儿”,2)“我的地图呢”,3)“如何到达目的地”。通常学术上SLAM更多地指的是前两个问题。
对于第一个问题“我在哪儿”,首先涉及的是机器人定位技术,进一步由于机器人是运动的,还会涉及跟踪技术;对于第二个问题“我的地图呢”,由于机器人大多需要在陌生环境工作,所以还涉及到地图构建技术;另外,针对第三个问题“如何到达目的地”,考虑到机器人需要在复杂环境中具备规划路径、避开障碍的能力,因此涉及到了导航与避障技术。
综合来看,SLAM不仅对实时性要求很高,同时也需要借助多传感器的信息来工作,它不仅包含视觉也包含图形学技术。一般而言,SLAM由多种算法组合成一个系统进行工作,因此是算法+系统的综合应用。
SLAM 问题的数学描述
如果从数学角度描述SLAM问题,通常涉及到运动方程与观测方程,如下图。从概率角度看,假设给定一系列传感器,则有两个待估计量需要计算:姿态与路标(一般指空间中的几何特征如点、线、面等),从而整个SLAM问题可以归结为一个后验概率最大的问题。
对于SLAM的求解过程,一般分为三步:
设定参数化方法,即如何用点、线、面这些几何参数化方法描述路标;
建立数据关联,例如在传统SLAM中的特征法,将两个点通过特征进行匹配,从而获得关联;
在给定数据关联、姿态以及路标的估计下,根据当前的观测,求解出最优的姿态与路标的解。
需要说明的是,由于假设观测噪声符合高斯分布,因此整个估计又可以转化为一个最小二乘问题,目前主流采用非线性优化方式来求解。
下方动图以纯视觉SLAM为例,展示了SLAM的工作方式。首先,在画面左方可见一个连续的视频输入,机器人在运动的过程中会给出其实时估计的运动姿态(红色),同时以白点的方式将周围三维空间绘制出来,此即跟踪与地图构建的过程。
具体到利用特征法来进行姿态估计和三维重建,首先需要对两幅图进行特征提取与特征匹配,从而建立数据关联;然后,将该数据关联与人们希望求解的空间中的姿态和路标(三维点)待估计量建立约束(例如在纯视觉SLAM中可能会使用到重投影误差约束);最后将该问题转化为非线性最小二乘进行求解即可。
专题1:VIO & 多传感器融合
由于基于纯视觉的SLAM方法在实际应用的鲁棒性不高,会受到光照、运动速度过快等因素的干扰,因此实践中多以多传感器方法来构建SLAM。这其中最简单的是VIO问题,即结合了视觉与IMU观测的SLAM问题。
通常情况下,IMU提供包括陀螺仪与加速度计的观测,有些还提供地磁计观测。进一步,对这些观测进行积分,得到IMU预积分残差,再配合基于纯视觉特征的重投影误差,就可以进行联合优化,来求解VIO问题。
VIO经常会应用在移动端的AR设备上,比如AR尺子、AR游戏等。在这些场景下,可以利用移动端传感器(相机、IMU等)实现精确定位和稀疏地图构建,并完成人机交互。下图给出了移动端场景中实现VIO经常涉及的关键技术。
与移动端不同,由于机器人设备上传感器更多,所以它属于多传感器融合问题。如下图,展示了结合多个相机、IMU与轮速计进行观测的问题。可以看到,与VIO问题相似,这里也是将所有误差项进行联合优化。
下方展示了旷视机器人团队利用多传感器融合进行的实验。可以看到整个过程较为鲁棒,在机器人场景下累计误差远小于基于VIO的VINS-FUSION方法。另外由于VINS-FUSION没有对平面进行优化,因此如果物体在平面运动时间较长,系统估计的轨迹并不在同一个平面上。
关于多传感器融合也涉及到的关键技术,需要特别说明的是,由于引入了多种传感器,所以需要避免系统在长时间运转下出现的可观维度的变化,同时不能引入新的误差;另外,多种传感器的引入对于标定工作提出巨大挑战,具体可参考旷视研究院SLAM组在知乎上发布的标定系列文章(关注知乎专栏“旷视SLAM组”查阅详情);第三,同样是由于引入了多种传感器,所以在可观性理论上也存在很多值得分析的工作,即如何分析实际系统中的可观性维度,从而更好地估计系统变量。
专题2:Struct SLAM(结构化SLAM)
如上所述,传统的无论是纯视觉还是VIO方法均是基于点的SLAM系统。然而,为了构建一个更鲁棒、高精度的SLAM系统,同时也是为了寻找更紧凑、更直观的地图表示方式,就要充分利用图像中的点、线、面等信息。接下来介绍的Struct SLAM系统则使用空间中的结构化信息进行计算。
下图展示了用点与用结构化信息进行环境特征跟踪的区别,上方为点跟踪,下方为线跟踪。可以发现,对于基于点的特征跟踪,当前后帧的光照变化较大时,跟踪不稳定,即是跟踪上了,描述也匹配错误;相反,基于线的跟踪能很好克服这一困难。
分析原因可知,点结合线能够带来丰富的测量信息,另外直线、曲线这些有关环境边缘结构的信息对光照更加鲁棒,同时对整个SLAM地图建构而言,直线与曲线的表示力度更好,也更直观。
下图展示了完全基于线进行特征跟踪的双目系统。左下角绿色画面展示了由线创建的地图,可以发现,相对于用点进行地图建构的系统,线地图的可解释性做得更好。另外,在这个场景中,能够提取的点特征也远少于线特征,所以基于点特征工作的系统在这种条件下无法良好工作。
有了基于线的SLAM系统之后,进一步的直观想法自然是在系统中进行点、线融合。下图展示了融合点与直线表示的PL-VIO系统。在测试集上的实验结果显示,相较于纯用点表示的VIO系统,PL-VIO明显精度更高。
进一步,由于空间中很多边缘未必是直线,为了能够利用这些信息,旷视研究员也搭建了一个基于曲线的VO系统。
如上所述,点、线、面信息在表示特征时各具优势,因此结合三者进行工作的想法自然就被提上日程。下图展示了旷视研究院提出的基于三种表示的PLP-VIO系统,该系统可以融合点、线、面三个特征,同时也能把其约束都利用起来,实现了在空间中进行稠密建图的能力,同时相较于不用面的VIO系统,其精度也有了进一步提升 。
专题3:Visual Localization
前面介绍的SLAM系统融合了建图与定位工作,这在地图构建时经常涉及,但是当地图已经建好,进入实际使用阶段后,建图与定位往往是分离的。因此,本节介绍基于纯视觉的定位。
考虑到地图构建和应用的时间可能不同,不同时间下的环境光照、景物细节也可能发生变化,所以如果用传统视觉SLAM提取描述子的方法,则会因其适应性差,而导致系统工作性能不佳。为了获得高鲁棒性的定位效果,当前多采用基于深度学习的提取描述子的方法。
一般的定位流程如下:离线时,用前文的SLAM地图构建方法建立一个稀疏的点云地图,同时对关键帧提取全局和局部特征,构建数据库。如果场景较大,关键帧较多,则需要使用一些量化方法来对地图进行压缩。
当在线定位时,通过对当前画面提取全局特征,将其置于数据库搜索出若干相似帧,从而进行粗定位;进一步,在这些关键帧中进行2D-3D匹配,用基于深度学习的局部特征来进行精确定位。以此方法,最终能够得到纯视觉的定位效果。
这种方法的主要难点在于,如何设计能够很好学习局部、全局特征的网络,能够对光照等动态变化更加鲁棒;另外,实际应用过程中对地图的大小要求非常严格,不允许出现1GB+大小的地图,因此往往会使用很多地图压缩技术来压缩地图大小,缩短匹配时间。
下方展示了机器人场景下基于纯视觉的室内定位效果。
视觉定位的另一个典型应用场景是手机的室内定位和AR导航。下图演示了旷视研究院SLAM团队的工作。基于对室内场景建立的地图,可以直接使用手机摄像头进行定位,定位后,结合路径规划算法与VIO技术可以实现室内的实时AR导航。
专题4:激光 SLAM
在机器人SLAM中,当前更多采取的方式是激光SLAM,其问题定义与纯视觉SLAM类似,也是同时求解地图与位姿。不同之处在于,由于由激光得到的位姿更为精确,所以通常首先会求出激光的位姿,再利用该已知位姿进行建图。
在地图构建方式上,对于2D激光,往往会用栅格地图来表示,比如黑色表示激光遇到障碍物,白色为可通行区域,灰色为未观测区域;对于3D激光,一般会使用点云地图;此外还有TSDF地图,即记录到物体边缘距离的地图。
当然,无论哪种地图表示,其位姿估计一般都有scan-to-scan与scan-to-map两种方式。另外,激光SLAM一般也是多传感器问题,大多数场景下(尤其是工业机器人)使用的都是单线激光,特征非常少,在环境单一、凌乱地区定位效果很差。所以多传感器融合对提升定位鲁棒性至关重要。
下图展示了旷视研究院基于改进的ISDF方法开发的2D激光建图与定位系统。与其他激光SLAM方法相比,该方法能够更加精确、鲁棒地完成建图与定位工作,能够实现5毫米精度的定位效果。
下图展示的是高精度到点的算法效果,图中搭载该套算法的是旷视S500机器人,它正在进行滚轮对接的demo演示。可以发现,这种场景对于机器人的到点精度要求很高,需要实现1厘米以下的重复到点精度,否则对接可能出现误差。这里展示的机器人能够实现5毫米的到点精度,同时还能较少地受到周围动态环境的影响。
专题5:三维重建
三维重建即用深度传感器的输入,构建稠密点云地图的技术,一般分为刚体(这里主要指移动端)与非刚体两种实时重建。
在刚体的实时重建中,一般会有两种常用的技术,一种是Surfel-based方法,基于物体表面,适用于重建房间等场景;另一种是TSDF-based方法,适用于重建小型物体。
下图演示了Surfel-based重建房间的过程,目前旷视研究院在手机端可以实现10赫兹的重建帧率。
下图演示了TSDF的重建方式,适用于小物体重建,精度一般较高。
对于非刚体重建,一般也有两种方式,一种是Template-free模式,即没有模板的重建,对任意动态的场景进行重建;另一种是Template-based,即基于已有的物体模板,对其进行参数化的估计配准,从而将标准人体或人脸模板近似对应到当前观测上。这种模板式重建方法适用于不需要高精度要求的场景,例如娱乐类软件。
另外,三维重建技术也可以用于三维物体识别领域,如工业机器人分拣场景,以三维点云的匹配技术确定零部件的位置与姿态,进一步机器人可以根据零部件的预设操作位进行分拣操作。这种方式的优点在于不需要进行大量学习也可以实现较高的精度,是当前主流使用的技术。
专题6:语义SLAM & HDMap
与传统SLAM不同,语义SLAM是使用语义信息进行观测的SLAM系统,相较传统SLAM系统,语义SLAM系统不容易受到光照、动态、遮挡等因素的干扰。一般情况下,语义信息包含了类别、置信度与位置信息。
对于语义信息的参数化表示而言,以检测场景为例,可以将检测框的中心点作为观测,然后将该点视为是物体3D中心点的投影,如此便可以将观测与要求解的量关联起来。
对于语义SLAM的数据关联而言,由于语义属粗粒度信息,无法像传统SLAM一般使用诸如描述子的方式来进行特征点之间的匹配, 建立数据关联。因此在语义SLAM中进行数据关联通常不使用极大似然估计,而是使用最大期望估计,即EM估计。
下图展示了一个完全基于图像检测的语义SLAM系统,它能够通过检测地图中的物体来对其进行识别与定位。值得一提的是,这种技术也可能辅助完全基于图像的物体检测系统,因为语义SLAM系统自身拥有姿态信息,假若其在环境中走一圈,观察到同样的车辆(如果物体未动),此时就可以不需要使用重识别类的方法,而是基于该物体在空间中的三维点云位置判断其属于同一ID。
下图展示了在已经建好的稀疏三维地图中,仅使用分割信息作为观测,不使用任何描述子,而是通过特征点的位置和类别的方式进行定位的过程。可以看到,相比纯粹SIFT的效果,纯粹用语义进行定位的效果与真值更加接近,而基于SIFT的定位会产生较大误差;这种方法的另一优点在于,由于仅仅保存了空间中三维点的语义信息,而没有存描述信息,因此地图大小通常非常小,以kb级别计算,即是在非常大的场景,人们也能够很容易地应用这种定位方式。
下图展示了在室外无人驾驶场景,完全基于灯杆作为唯一观测实现的语义定位系统,在包含了整个城市级别信息的情况下,地图也只有10kb大小,另外由于观测只有灯杆,所以运行速度也非常快,实验结果显示,在这种仅有简单灯杆信息作为观测的情况下,定位精度也可以达到厘米级别。
结语
今天介绍的多种SLAM系统之间各具特点,在工业应用当中,并没有一种所谓的“Super SLAM”系统,能够适用于所有场景。因此当前多采用“对症下药”的方式,针对不同的场景使用不同的技术方案。
视频回顾
---------R Talker 介绍-------
刘骁,硕士毕业于北京航空航天大学计算机系。先后在腾讯研究院、微信团队工作,担任高级图像研究员,进行图像检索、增强现实等方向研发。2017年加入旷视研究院担任 SLAM 组负责人,专注于 SLAM、AR、三维重建等方向研究,相关成果在旷视机器人等业务中得到广泛应用。
SLAM与机器人技术交流群
关注最新最前沿的SLAM、增强现实、机器人技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)
(请务必注明:SLAM)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。
(不会时时在线,如果没能及时通过验证还请见谅)
长按关注我爱计算机视觉