CN117321631A - 使用自监督在线学习的slam引导的单目深度改进系统 - Google Patents
使用自监督在线学习的slam引导的单目深度改进系统 Download PDFInfo
- Publication number
- CN117321631A CN117321631A CN202280020728.3A CN202280020728A CN117321631A CN 117321631 A CN117321631 A CN 117321631A CN 202280020728 A CN202280020728 A CN 202280020728A CN 117321631 A CN117321631 A CN 117321631A
- Authority
- CN
- China
- Prior art keywords
- depth
- slam
- loss
- map
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006872 improvement Effects 0.000 title claims description 257
- 238000000034 method Methods 0.000 claims abstract description 129
- 238000012549 training Methods 0.000 claims abstract description 48
- 238000013507 mapping Methods 0.000 claims abstract description 37
- 230000003287 optical effect Effects 0.000 claims abstract description 36
- 230000004807 localization Effects 0.000 claims abstract description 10
- 238000013527 convolutional neural network Methods 0.000 claims description 42
- 238000003860 storage Methods 0.000 claims description 27
- 238000007670 refining Methods 0.000 claims 5
- 102000008115 Signaling Lymphocytic Activation Molecule Family Member 1 Human genes 0.000 description 208
- 108010074687 Signaling Lymphocytic Activation Molecule Family Member 1 Proteins 0.000 description 208
- 230000033001 locomotion Effects 0.000 description 26
- 230000006870 function Effects 0.000 description 25
- 238000013459 approach Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 20
- 238000012360 testing method Methods 0.000 description 17
- 238000012937 correction Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 13
- 238000002679 ablation Methods 0.000 description 11
- QBWCMBCROVPCKQ-UHFFFAOYSA-N chlorous acid Chemical compound OCl=O QBWCMBCROVPCKQ-UHFFFAOYSA-N 0.000 description 11
- 238000013135 deep learning Methods 0.000 description 11
- 239000012634 fragment Substances 0.000 description 11
- 230000000007 visual effect Effects 0.000 description 11
- 238000001914 filtration Methods 0.000 description 10
- 230000015556 catabolic process Effects 0.000 description 9
- 238000006731 degradation reaction Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000002474 experimental method Methods 0.000 description 7
- 230000001965 increasing effect Effects 0.000 description 7
- 238000005259 measurement Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000014616 translation Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000004927 fusion Effects 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 5
- 230000007613 environmental effect Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 201000006747 infectious mononucleosis Diseases 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000007500 overflow downdraw method Methods 0.000 description 3
- 238000004091 panning Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001627 detrimental effect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000010561 standard procedure Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000001931 thermography Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- YBJHBAHKTGYVGT-ZKWXMUAHSA-N (+)-Biotin Chemical compound N1C(=O)N[C@@H]2[C@H](CCCCC(=O)O)SC[C@@H]21 YBJHBAHKTGYVGT-ZKWXMUAHSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- LPQOADBMXVRBNX-UHFFFAOYSA-N ac1ldcw0 Chemical compound Cl.C1CN(C)CCN1C1=C(F)C=C2C(=O)C(C(O)=O)=CN3CCSC1=C32 LPQOADBMXVRBNX-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011158 quantitative evaluation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- FEPMHVLSLDOMQC-UHFFFAOYSA-N virginiamycin-S1 Natural products CC1OC(=O)C(C=2C=CC=CC=2)NC(=O)C2CC(=O)CCN2C(=O)C(CC=2C=CC=CC=2)N(C)C(=O)C2CCCN2C(=O)C(CC)NC(=O)C1NC(=O)C1=NC=CC=C1O FEPMHVLSLDOMQC-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Image Analysis (AREA)
Abstract
提供了用于改进深度估计模型的系统和方法。本公开的系统和方法可以接收多个图像帧,其包括由摄像头采集的环境的场景;执行包括增强的同时定位和建图(SLAM)的第一模块,其中,SLAM通过经训练的深度网络或基于学习的光流进行增强,第一模块用于基于在多个图像帧上执行增强的SLAM生成摄像头位姿、环境的地图点和每个图像帧的深度图;执行包括在线训练平台的第二模块,第二模块用于计算一个或多个损失参数并基于一个或多个损失参数迭代更新深度估计模型,以及使用改进的深度估计模型为多个图像生成改进的深度图。
Description
相关申请的交叉引用
本申请要求于2021年3月18日提交的发明名称为“使用自监督在线学习的SLAM引导的单目深度改进系统”、申请号为63/162,920的美国临时专利申请的优先权,其全部内容以引入的方式并入本文。
本申请还要求于2021年12月3日提交的发明名称为“GEOREFINE:用于几何一致密集建图的在线单目深度改进”、申请号为63/285,574的美国临时专利申请的优先权,其全部内容以引入的方式并入本文。
技术领域
本公开一般涉及用于从一个或多个图像进行深度估计的系统和方法,并且涉及将环境建图技术与在线学习方案相结合以改进用于深度估计的经训练的深度网络的系统和方法。
背景技术
几十年来,从单目图像进行3D重建一直是计算机视觉的一个活跃的研究领域。增强现实和/或虚拟现实应用中有3D重建的示例应用,其中,基于对环境的3D重建,虚拟物体可以放置在该环境的真实世界特征上。
传统上,通常通过几何技术(例如运动恢复结构(structure-form-motion,SfM)或同时定位和建图(simultaneous localization and mapping,SLAM)),以一组稀疏3D点的形式重建环境。多年来,单目几何方法不断改善,在还原3D地图点方面变得越来越准确。此方向的代表性开源系统包括COLMAP(一种离线SfM系统)和ORB-SLAM(一种在线SLAM系统)。
最近,基于深度学习的方法已被用于从单个图像预测密集深度图。这些模型使用真实值深度以监督方式进行训练,或者利用立体和/或单目图像对之间的光度一致性以自监督方式进行训练。在推理过程中,利用从数据中学到的先验知识,深度模型在无纹理图像区域中也能够生成密集的深度图像。但是,预测的深度仍有相对较高的误差。
有几种方法旨在获得几何系统和深度方法中的最优方案。一种方法令单目SLAM以及基于学习的深度预测形成一个自我改善的循环,以改善每个模块的性能。另一种方法采用测试时间微调策略,使用传统单目SfM系统(即COLMAP)的输出加强几何一致性。但是,这两种方法都需要以离线方式预先计算和存储来自SfM或SLAM的稀疏地图点和摄像头位姿,这不适用于某些无法进行数据预处理的在线应用。
发明内容
根据本公开技术的各种实施例,提供了用于以自监督方式从一个或多个图像估计深度图的系统和方法。
根据一些实施例,提供一种从单目图像进行深度估计的方法。该方法包括接收包括多个图像帧的图像序列,该多个图像帧中的每个图像帧包括环境的一个或多个特征;基于对多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图;从生成的地图点、摄像头位姿、以及深度图计算一个或多个损失参数;基于一个或多个损失参数改进经训练的深度估计模型,其中,改进的深度估计模型从图像序列预测深度图。
另一方面,提供了一种存储多个指令的非暂时性计算机可读存储介质。该指令由一个或多个处理器执行,并且当指令由一个或多个处理器执行时,使一个或多个处理器执行包括以下的方法:接收包括多个图像帧的图像序列,该多个图像帧中的每个图像帧包括环境的一个或多个特征,基于对多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图;从生成的地图点、摄像头位姿、以及深度图计算一个或多个损失参数,并且基于一个或多个损失参数改进经训练的深度估计模型,其中,改进的深度估计模型从图像序列预测深度图。
另一方面,提供了一种用于改进深度估计模型的系统。该系统包括用于存储指令的存储器,以及通信耦合到该存储器的一个或多个处理器。该一个或多个处理器用于执行指令以接收包括由摄像头采集的环境的场景的多个图像帧;执行第一模块,第一模块包括增强的同时定位和建图(simultaneous localization and mapping,SLAM),其中,SLAM通过经训练的深度网络或基于学习的光流进行增强,第一模块用于基于在多个图像帧上执行增强的SLAM,生成摄像头位姿、环境的地图点、以及每个图像帧的深度图;执行第二模块,第二模块包括在线训练平台,该第二模块用于计算一个或多个损失参数并基于该一个或多个损失参数迭代更新深度估计模型;该系统还包括使用改进的深度估计模型生成多个图像的改进的深度图。
结合示出根据本公开实施例的特征的附图,本公开技术的其他特征和方面将在以下具体实施方式中清晰呈现。本发明内容无意限制本公开中描述的任何发明的范围,这些发明仅由本公开所附的权利要求定义。
附图说明
根据一个或多个各种实施例,参照附图对本公开进行详细描述。提供这些图仅用于说明目的,仅描述典型或示例实施例。
图1是示出根据本公开各种实施例的深度改进系统的示意图。
图2是示出根据本公开实施例的示例深度改进系统的架构的图。
图3是图2的深度改进系统的不同版本在EuRoC序列数据集上的摄像头轨迹的图形比较。
图4示出了使用图2的深度改进系统在EuRoC序列数据集上进行的深度预测的定性比较。
图5是使用图2的深度改进系统和现有技术系统在KITTI序列数据集上实现的绝对相对误差的图形比较。
图6是示出根据本公开另一实施例的示例深度改进系统600的架构的图。
图7示出了使用图6的深度改进系统在EuRoC室内MAV数据集上进行的深度预测的定性比较。
图8示出了使用深度图生成的示例3D重建,其中,深度图由图6的深度改进系统从EuRoC室内MAV数据集生成。
图9示出了使用深度图生成的示例3D重建,其中,深度图由图6的深度改进系统在TUM-RGBD数据集上生成。
图10示出了使用图6的深度改进系统在TUM-RGBD数据集上进行的深度预测的定性比较的图。
图11示出了使用深度图生成的示例3D重建,其中的深度图由图6的深度改进系统从ScanNet数据集生成。
图12示出了使用深度图生成的另一示例3D重建,其中的深度图由图6的深度改进系统从TUM-RGBD数据集生成。
图13是可用于实现本公开描述的实施例的各种特征的示例计算组件。
这些提及的示例实施例并不用于限制或定义本公开,而是提供辅助理解本公开的示例。在具体实施方式中讨论了其他实施例并提供进一步的描述。
具体实施方式
本公开的系统和方法的实施例提供了一种使用自监督单目深度网络逐步改进的深度预测模型。
如上所述,用于环境的3D重建的现有几何和基于深度学习的方法需要以离线方式预先计算和存储来自运动恢复结构(structure-form-motion,SfM)或同时定位和建图(simultaneous localization and mapping,SLAM)的稀疏地图点和摄像头位姿,这可能不适用于某些无法进行数据预处理的在线应用。也就是说,例如,虽然可以在线执行SfM或SLAM,但这种处理是在3D重建之前执行的。必须预先计算和存储稀疏地图点和摄像头位姿,然后读入这些稀疏地图点和摄像头位姿以执行3D重建。例如,在将代理(例如,机器人系统或其它基于图像传感器的系统)部署到环境中之后,代理在环境周围移动时自动改善其3D感知能力可能是优选的。这种情况下,预存储的方法并不理想,本公开的在线学习方法更可取。例如,在执行在线学习以改进和改善建图模型的同时,可以在在线环境中跟踪和处理稀疏点和摄像头位姿以进行建图。
因此,本公开实施例提供了将建图技术(例如,SLAM和/或SfM)与使用在线学习方案改进的经训练的深度模型相结合的方法和系统。SLAM和SfM可以互换使用,因此本文称为SLAM。但是,本文中的实施例可以根据需要使用SLAM和/或SfM来实现。深度模型可以是使用自监督方法或以监督方式使用单目或立体图像训练的任何模型。然后,在在线平台使用测试图像序列逐步改进深度模型,这可以实现整个图像序列上的几何一致的深度预测。SLAM是一种示例建图技术,其可以实现为适合本公开实施例框架的在线系统。
本公开实施例提供了一种单目建图技术,该技术通过深度学习技术增强,该深度学习技术包括基于学习的深度预测(例如,经训练的深度网络)和/或基于学习的光流。增强后的建图技术处理来自图像序列的图像(例如,按顺序的图像的集合)并输出预测数据,例如深度预测(例如,深度图)、地图点、摄像头位姿、和/或位姿图。然后,将输出预测数据馈送到计算损失参数的训练平台中。损失参数可以包括用于改进深度预测模型的一个或多个自监督损失(例如,光度损失、地图点损失、和边缘感知深度平滑度损失)。此外,单独地或与上述自监督损失结合地,损失参数还可以包括遮挡感知深度一致性损失,该损失用于用于加强时间深度一致性,同时考虑了遮挡区域。此外,本公开实施例提供了一种关键帧机制,该机制用于在在线改进的早期阶段加快模型收敛。然后,可以使用改进的模型处理输入图像并提供改进的深度图,这些深度图可以融合在一起以生成采集了图像的环境的重建。
在示例实施例中,SLAM通过基于学习的深度预测增强以自提升SLAM的性能,该基于学习的深度预测包括经训练的深度网络(例如,根据各种实施例的卷积神经网络(convolutional neural network,CNN))。本公开的实施例不限于CNN,而是可以使用任何所需的网络架构,例如最近的基于Transformer的模型。然后将SLAM稀疏地图点、深度图、摄像头位姿、和位姿图馈送到在线训练平台以改进深度网络。改进的深度网络可用于输出深度图,深度图融合在一起以提供环境的3D重建。鉴于SLAM和深度预测(例如来自深度CNN的深度预测)之间的潜在尺度偏移,本公开实施例提供了使用从SLAM输出的地图点的尺度自校正。本公开的在线训练平台可以计算损失参数,该损失参数包括一个或多个自监督损失(例如,光度损失、地图点损失、和边缘感知深度平滑度损失)和/或遮挡感知深度一致性损失,以改进深度网络。另外,单独地或与上述自监督损失结合地,可以采用关键帧地图点存储器重访策略形式的关键帧机制,该机制用于在在线改进的早期阶段加快模型收敛。
虽然SLAM可以适用于在线系统,但在有挑战的情况下,SLAM的前端跟踪可能失败,有挑战的情况包括但不限于快速运动和大旋转(例如,在室内环境中可以发生)。为了促进系统的鲁棒性,本公开的另一示例实施例可以通过结合基于学习的光流方法增强单目建图技术的鲁棒性。这种方法的示例是递归全对场变换(recurrent all-pairs fieldtransforms,RAFT)光流(也称为RAFT流),RAFT流在各种未曾见过的场景中既稳健又准确。虽然本公开实施例可以参照RAFT流进行描述,但可以使用任一基于深度学习的流方法,例如但不限于全局运动聚合方法。本公开实施例还可以包括一个学习模块,该学习模块用于使用一个或多个损失参数(例如,光度损失、地图点损失和边缘感知深度平滑度损失)和/或遮挡感知深度一致性损失来改进深度预测模型。此外,基于对自监督改进的失败案例的仔细分析,本公开的实施例可以包括关键帧选择策略形式的有效关键帧机制,用于确保改进步骤不会恶化深度结果。
本文所指的在线训练或在线可以指基于网络的基础设施,例如,驻留在可通过无线网络接入的网络上的一个或多个服务器和一个或多个数据库。本公开的各种实施例提供了在基于云的基础设施上执行的方法以及此基于云的基础设施中的系统,该基于云的基础设施包括驻留在网络上的一个或多个云服务器以及一个或多个基于云的数据库。例如,本公开的实施例可以从网络边缘设备接收一个或多个图像作为图像序列,并传输到用于执行本公开的功能的一个或多个服务器以及一个或多个数据库。服务器和/或基于云的服务器可以是任何计算服务器。
应当注意,本公开中使用的术语“优化”、“最优”、“改进的”、“改善的”和“改善”等可用于表示实现尽可能有效或完美的性能。然而,正如阅读本文的本领域技术人员所认识到的,并不总是能完美实现性能。因此,这些术语还可以包括在给定情况下实现尽可能好、有效或实用的性能,或使得性能优于其他设置或参数所能达到的性能。
A.技术概述
1.SLAM
SLAM是一种在线几何系统,其重建由3D点组成的3D地图,同时根据重建后的3D地图定位与SLAM处理的图像对应的摄像头位姿。SLAM系统大致可分为两类:(i)直接SLAM,其直接最小化相邻的图像帧之间的光度误差,并使用半密集测量优化几何形状;(ii)基于特征的(间接)SLAM,其提取并跟踪从图像帧提取的一组稀疏特征点,然后在后端使用这些稀疏测量值计算几何形状。几何SLAM系统采用多种技术,包括鲁棒的运动估计、关键帧过程、捆集调整(bundle adjustment)、和位姿图优化,因此具有准确性和鲁棒性。
本公开的实施例可以利用本领域所知的任何SLAM系统和/或SLAM技术。例如,各种实施例使用基于特征的SLAM系统,例如ORB-SLAM(或其变体,例如ORB-SLAM2、ORB-SLAM3,本文统称为ORB-SLAM),ORB-SLAM是基于关键帧和特征的单目SLAM系统。ORB-SLAM可以提供准确的3D重建,并可以支持多种图像传感器模式和类型。例如,ORB-SLAM支持单目模式和RGB-D(红-绿-蓝-深度)模式,可以提供与深度网络的无缝集成以自提升SLAM。
其他示例SLAM系统包括但不限于:CNN-SLAM,一种混合SLAM系统,使用CNN深度来自提升稀疏几何SLAM的后端优化,并帮助还原用于3D重建的公制尺度;DROID-SLAM,使用深度学习框架从头构建SLAM,并实现摄像头位姿的准确性,但不具备密集建图的功能;CodeSLAM,一种实时的基于学习的SLAM系统,可在条件变分自编码器(variational auto-encoder,VAE)上优化紧凑深度代码,并同时执行密集建图;DeepFactor,使用完全可微的因子图优化扩展CodeSLAM;CodeMapping,通过向ORB-SLAM3引入单独的密集建图线程并另外根据稀疏地图点和重投影误差调节VAE,进一步改善CodeSLAM。本公开的各种实施例可以与上述SLAM系统(例如,CodeMapping)中的一个或多个在功能方面相似,但是本公开的实施例在系统设计方面显著不同,并且在密集建图方面更加准确。
传统的SLAM方法包括前端处理和后端处理。前端处理接收传感器信息(如图像或其他传感器信息)以执行本地地图点跟踪。后端处理使用来自前端的信息计算摄像头位姿和地图点,后端可以从上述摄像头位姿和地图点计算环境几何图形和位姿图。例如,在基于特征的几何SLAM技术中,前端从图像帧中提取一组稀疏特征点,并在序列中的每个图像帧中跟踪这些特征点。然后,后端使用这些稀疏测量值计算几何图形和位姿,以输出该几何图形的地图点、深度图、和摄像头位姿。
2.单目深度估计
监督的深度估计方法在早期方法中占主导地位。早期基于深度学习的方法通过CNN预测深度图,并引入了如今使用的一组深度评估指标。另一种方法将深度估计表述为持续的条件随机场(conditional random field,CRF)学习问题。又一种方法利用深度有序回归损失训练深度网络。其他一些方法将深度估计与其他任务(例如,位姿估计和表面法线回归)相结合。
自监督深度估计最近变得流行。早期的自监督方法应用左右立体像对之间的光度损失,以无监督/自监督的方式训练单目深度模型。另一种方法引入了位姿网络,以方便使用相邻时间图像的光度损失。后来提出了自监督方法以改善光度自监督。一些方法利用额外的流网络加强跨任务一致性。其他一些方法在训练过程中采用了新的损失项。例如,一种方法使用时间深度尺度一致性项以产生一致的深度预测。第二种方法观察到深度往往收敛到单目设置中较小的值,并使用简单的归一化方法正则化深度。还引入了新的网络架构改善性能。沿此方向,循环网络被用于位姿和/或深度网络。最近的方法(例如,Monodepth2方法)提供了各种微调策略,包括每像素最小光度损失、自动掩膜策略、和多尺度框架。本公开的实施例实现了自监督在线深度改进,其与上述各种系统兼容,但在训练损失和训练策略方面增加了一些重要的修改,从而显著改善现有方法。
一些方法不使用真实值深度,而是从现成的SfM或SLAM获得训练深度数据。例如,一种方法通过几何SfM对互联网照片进行3D重建,然后使用重建后的深度训练深度网络。另一种方法通过观察和重建静止的人物来学习移动中的人物的深度。又一种方法通过使用各种源(包括真实值深度和几何重建深度)训练深度网络以改善深度模型的泛化性能。还有一种方法使用SLAM和深度模型形成一个自改善的循环,以改善SLAM和深度模型各自的性能。一种方法通过展开场景流预测处理移动物体。另一种方法使用COLMAP输出,采用测试时微调策略加强几何一致性。另一种方法通过使用变形样条估计摄像头位姿,从而绕过了运行COLMAP的需要。这些方法中的大多数都需要预处理步骤以计算和存储3D重建。相反,本公开的实施例以在线方式执行,不需要执行离线3D重建。
3.在线学习
在自监督深度估计的背景中,在线学习仍然是较少探索的领域。有一种方法是例外,该方法提出了一种在线元学习算法,用于以自监督的方式在线适应视觉里程计(visualodometry,VO)。该方法基于具有深度网络和位姿网络的SfM学习器实现,但仅评估位姿网络的性能。虽然这种现有方法显示出的位姿结果相对于之前基于学习的VO方法有所改善,但其性能仍然远远落后于几何SLAM方法(例如ORB-SLAM)。因此,本公开的实施例充分利用了几何方法和深度学习方法,通过长期研究的几何SfM或SLAM获得准确的摄像头位姿,并且通过基于学习的模型生成高质量的密集深度。在实施例中,该目标通过下面描述的SLAM引导的增量深度改进系统实现。
另一相关领域是用于监督分类任务的增量学习。增量学习面临的一个基本问题是灾难性遗忘(catastrophic forgetting)问题,即神经网络往往忘记其在以前的课程或任务中学到的东西。在根据本公开的实施例的自监督在线学习中,与对抗灾难性遗忘相比,一个更重要的方面是如何加快深度模型改进在测试序列上的收敛。为此,在本公开的实施例中执行了简单的记忆重访训练策略,以帮助模型在改进的早期阶段比现有技术方法更快地收敛。
B.深度改进系统概述
图1是根据本公开各种实施例的深度改进系统100的示意图。深度改进系统100用于创建和改进(例如,示教)深度预测模型以从单目图像序列生成几何一致的密集图,几何一致的密集图可用于创建环境的重建(例如,2D或3D重建)。可以使用例如一个或多个处理器和存储器组件(例如图13的计算机系统1300)实现深度改进系统100。根据一些实施方式,深度改进系统100的实施例也可以称为GeoRefine。
深度改进系统100的实施例包括增强的SLAM模块110,该模块用于为单目图像帧114的序列确定地图点和摄像头位姿112(例如,增强的单目几何SLAM)。SLAM模块110接收每个图像的深度图116以及作为图像序列的输入图像帧114,并使用深度图116和图像帧114确定地图点和摄像头位姿112。深度图116可以由深度网络从输入图像114生成。例如,图像114可以被输入到创建深度图116的深度网络124(如下所述)中。SLAM模块110通过结合深度学习技术增强,这使得SLAM模块110与传统SLAM技术相比更加稳健。
深度改进系统100还包括深度改进模块120,深度改进模块120用于实现在线训练平台。深度改进模块120根据摄像头平移(例如平移运动)的大小选择一组关键帧122。关键帧122是从图像帧114中选择的若干图像帧。所选的关键帧122与来自SLAM 110的地图点和摄像头位姿112一起被输入到深度网络124(本文有时称为深度估计网络或深度估计模型),深度网络124持续更新以为每个图像帧114生成改进的深度图126。深度改进模块120执行训练平台以计算所选的关键帧122的自监督损失。由深度改进模块120计算的各种损失可能是计算密集型的,并且目前在边缘设备上不可行。因此,在线平台可以有利于提供高效计算学习参数(例如,损失和关键帧机制)所需的计算资源。但是,随着边缘设备(例如,边缘计算系统,例如但不限于个人计算机、本地服务器等)在计算资源方面变得更加强大,深度改进模块120和/或深度改进系统100的一个或多个剩余模块可以在一个或多个边缘设备上执行。根据一些实施例,深度网络可以是深度CNN。然后,可以从改进的深度图126重建全局一致的密集图132,例如,使用全局密集建图模块130执行本领域所知的任何融合方法之一(例如,截断符号距离函数(truncated signed distance function,TSDF)融合方法、捆集融合(bundle fusion)方法等)。全局密集建图模块130是可选模块,并且在多个实施例中可以从深度改进系统100省略。例如,可以执行增强的SLAM模块110和深度改进模块120以生成改进的深度图,该深度图可以提供给另一实体,该实体可以根据需要用于处理改进的深度图。
增强的SLAM模块110和深度改进模块120可以并行(例如,同时)执行和/或串行执行(例如,首先执行增强的SLAM模块110,然后执行深度改进模块120)。
本公开的实施例使用由摄像头(例如,可见光摄像头、IR摄像头、热成像摄像头、超声摄像头和其他摄像头)或用于采集视频为多个图像帧和/或环境的静态图像的其他图像传感器采集的图像或图像帧。在各种实施例中,图像可以由单目图像传感器采集,单目图像传感器用于采集单目视频为多个图像帧,多个图像帧中的每个图像帧包括单目图像形式的环境不同场景。如本文所述,“单目图像”是来自单个(例如,单目)摄像头的图像,并且涵盖视场(field-of-view,FOV)或周围环境的一部分场景(例如,周围环境的子区域)。例如,当图像传感器在环境中移动时,环境中的物体和特征的视角发生变化,并且所描绘的物体/特征本身也发生变化,因此描绘了环境的单独场景(例如,物体/特征的特定组合)。单目图像可以不包括指示深度的任何显式的附加模态,也可以不包括来自另一摄像头的可导出深度的任何显式的对应图像(例如,没有立体图像传感器对)。立体图像可以集成来自并排安装的单独摄像头的左图像和右图像以提供额外的深度通道,与之相比,单目图像不包括显式深度信息(例如,通过比较立体图像像素得出的视差图)。相反,单目图像可以通过其中描绘的元素的透视和尺寸关系隐式提供深度信息。单目图像可以是前向(例如行进方向)、60度FOV、90度FOV、120度FOV、后/侧向FOV图像或基于图像传感器的位置和特性的一些其他子区域的图像。
在一些实施例中,由深度改进系统100处理的图像或图像帧可以直接或间接地从摄像头获取。例如,来自摄像头的图像可以通过有线或无线连接馈送到深度改进系统100并被实时处理。在另一示例中,图像可以存储在存储器中并检索以进行处理。在一些示例中,可以实时处理摄像头采集的一个图像,同时可以从存储中检索第二图像。
深度改进系统100可以托管在服务器150上,服务器150实现为例如图13的计算机系统1300。服务器150可以用于执行模块110和120,模块110和120可以存储在通信耦合到服务器150的数据库或其他存储设备中。服务器150可以包括专用服务器,或者可以替代地包括云实例,其利用一台或多台服务器的共享资源。这些服务器或云实例可以共址和/或在地理上分散。服务器还可包括或通信连接到一个或多个数据库。可以利用任何合适的数据库,包括基于云的数据库实例和专有数据库。另外,服务器150可以经由一个或多个网络140通信连接到一个或多个边缘设备。边缘设备可以是包括用于采集图像序列114的图像传感器或摄像头的任何设备。图像序列可以经由网络140被传送到服务器150。虽然图1中示出了服务器150用于执行模块110、120和130中的每个模块,但是如上所述,模块130是可选的并且可以不包括在服务器150中。也就是说,例如,远离服务器150的另一服务器可以用于从模块120接收改进的深度图,然后在改进的深度图上执行全局密集建图。
网络140可以包括互联网,并且服务器150可以使用标准传输协议通过互联网与边缘设备通信。网络140可以是本领域所知的任何网络,例如但不限于无线蜂窝网络、局域网(local area network,LAN)、广域网(wide area network,WAN)等。
下面提供了深度改进系统100的实施例。例如,下面结合图2-图5的描述针对深度改进系统100的示例实施例,其中,深度改进系统100包括增强的SLAM模块100以及深度改进模块120,增强的SLAM模块100结合基于深度学习的深度预测(例如,深度网络增强SLAM),深度改进模块120基于增强的SLAM的输出,利用一个或多个自监督损失逐步改进深度预测模型。结合图6-图11描述了深度改进系统100的另一示例实施例,该实施例包括增强的SLAM模块110以及在线改进模块120,增强的SLAM模块110结合位于SLAM前端的基于学习的光流(例如,RAFT-flow增强的SLAM)以及SLAM,在线改进模块120基于增强的基于学习的光流的输出,利用自监督损失逐步改进深度预测模型。
C.基于学习的深度预测增强SLAM实施例
单目视觉SLAM和基于学习的深度预测可以彼此互补。例如,单目SLAM可以准确重建稀疏地图点和摄像头位姿,但限于纹理丰富的区域。而基于学习的深度预测即使在无纹理区域也可以利用训练数据中的先验真实值和/或立体信息输出密集深度图,但往往具有较大的深度误差。鉴于此,本文的实施例将SLAM与自监督单目深度网络结合以逐步地改进深度预测模型。这些实施例使用从在单目图像上执行的经训练深度估计网络或模型(例如深度CNN等)获得的密集深度预测来自提升SLAM。同时,实施例采用增强的SLAM输出(例如,地图点、摄像头位姿、深度图等)作为输出预测数据,以通过计算自监督损失的在线训练平台改进深度模型。在线学习还可以使用(i)遮挡感知深度一致性损失以加强时间一致性,和/或(ii)地图点记忆重访策略以加速训练模型的收敛。
1.方法和架构
图2是根据本文公开的实施例的示例深度改进系统200的架构的示意图。深度改进系统200用于创建和改进深度预测模型,以从单目图像序列生成几何一致的密集建图。深度改进系统200是如上所述的深度改进系统100的示例实施方式。可以使用例如一个或多个处理器和存储器组件(例如图13的计算机系统1300)实现深度改进系统200。如上文结合图1所述,深度改进系统200可以托管在服务器上,该服务器可以包括专用服务器基础设施和/或基于云的基础设施。
深度改进系统200用于经由自监督在线学习执行几何SLAM引导的单目深度改进方法。如图2所示,深度改进系统200包括增强的SLAM模块210和深度改进模块230。增强的SLAM模块210和深度改进模块230可以并行执行(例如,同时)和/或串行执行(例如,首先执行增强的SLAM模块210,随后执行深度改进模块230)。在各种实施例中,增强的SLAM模块210包括深度网络增强的SLAM,其中深度网络用于执行基于学习的深度预测。例如,单目图像202的序列经由网络240发送到经训练的深度网络204。经训练的深度网络204(例如,深度估计网络或模型)输出预测的深度图206作为输入图像的每个像素的深度值。深度网络204可以是CNN深度网络(或其他)并且深度图206可以包括CNN深度值。
除本文另有规定外,增强的SLAM模块210可以类似于图1的增强的SLAM模块110,深度改进模块230可以类似于图1的深度改进模块120。此外,虽然本文中的实施例是参照CNN增强的SLAM描述的,但本公开的实施例不限于仅通过CNN进行增强。相反,可以根据需要应用任何用于从图像序列预测深度值的基于学习的深度网络。
作为说明性示例,深度网络204可以包括一组神经网络层,该组神经网络层包括卷积部分(例如,形成编码器108的2D卷积层),卷积部分流入解码器层(例如,形成解码器110的具有上采样算子的2D卷积层)。编码器接收图像(例如,图像202之一)作为输入,并处理该图像以从中提取特征(例如,特征表示)。特征可以是图像的各方面,其表示图像内在编码的空间信息。因此,形成编码器的编码层的功能是例如将编码的特征折叠(即,调整特征图的尺寸以保留特征图中包括的特征表示)到单独的通道中,迭代地减小图像的空间尺寸,同时打包具有关于特征嵌入状态的信息的附加通道。因此,额外通道的添加避免了编码过程的有损性质,并有利于保留关于原始单目图像的更多信息(例如,特征细节)。
编码器包括由二维(2D)卷积层、打包块、和残差块组合形成的多个编码层。此外,单独的编码层生成以编码特征图(也称为张量)形式的输出,编码层将此输出提供给深度网络204中的后续层。因此,编码器可以包括各种单独的层,这些单独的层作用于图像,并随后作用于派生/中间特征图,这些特征图将图像的视觉信息转换为以不同通道的编码特征的形式的嵌入状态信息。
解码器可以展开(例如,调整张量的维度以提取特征)先前编码的空间信息,以便根据学习到的与编码特征相关联的相关性导出图像的深度图206。例如,解码层可以用于通过子像素卷积和其他机制将先前编码的特征上采样到深度图206中,深度图206可以具有不同的分辨率。在一些实施例中,解码层包括解包块、二维卷积层、和逆深度层,用作特征/深度图的不同尺度的输出层。深度图可以是与输入图像对应的数据结构,其指示到其中表示的物体/特征的距离/深度。另外,在各种实施例中,深度图206可以是具有单独的数据值的张量,这些数据值指示图像中每像素的对应位置的深度。
深度网络204还可以包括跳过连接(skip connection),该跳过连接用于在编码器和解码器之间提供残差信息,以便于各个单独的组件之间记忆高级特征。虽然按照CNN深度网络讨论深度网络204,但如前所述,在各种方法中,深度网络204可以采用不同的形式,并且通常具有处理单目图像并提供深度图的功能,这些深度图是关于图像中描绘的物体/特征的距离的每像素估计。
1.1增强的SLAM模块
单目视觉SLAM只可以在纹理区域产生3D地图点。为了改善SLAM的性能,现有的一种方法将远距离关键帧的监督学习深度与大规模直接单目SLAM(large scaledirectmonocular SLAM,LSD-SLAM)的后端优化融合在一起。另一种方法将LSD-SLAM与CNN深度相结合,其中,由使用立体图像对进行训练的自监督模型预测该CNN深度。
增强的SLAM模块210可以使用深度网络预测的深度206作为SLAM的输入。例如,以类似于本领域所知方法的伪RGBD(pRGBD)方式作为RGB-D ORB-SLAM的输入。如本公开所用,pRGBD是指不使用深度传感器(例如,LiDAR或飞行时间传感器)而是从深度网络创建深度图的方法。现有技术方法使用通过单目图像序列训练的深度模型,而增强的SLAM模块210利用通过立体和/或单目图像训练的深度模型,使得尺度信息可以保留在模型中。与单目SLAM相比,增强的SLAM模块210具有以下优点:(i)网络预测的深度(特别是CNN深度)使得无论摄像头运动如何,系统都能够立即初始化,而原始单目SLAM需要足够的摄像头运动才能成功初始化;(ii)网络预测的深度(特别是CNN深度,但也可以使用任何所需的深度网络架构,例如,最近的基于Transformer的模型)令SLAM更加稳健,特别是在具有大块无纹理区域或快速摄像头运动的帧中。
增强的SLAM模块210包括接收网络预测的深度206和图像序列202的前端跟踪块212。使用网络预测的深度206和图像序列202,前端跟踪块212从每个图像提取稀疏特征点并跟踪在图像序列202上跟踪的稀疏特征点。此外,如下面结合图6更详细的描述,一些实施例还可以从内部测量单元(internal measurement unit,IMU)传感器接收IMU数据作为具有图像202的输入。因此,一些实施例可以支持多种传感器模式并提供最少的传感器设置。例如,使用带有(或不带有)IMU传感器的单目图像传感器促进两种模式,例如单目模式和视觉惯性(VI)模式。此外,因为深度网络204用于推断每个图像202的深度图,所以还可以实现pRGBD模式。下面参考图6提供关于VI模式和pRGBD模式的进一步细节,其可以类似地在深度改进系统200中实现。
增强的SLAM模块210包括后端建图块214,后端建图块214用于使用来自前端跟踪块212的信息,计算可用于计算环境几何形状和位姿图的摄像头位姿222和地图点224。例如,地图点224可以包括世界坐标系中的3D坐标信息,后端使用这些稀疏测量结果从坐标信息计算几何形状和位姿,以输出几何形状的地图点222和摄像头位姿224。地图点的坐标可以包括深度值,例如基于世界坐标系的距离图像传感器的深度。地图点222可以存储在地图数据库216(或其他存储设备)中。
此外,网络预测的深度往往会受到帧间的全局尺度偏移的影响。另一方面,几何SLAM可以通过确保大时间窗口上的几何一致性来帮助纠正尺度偏移。因此,增强的SLAM模块210用于执行尺度自校正方法以缓解这一问题。例如,首先,SLAM在图像序列上运行序列中的图像帧子集作为热启动,例如,顺序在前的任何所需数量的图像帧(例如,前10、20、30、40、50等)以允许SLAM生成环境的初始建图作为热启动。这可以让SLAM使用几何约束来校正不一致的网络预测深度。在热启动之后,针对当前帧,建图块214通过下式计算SLAM确定的地图点和这些地图点的网络预测深度之间的尺度偏移因子Scorrection:
其中,N是当前帧中可见(例如,存在)的地图点的数量,是SLAM为当前帧中的第n个地图点预测的深度,/>是对应的网络预测深度。然后,下一个按顺序的帧的网络预测的深度可以通过在输入SLAM之前乘以Scorrection进行尺度校正。这种尺度自校正方法可以显著提高摄像头位姿估计的准确性以及深度预测的改善程度(如下面结合图3和图4以及表1-表3所述)。
1.2深度改进模块
在深度改进模块230处,使用用于计算一个或多个损失参数的训练平台,针对每个输入的图像帧,深度预测模型被逐步地改进。训练平台235可以包括光度损失块236、边缘感知深度平滑度损失块238、地图点损失块237、和深度一致性损失块239中的一个或多个。在各种实施例中,训练平台235是在线训练平台。
为了执行在线学习,深度改进模块230中包括的数据加载器231从增强的SLAM模块210接收地图点224和摄像头位姿222。数据加载器231用于从增强的SLAM模块210和图像序列源(例如,图像传感器或存储设备)中提取、读取和/或加载数据。数据加载器231然后将地图点224、摄像头位姿222和位姿图226馈入帧-位姿片段块232。
帧-位姿片段块232用于构建具有同步的图像-位姿对的帧片段(frame snippet)。帧片段是与对应位姿同步的图像帧202的子集(例如,通过包括在摄像头位姿222和图像帧202的元数据中的时间戳数据)。片段中包括的帧数可以是所需的任意数量,例如,3、5、6等。
训练平台235接收来自帧-位姿片段块236的输出,并使用该输出确定一个或多个自监督损失。
例如,光度损失块236可以用于确定来自帧-位姿片段块232的帧片段的光度损失(Lp)。光度损失可以定义为目标帧Ii与合成帧Ij→i(使用深度图像Di和相对位姿Tj→i从源帧Ij扭曲而得)之间的差:
Lp=∑j pe(Ii,Ij→i) 式(2)
其中,pe()是使用l1范数(例如,目标帧Ii以及合成帧Ij→i中每个值的绝对值的总和)和结构相似性指数(structural similarity index,SSIM)(例如,量化由数据压缩等处理或数据传输损失造成的图像降质的感知指标)计算的光度损失函数。虽然一些光度损失函数使用3帧片段构建照片一致性,但深度改进模块230的一些实施例可以通过使用n帧片段采用更宽的基线光度损失,其中n是片段中的帧数。例如,帧-位姿片段块232构建可以使用的6帧片段,其中 表示与当前帧Ii的相邻帧对应的一组帧。该6帧片段是根据经验定义的,上面的例子仅用于说明目的。此外,虽然本文提供了6帧片段,但这仅用于说明目的,可以使用任何n帧片段,其中n是根据经验设置的整数。深度改进模块230与现有技术系统的另一重要区别在于,如本领域所知,来自增强的SLAM模块210的相对位姿Tj→i(例如,作为摄像头位姿222的一部分)比由位姿网络预测的位姿更准确。
边缘感知归一化平滑度损失块238可以用于将边缘感知归一化平滑度损失(Ls)确定为:
其中,是防止深度尺度减小的均值归一化反深度,d表示来自对应深度图Dt的深度值,/>和/>表示偏导数,其中x和y是对应深度图Dt内的坐标。注意,边缘感知归一化平滑度损失(Ls)是针对当前深度图Dt计算的。
地图点224可以通过模块210中的捆集调整(例如,作为后端建图块214中的已知SLAM技术的一部分)进行广泛的优化,因此这些地图点224的深度值可以比对应的网络预测深度206更准确。地图点损失块237利用这些地图点SLAM预测的深度来构建地图点损失作为深度改进模型的监督信号。该地图点损失可以是SLAM地图点224与对应的CNN深度206之间的差值如下:
其中,在如下所述的过滤之后,对于第i个图像帧,有来自增强SLAM模块210的Ni个3D地图点224,Di,n是来自深度网络204的对第i个图像帧的第n个地图点的深度预测,是对应的SLAM深度。注意,地图点损失(Lm)是针对中心帧(例如,当前图像帧)的深度图Di计算的。过滤确保了使用准确的地图点。例如,首先,地图点损失块237确定当前图像帧的每个地图点224是否在多个SLAM关键帧中存在(例如,能观察到)。此过滤任务的关键帧由SLAM确定,并且与下面描述的用于关键帧机制的关键帧不同。虽然可以使用任意数量的关键帧(例如,2、3、4、5、6等),但是在各种实施例中,关键帧的数量可以被设置为5。如果没有在该多个SLAM关键帧中观察到地图点,则丢弃此地图点。以此方式,地图点损失块237使用在序列中的多个帧而不仅是单个帧中找到的地图点。其次,地图点损失块237将地图点从世界坐标系(例如,由地图块214构建的环境几何结构的坐标系)投影到当前图像帧的坐标系,并确定每个地图点的投影误差。如果给定地图点的投影误差超过误差阈值,则丢弃该给定地图点。误差阈值可以基于可接受的容差根据需要设置,例如,阈值可以是3个像素、4个像素、5个像素等。另外,投影深度与对应的网络预测深度206有一定差值的地图点也被丢弃。例如,如果地图点的投影深度与网络预测深度206相差超过20%,则该地图点被丢弃。可以根据需要使用其他差值,例如,可以通过减小差值(例如,10%)加强严格性,或者通过增加差值(例如,30%)放松严格性。过滤可以消除前景-背景边界附近不良的地图点-网络深度对应对。
除了上述损失项之外,本公开的实施例执行遮挡感知深度一致性损失块239,该遮挡感知深度一致性损失块239用于确定遮挡感知深度一致性损失,本公开的实施例还执行关键帧重访块234,该关键帧重访块234用于执行关键帧记忆重访策略以构建于在线深度改进管道之上。
1.2.1遮挡感知深度一致性损失
遮挡感知深度一致性损失块239通过数据加载器231接收由深度网络204预测的深度图以及来自跟踪块216的摄像头位姿222中包括的相对位姿T=[R|t]。
给定两个相邻图像帧的深度图(例如Di和Dj)及其相对位姿T=[R|t],遮挡感知深度一致性损失块239构建Di和Dj之间的稳健的一致性损失,以使时间i和j处的深度预测彼此一致。注意,由于用于采集Ii和Ij的图像传感器随时间移动,所以帧i和j对应位置的深度值不一定相等。
帧i处的像素x与帧j的对应关系可以计算如下:
其中,π(·)是投影函数,其将位姿T的坐标[x,y,z]T映射到[x/z,y/z]T,Ri→j和ti→j是从帧i到帧j的旋转(R)和平移(t),是xi的齐次形式,K表示图像传感器内参,K对于给定图像序列的每个图像帧都相同。由于xi→j是非整数,因此应用双线性采样(例如逆扭曲)获得帧j中地图点x的深度值,例如Dj<xi→j>,其中<·>记为双线性采样算子。进一步,将Dj<xi→j>传递到帧i的坐标系以构建一致性损失:
/>
Xi→j→i表示一组3D坐标。对应的深度是Xi→j→i的第三个元素,记为3D矢量[Xi→j→i]3。初始深度一致性损失定义为:
在式(7)中确定的深度一致性损失可能包括遮挡区域中的像素,这可能不利于深度改进模型。为了有效地处理这种遮挡,遮挡感知深度一致性损失块239执行如本领域所知的每像素的光度损失。每像素的光度损失不一定与光度损失块236计算的损失相同。在每像素的光度损失之后,通过取式(7)中的深度一致性损失的最小值,而不是一组相邻帧的平均值,来确定每像素深度一致性损失:
1.2.2关键帧记忆重访
在测试图像序列的深度改进的初始阶段,尤其是当训练序列和测试序列之间存在大的域间隙(domain gap)时,预测深度网络或模型204不能快速收敛以适应当前环境。例如,如果深度改进系统200(例如,深度网络204)在室外图像序列(或多个不同序列)上进行训练,然后在室内图像序列上进行测试和改进,则存在大的域间隙。类似地,在训练图像序列中的平移和/或旋转运动显著小于测试和改进图像序列中的平移和/或旋转运动的情况下,可能存在较大的域间隙。为了加速模型收敛,深度改进模块230包括记忆重访策略,以在将训练平台235应用于当前帧之前,利用来自先前关键帧的地图点周期性地微调网络。选择关键帧地图点进行记忆重访是因为关键帧是轻量级的(例如,记忆效率比光度损失更高)并且通过局部或全局捆集调整中的几何约束进行了高度优化。重访策略包括使用最近的Nkey个关键帧和对应的地图点而不是如上使用的整个图像序列来构建地图点损失(例如,如上式(4)所示)。作为示例,最近的Nkey个关键帧可以是按顺序最近的20个帧。但是,Nkey个关键帧可以是重访所需的任何数量。这种策略可以使模型收敛得更快,从而实现更好的深度改进。
提供了记忆重访以充分利用关键帧地图点以实现快速收敛,而现有技术系统则采用增量学习缓解灾难性遗忘问题。
1.2.3整体改进策略
来自训练平台235的整体改进损失(L)可以设置为:
L=Lp+λsLs+λm Lm+λcLc 式(9)
其中,λs、λm和λc是被选择用于平衡每个损失项的贡献的加权参数。可以在图像帧的子集(例如,验证集)上调整加权参数,例如,通过枚举一组候选权重并选择提供最优结果的权重。
给定经训练的深度模型204,深度改进系统600首先在不应用尺度自校正的情况下,预热增强的SLAM模块210直到帧tw,这使得增强的SLAM模块210实现稳定的重建。帧tw可以是任何按照经验的图像帧,例如第50个或任何其他选定的图像帧。然后,在帧tw之后,启动尺度自校正。重建的地图点224和摄像头位姿222经由数据加载器231同时传递到深度改进模块230以执行训练平台235。在第一帧tkey期间,重新访问最近的前Nkey个关键帧。来自最近的前Nkey个关键帧的地图点损失被用来训练深度网络204(例如,改进深度网络204)一个梯度步骤。然后,如下面的算法1所示,通过最小化式(9)中的损失项以及执行k个步骤的梯度下降,对当前帧(例如,第一次传递的第一帧tkey)执行训练平台235。之后,可将改进的深度网络应用于当前图像帧以输出改进的深度图240(Di)。
下面将示例算法总结为算法1。
2.实验
在两个数据集上评估图2的深度改进系统200:EuRoC数据集和卡尔斯鲁厄理工学院以及丰田技术学院(KITTI)数据集。提供了消融研究(ablation study)以验证深度改进系统200的有效性。提供了EuRoC数据集和KITTI数据集的定量和定性结果。对于定量深度评估,采用标准误差和准确性指标,包括绝对相对(absolute relative,Abs Rel)误差、平方相对(squared relative,Sq Rel)误差、均方根误差(root-mean-square error,RMSE)、RMSE log、δ<1.25(例如δ1)、δ<1.252(例如δ2)和δ<1.253(例如δ3)。
2.1实施细节
深度改进系统200包括增强的SLAM模块210和深度改进模块230。如上所述,在一些实施例中,增强的SLAM模块210可以基于以RGB-D模式使用RGB图像和CNN深度图像运行的ORB-SLAM。在一些实施例中,深度改进模块230可以基于具有数据加载器231和训练平台235的Monodepth2。在一些实施例中,机器人操作系统(robot operating system,ROS)可以用于在模块之间交换数据以实现跨语言兼容性。在线学习期间,k设置为5,令深度网络进行5步的梯度下降。使用了ADAM算法作为优化器,学习率设置为1.0e-5。加权参数λs设置为1.0e-3,权重参数λc设置为1.0e-2。由于EuRoC数据集和KITTI数据集的深度范围不同,因此这些数据集的权重参数λm设置为不同的值。对于这些实验,EuRoC数据集的λm设置为5.0e-2,KITTI数据集的λm设置为1.0e-3。因为在线训练期间批(batch)大小为1,所以批量归一化层被冻结在深度网络中。
SLAM被设置为通过用地图点校正CNN深度尺度,在大的时间窗口上保持一致的尺度。为SLAM提供了热启动期用于初始化重建。对于此实施方式,提供了500帧用于EuRoCVicon Room序列中的热启动。KITTI序列的长度差异很大,热启动期被设置为不超过总帧数的40%。
使用标准来过滤地图点,以保证用于在线深度改进的良好监督信号。首先,丢弃在少于5个关键帧中观察到的地图点。然后,丢弃重投影误差大于1像素的地图点。最后,如果地图点深度与原始CNN深度相差此地图点深度的30%,则该地图点也被丢弃。
对于每一帧,SLAM关键帧位姿和对应的地图点被更新并推送到在线深度改进模块230。因为在SLAM后端优化后,某些地图点可能变为合格/不合格,所以对每一帧都进行了地图点过滤。关键帧位姿和地图点存储在按帧ID编制索引的字典中。tkey设置为500,Nkey设置为24。对于前500帧,令系统重新访问最多24个最近关键帧。
2.2 EuRoC室内MAV数据集
EuRoC微型飞行器(micro air vehicle,MAV)数据集是室内数据集,其包括立体图像序列和摄像头参数(内参和外参)。安装有全局快门立体摄像头的MAV用于采集大型厂房(machine hall)和Vicon室(Vicon room)中的数据。在厂房中记录了五个序列,Vicon室中记录了六个序列。使用Vicon设备和Leica MS50激光扫描仪获得真实值摄像头的位姿和深度。根据以下几个因素,这些序列被分为简单、中等或困难:是否具有良好的纹理、在明亮或黑暗的场景中、以及是否存在运动模糊。使用五个序列,即MH-01、MH_02、MH_04、V1_01和V1_02,作为训练集预训练Monodepth2,并使用除V2_03之外的其余Vicon序列评估所有竞争方法的性能。由于其中一台摄像头丢失帧,因此序列V2_03被排除。使用提供的内参校正图像以消除图像失真。为了生成真实值深度,激光点云被投影到左侧摄像头的图像平面上。图像大小调整为754×480,以进行在线深度改进。
消融研究
对EuRoC序列V2_01进行了消融研究,以衡量每个组件对深度改进系统200的贡献。首先,通过运行在线学习算法构建基础模型,光度损失如式(2)所示,深度平滑度损失如式(3)所示。注意,光度损失使用来自增强的SLAM模块210的摄像头位姿,而不是来自位姿网络的摄像头位姿。该基础模型记为“BaseModel”。然后,向该基础模型逐步添加新组件,包括增强的SLAM模块210中的尺度自校正(“+Scale Correction”),地图点损失(“MapPointLoss”),遮挡感知深度一致性损失(“Depth Consistency”),最后是关键帧记忆重访损失(“Keyframe Revisit”)。
表1
上述表1示出了EuRoC序列V2_01上的完整的消融结果。基础模型(“BaseModel”)将绝对相对深度误差从17.4%(通过预训练后的Monodepth2模型获得)降低到12.8%,这验证了深度改进系统200执行的简单自监督在线学习方法的有效性。添加尺度自校正(“+ScaleCorrection”)将深度准确性指标δ1从84.8%提高到86.7%。图3中给出了增强的SLAM模块210的两个版本的摄像头轨迹的视觉比较,其中,一个版本具有尺度自校正功能,另一个没有。
图3绘制了根据所公开实施例的增强的SLAM模块210的不同版本的摄像头轨迹的比较的图300。线310表示来自EuRoC序列V2_01的真实值摄像头轨迹。线320表示由增强的SLAM模块210的无尺度校正版本提供的EuRoC序列V2_01的摄像头轨迹。线330表示由增强的SLAM模块210的有尺度校正版本提供的EuRoC序列V2_01的摄像头轨迹。
从图300可以清楚地看出,具有尺度校正的轨迹更好地与真实值对齐。这表明经过广泛几何优化的SLAM地图点确实改善了初始CNN深度的尺度信息。使用地图点损失(“+MapPoint Loss”)进一步将Abs Rel从12.2%降低到9.5%,将δ1从86.7%增加到91.3%。这证明了拥有准确的SLAM地图点作为监督的好处。增加遮挡感知深度一致性损失(“+DepthConsistency”)进一步改善了0.7%的Abs Rel。使用关键帧记忆重访的最终模型取得了最佳结果,Abs Rel为8.6%,δ1为92.0%。从这项消融研究中,显而易见,本方法的每个组件在改善深度预测方面都做出了重要的贡献。
定量结果
对EuRoC测试序列V1_03、V2_01和V2_02进行定量评估,深度评估结果提供在下表2中。在表2中,深度改进系统200表示为DRS。在所有三个序列上观察到深度改进系统200相对于基线Monodepth2的一致改善。然而,每个序列的改善幅度不同。在序列V1_03上,预训练后的Monodepth2表现良好,Abs Rel低至9.6%,并且深度改进系统200达到更低的8.3%的AbsRel。在序列V2_01上,观察到深度改进系统200更显著的改善,并且该序列的最终深度结果(Abs Rel为8.6%)与V1_03的结果相当。对于V2_02,深度改进系统200相较于预训练后的基线模型也有所改善。预训练后的Monodepth2模型在V2_02上的深度误差更大,例如,预训练后的模型中可能无法充分保留尺度信息。由于深度改进系统200对单目序列执行在线学习,因此无法从较差的初始模型校正尺度信息。
表2
通过将预测深度的尺度与真实值对齐,执行针对相对深度的另一定量评估。这种按每个帧尺度对齐的定量深度评估如下表3所示。从表3可以看出,序列V1_03和V2_01的相对深度评估与表2中的绝对深度评估一致。但是,在序列V2_02观察到不同的表现,例如,深度改进系统200在相对深度评估方面也取得了显著的改善。使用深度改进系统200,在相对深度估计的性能方面,Abs Rel从19.2%降低到10.5%,δ1从70.6%增加到89.0%。
定性结果
图4示出了在EuRoC数据集上使用深度改进系统200执行的深度图的定性比较。最左边的列示出了输入图像,第二(中间)列示出了由Monodepth2输出的每个输入图像的深度图,第三列(最右边)列示出了由深度改进系统200输出的每个图像的深度图。如图4所示,与Monodepth2相比,深度改进系统200提供了具有更精细细节和更清晰边缘的改进深度图。
图4清楚地显示了深度改进系统200带来的定性改善。特别地,深度改进系统200能够显著改善有噪的初始深度的深度质量,并将初始深度图改进为具有精细粒度的深度细节。
2.3 KITTI户外行驶数据集
KITTI数据集由用于理解道路场景的户外驾驶序列组成。立体图像序列和真实值深度通过安装在行驶中的汽车顶部的校准后的立体摄像头和Velodyne LiDAR传感器采集。深度改进系统200使用KITTI数据集和Eigen划分提供的校正图像进行训练和测试。从28个与训练序列没有重复的测试序列中抽取测试图像。在这28个序列上运行本文的系统,生成改进的深度图。图像的大小调整为640×192以用于在线深度改进模块。
定量结果
KITTI Eigen划分测试集的深度评估结果如下表4所示。在表4中,深度改进系统表示为DRS。此外,M表示自监督单目监督;S表示自监督立体监督;D表示深度监督;Y表示是;N表示否;“-”表示本文中没有结果。每格中的最佳值以粗体标记。深度改进系统200从CNN模型(例如,在此实施方式中为Monodepth2模型)开始,该CNN模型用单目图像和立体图像训练,然后仅用单目图像进行改进。深度改进系统200因此被标记为“(S)M”。在所有自监督单目方法中,深度改进系统200实现了最佳性能,验证了深度改进系统200在具有挑战性的户外环境中改进深度的有效性。与Luo的测试时间微调方法相比,深度改进系统200可以将AbsRel从13.0%降低到9.9%;与通过pRGBD-Fineed的离线改进方法相比,深度改进系统200可以将δ1提高相当大的幅度,从87.4%增加到90.0%。值得注意的是,在所有自监督方法中,深度改进系统200在准确性指标(δ1,δ2,δ3)方面实现了最佳结果。
表4
图5示出了在KITTI数据集上评估的本公开实施例与Monodepth2的对比。图5示出了每序列的对比,其中每个列集合表示KITTI数据集中的一个序列。在列出的序列上,可以观察到应用深度改进系统200的明显的优势,深度改进系统200的结果显示为实心黑条,Monodepth2的结果显示为带有阴影线的条。
因此,本公开的实施例提供了使用自监督在线学习的几何SLAM引导的单目深度改进方法和系统。本公开的实施例依赖于预训练后的模型以构建包括尺度自校正的增强的SLAM(例如,CNN增强的SLAM)。提出了在线学习框架以改进深度,将几何SLAM和新的训练的损失的优势相结合。上述实验数据证明了本公开的实施例在公共数据集(包括EuRoC和KITTI数据集)上的最先进性能。
D.基于学习的光流增强的SLAM实施例
本文描述的实施例提供了一种深度改进系统,该深度改进系统具有混合的SLAM以及深度改进模块,该SLAM由基于学习的光流增强,基于学习的光流结合在该SLAM的前端,深度改进模块用于通过训练平台运行在线深度改进。各种实施例通过设计提供了在线系统,该在线系统可以通过以下几点实现改善的鲁棒性和准确性:(i)鲁棒的增强的SLAM,其前端结合基于学习的光流(例如RAFT-flow等),以适用具有挑战性的场景;(ii)自监督损失,利用增强的SLAM模块的输出并加强长期几何一致性;(iii)系统设计,避免深度改进中的退化情况。
虽然本文中的实施例参照使用RAFT流增强单目SLAM模块来描述,但本文中的实施例并不仅限于RAFT流。相反,任何所需的基于学习的光流都可以结合到单目SLAM的前端。例如,可以使用全局运动聚合方法代替RAFT流。
1.方法和架构
图6示出根据本文公开的另一实施例的示例深度改进系统600的架构。深度改进系统600用于创建和改进深度预测模型,以从单目图像序列生成几何一致的密集建图。深度改进系统600是如上所述的深度改进系统100的另一示例实施方式。可以使用例如一个或多个处理器和存储器组件(例如图13的计算机系统1300)实现该系统。如上文结合图1所述,深度改进系统600可以托管在服务器150上,服务器150可以包括专用服务器基础设施和/或基于云的基础设施。
1.1增强的SLAM模块
单目视觉SLAM可能具有一些缺点:(i)在不利的环境下,例如在低纹理、快速运动、和大幅度旋转的环境下,其前端经常无法跟踪特征;(ii)其只能重建未知全局尺度内的环境。为了改善SLAM的性能,已经提出了一些方法改善直接LSD-SLAM的后端优化。而本公开的深度改进系统600改善基于特征的单目几何SLAM的前端,以解决前端跟踪损失,前端跟踪损失是SLAM失败和准确性降低的常见原因。因此,深度改进系统600包括流SLAM模块610,其中,通过将基于学习的光流模型612结合到SLAM的前端跟踪块616中,同时执行本领域所知的SLAM后端建图块618,SLAM得到增强。除了本公开规定的其他情况,该流SLAM模块610可以类似于图1的增强的SLAM模块110。
在示例实施例中,深度改进系统600用光流模型612取代了传统SLAM方法0例如,ORB-SLAM)中的前端特征匹配,同时根据SLAM技术对稀疏点进行采样,以便在后端块618中进行鲁棒估计和建图。RAFT是最先进的光流方法示例,具有很强的跨数据集泛化性。RAFT-flow模型为所有像素对构建相关体积,并使用门控循环单元(gated recurrent unit,GRU)迭代更新光流。因此,流SLAM模块610允许深度改进系统600在一个模块中获得基于学习的光流的优势以及SLAM的已完善的鲁棒估计器技术。
在各种实施例中,可以使用深度学习框架训练光流模型612。例如,深度CNN可用于训练本公开示例实施例的RAFT流。例如,如图6所示,深度模型634可用于预测深度图642,深度图642可用于训练流模型612。深度模型634可以是CNN,但是,深度改进系统600不仅限于CNN,而是可以使用任何所需的网络架构,例如最近的基于Transformer的模型。在另一示例中,流模型634可以由另一深度模型训练,另一深度模型可以是深度CNN。深度图642可以是未改进的深度图(例如,深度模型的第一次传递)和/或由训练平台635改进之后的深度图。
在操作中,深度改进系统600通过网络640接收输入数据605。输入数据605至少包括图像序列,例如由图像传感器采集的图像帧序列。在一些实施例中,图像序列可以从存储器中检索,或者在被图像传感器采集和馈送时实时处理。输入数据605可以通过无线通信从边缘设备(例如存储器和/或图像传感器)传输到在线服务器或基于云的平台(例如,基于云的服务器和数据库)。输入数据605可以流式传输到深度改进系统600、和/或以数据块的形式传输。
来自输入数据605的图像帧被输入到流SLAM模型612中,该图像帧可以存储在数据库或其他存储设备中并且由一个或多个处理器执行。对于每个传入的图像帧Ii,在后端块618对稀疏点进行采样之前,通过执行流模型612定位来自按顺序在前的图像帧Ii-1(例如,紧接在前的图像帧)的特征点的对应关系。基于学习的光流提供坐标位移矢量(du,dv),因此可以得出点(x,y)的对应关系为(x+du,y+dv)。特征点可以是给定图像帧中构成该图像帧中包括的特征的点(例如,像素)。示例特征点可以是ORB特征,其是ORB-SLAM和许多其他SLAM算法和系统中使用的示例标准特征描述符。深度对应关系作为流数据614传送到前端跟踪块616。例如,对于每个传入图像Ii,流模型614为来自传入图像Ii和前一图像帧Ii-1.的所有像素对构建相关体积。流模型612使用GRU迭代更新光流,从而定位前一图像帧Ii-1的特征点的对应关系。例如,对于最后图像帧Ii-1中的每个特征,一旦各个特征与地图点相关联,就可以通过添加流F(i-1)→i定位其在传入帧Ii中的对应关系。如果Ii中目标像素周围的预定义半径内存在多个候选点(或像素),则选择具有最小描述符残差的候选点。如果不存在候选点,则创建新特征,并从Ii-1复制描述符。
在各种实施例中,流模型612仅使用Nf=0.1×Nt匹配的候选像素对和附近的ORB特征以进行初始位姿计算,其中Nt是当前输入帧Ii内的总ORB特征。这样约束匹配的候选点可以改善流模型612的鲁棒性。与利用连续图像帧之间的整个流相比,采样像素子集可以是有益的并且改善流模型612的准确性。这可能是因为这些区域中的流通常更准确。另外,可以使用1像素的阈值对预测流执行前后向一致性检查,以获得有效的流掩膜。
接着,流SLAM模块610在前端跟踪块616处执行本地地图点跟踪步骤。本地地图点跟踪是用于增加当前传入帧Ii以外的视图或场景的潜在关联的密度,并进一步优化摄像头位姿估计。因为传统的ORB特征可以保留结构信息(例如,边缘和/或拐角),将ORB特征与RAFT-flow相结合,从而减轻由长序列跟踪中的流建图引起的漂移。前端跟踪块616然后向后端建图块618输出2D点匹配和跟踪。
后端建图块618使用来自前端跟踪块618的输出执行稀疏建图,使用来自前端跟踪块616的输出以计算每个场景的环境几何形状和摄像头位姿。后端建图块618输出计算出的摄像头位姿、地图点、和深度图作为输出数据620。后端建图块618计算稀疏3D点和对应的深度值,而深度网络634提供密集点和深度值。
在一些实施例中,输入数据605还可以包括来自惯性测量单元(IMU)传感器(例如,检测和报告角速率、方向、施加在物体上的力、磁场等的传感器)的数据。示例IMU传感器包括但不限于加速度计、陀螺仪、磁力计等。IMU传感器可以耦合到图像传感器和/或包括图像传感器的系统或设备的一部分,从而提供IMU数据,该IMU数据指示图像传感器所经历的运动和力。在一些实施例中,IMU数据可以与图像序列一起用于确定流SLAM模块610中的摄像头位姿和地图点。
输入数据605还可以包括元数据,例如时间戳和/或地理位置信息(例如,由耦合到图像传感器的全球定位系统(global positioning system,GPS)检测到的数据)。时间戳元数据可以指示采集图像序列和/或IMU数据的每个图像帧的时间点。类似地,地理位置信息可以指示采集图像帧和/或测量IMU数据的地理位置。图像帧和IMU数据可以基于时间戳和/或地理位置进行关联(例如,给定时间点和/或给定位置的图像帧和IMU数据可以关联在一起)。
1.1.2多种传感器模式
本文中的实施例可以支持多种传感器模式并提供最少的传感器设置。例如,使用带有(或不带有)IMU传感器的单目图像传感器(例如,随输入数据605一起提供IMU数据),有助于两种SLAM模式,例如单目模式和视觉惯性(VI)模式。此外,由于深度模型(例如,CNN)用于推断每个图像的深度图,因此还可以实现伪RGBD(pRGBD)模式。
在单目模式下的实施例中,流SLAM模块610在后端建图块618处以任意尺度重建摄像头位姿和3D地图点。如上所述,流模型612可以基于经训练的深度模型(例如,CNN深度模型),深度模型中预测的深度图可以用于后端建图块618调整地图点的尺度以及摄像头位姿。例如,如图6所示,经训练的深度网络634可以向流SLAM模块610提供深度图以用于调整地图点的尺度和摄像头位姿。因为SLAM的输出将被用于深度改进模块630的下游任务中,故后端建图块618处的尺度对齐步骤可以是有益的。如果流SLAM模块610和深度改进模块630之间的尺度相差太多,深度改进将不是最优或者出现故障。因此,在单目模式中,后端建图块618使用来自流模型612的输出和来自经训练的深度模型的预测深度图执行后端尺度对齐。例如,构建初始地图点,并且在深度改进系统600的初始化期间(例如,由流SLAM模块610执行),可以通过解决以下最小二乘问题在多个步骤中持续对齐尺度:
其中,s是要估计的尺度对齐因子,d(x)是来自经训练的深度模型的深度值,是来自SLAM地图点的深度值,分别是SLAM地图点。式10可以执行任意数量的步骤,例如,d(x)和/>可以从初始5个图像帧、初始10个图像帧等计算。然后,来自流SLAM模块610的输出620在输入到深度改进模块630之前可以通过乘以s进行尺度调整。
如果两个模块的尺度已经处于同一数量级(例如,当SLAM在视觉惯性(VI)模式下运行时),则上述对齐步骤变为可选。
在具有运动模糊、遮挡和低纹理的挑战性环境中,VI SLAM通常比单目SLAM更稳健。由于惯性传感器在IMU数据中提供尺度信息,因此,来自VI flow-SLAM的摄像头位姿和3D地图点可以还原成公制尺度。因此,在VI模式下,给定了尺度感知深度模型(例如,从IMU数据预测公制尺度下的深度的模型),一些实施例运行深度改进模块630无需特别注意模块610和630之间的尺度差异。
在另一示例中,pRGBD模式可以提供一种结合先验深度执行几何SLAM的方法。然而,如果由于有噪预测而将深度预测值简单视作运行RGBD模式的真实值,则上述方法可能会导致SLAM性能达不到最优。在ORB-SLAM3的RGBD模式下,深度主要用于两个SLAM阶段,例如系统初始化以及捆集调整。使用输入深度,系统可以从第一帧立即初始化,而无需等到具有足够的时间基线。对于每个检测到的特征点,系统使用深度和摄像头参数创建虚拟右侧对应关系(virtual right correspondence),使得捆集调整产生额外的重投影误差项。为了减轻噪声对深度预测的负面影响,与原始RGBD模式相比,深度改进系统600可以用于做出pRGBD模式的两种改变。例如,(i)流SLAM模块610可以从深度改进模块630(如下所述)接收改进的深度图作为输入(例如,深度图642),以确保输入深度图更准确且时间一致,以及(ii)可以在捆集调整中移除虚拟右侧点的重新投影误差项。注意,输入的CNN深度图仍然用于地图点初始化和新关键点插入,有利于SLAM模块610的鲁棒性。
1.2深度改进模块
深度改进模块630从流SLAM模块610接收输出数据620,包括地图点和摄像头位姿。然后基于训练平台635计算的一个或多个损失参数逐步改进深度模型634。除了本公开规定的其他情况,深度改进模块630可以类似于图1的深度改进模块120。
在各种实施例中,深度模型634可以是经训练的CNN深度模型,但也可以实现为其它深度模型,例如但不限于基于变换的深度网络。训练平台635可以包括光度损失块636、边缘感知深度平滑度损失块638、地图点损失块637、和深度一致性损失块639中的一个或多个。训练平台635和其中确定的自监督损失可以类似于图2的训练平台235。
例如,类似于光度损失块236,光度损失块636可以用于根据上述式(2)确定光度损失Lp。光度损失块636可以通过使用5帧片段采用更宽的基线光度损失,例如,该5帧片段由 定义。帧片段是根据经验定义的,上面的例子仅用于说明目的。此外,虽然本公开提供的是5帧片段,但这仅用于说明目的,可以使用任何n帧片段,其中n是按照经验设置的整数。密集建图模块630与现有技术系统的另一个重要区别在于,相对位姿Tj→i来自流SLAM模块610,比位姿网络预测的位姿更准确。
边缘感知归一化平滑度损失块638可以用于根据上述式(3)确定边缘感知归一化平滑度损失(Ls)。
来自流SLAM模块610的地图点可能已经通过后端建图块618中的捆集调整进行了广泛的优化(例如,作为已知的SLAM技术的一部分),因此这些地图点的深度值可能比来自经训练的深度网络634的可以由流模型612使用的对应深度值更准确。地图点损失块637利用这些地图点SLAM预测的深度构建地图点损失作为深度改进模型的监督信号。地图点损失可以是数据620中的SLAM地图点与来自深度模型634的对应深度之间的差值,地图点损失可以使用上述式(4)来确定。在本实施例中,如下述过滤之后,对于第i个图像帧,来自流SLAM模块610的数据620中有Ni个3D地图点,Di,n是来自第i个图像帧的第n个地图点的深度,是来自流SLAM模块610的对应深度。
如下执行对来自流SLAM模块610的地图点的过滤。首先,地图点损失块637确定当前图像帧的每个地图点是否在多个SLAM关键帧存在(例如,能观察到)。此过滤任务的关键帧由SLAM确定,并且与下面描述的用于关键帧机制的关键帧不同。关键帧的数量可以是任何所需的数量,其中,可以每隔几个帧(数量凭经验确定)插入一个关键帧。如果在该多个SLAM关键帧中没有观察到地图点,则丢弃该地图点。否则,保留该地图点。以此方式,地图点损失块637使用在序列中的多个帧而不是仅在单个帧中找到的地图点。其次,地图点损失块637将地图点从世界坐标系(例如,由后端建图块618构建的环境几何结构的坐标系)投影到当前图像帧的坐标系,并确定每个地图点的投影误差。如果给定地图点的投影误差超过误差阈值,则丢弃该给定地图点。误差阈值可以基于可接受的容差根据需要设置,例如,阈值可以是3个像素、4个像素、5个像素等。这种过滤方案确保只使用准确的地图点。
除了上述损失项之外,本公开的实施例执行遮挡感知深度一致性损失块639和关键帧选择块634,块639用于确定遮挡感知深度一致性损失,块634用于执行关键帧选择策略以构建在线深度改进管道。
1.2.1遮挡感知深度一致性
遮挡感知深度一致性损失块639接收深度图以及相对位姿T=[R|t],深度图作为地图点、相对位姿作为摄像头位姿被包括在数据620中。给定两个相邻图像帧的深度图(例如Di和Dj)及其相对位姿T=[R|t],遮挡感知深度一致性损失块239在Di和Dj之间构建鲁棒一致性损失,以使时间i和j处的深度预测彼此一致。注意,因为用于采集Ii和Ij的图像传感器随时间移动,所以帧i和j对应位置的深度值不一定相等。使用摄像头位姿T,可以通过图像扭曲和坐标系变换将深度图Dj扭曲然后变换为第i帧的深度图例如,可以使用类似于上述结合式5和式6描述的方法,其中/>可以表示[Xi→j→i]3。初始深度一致性损失可以设置为
在式(11)中确定的深度一致性损失可以包括遮挡区域中的像素,这可能不利于深度改进模型。因此,在每像素光度损失之后,通过使用上述方式(8)从式(11)中获取深度一致性损失的最小值确定每像素深度一致性损失,而不是使用一组相邻帧的平均值。
1.2.2退化案例和关键帧机制
在一些场景中,自监督损失并非没有退化的情况。如果没有仔细考虑,自监督训练可能会恶化,导致更差的深度预测。第一种退化情况发生在摄像头保持静止时。解决第一种退化情况的一种方法是通过计算和阈值化(例如,来自RAFT流的)连续帧的平均光流,删除图像序列中的静态帧。例如,在计算光度损失时,可以使用自动掩膜策略自动遮挡静态像素。
第二种退化情况发生在摄像头仅经历旋转运动时。自监督深度估计应用尚未考虑这种退化。在只有旋转的情况下,使用基本矩阵(例如,描述两帧对应点之间的对极几何的矩阵)的运动恢复会不清楚,因此基于单应的方法可能更优。在光度损失的情况下,如果摄像头仅旋转(例如,平移运动t=0),则式(5)中的视图合成(或重新投影)步骤可能不再依赖于深度(例如,应用投影功能后删除深度)。2D应关系直接通过单应矩阵相关。因此,在这种情况下,只要准确给出摄像头运动,任意深度均可以最小化光度损失,这在训练或微调深度网络634时是不希望出现的(因为深度可能会任意出错)。
为了避免上述退化情况,深度改进模块630包括关键帧选择块631形式的关键帧机制。关键帧选择块631用于促进无恶化的在线深度改进。例如,在从流SLAM模块610接收到摄像头位姿之后,关键帧选择块631根据摄像头平移的幅度选择用于深度改进的关键帧,并且输出该关键帧和相关数据作为关键帧数据632。例如,如果摄像头平移的范数超过设定的阈值,则选择对应的帧作为关键帧(例如,应用自监督损失的候选帧)。可以经由时间戳同步器识别对应帧,该时间戳同步器基于时间戳元数据将数据620与数据605同步(例如,根据时间戳元数据将某个时间点的数据620与数据605关联)。这确保深度改进模块630具有足够的基线(例如,平移)以使光度损失计算有效。
平移可以从数据620中的摄像头位姿估计和/或基于可选IMU数据来确定。例如,IMU传感器可用于检测平移,该平移可以基于时间戳元数据(例如,通过时间戳同步器)与对应的图像帧相关联。
由关键帧选择块631选择的关键帧随后作为关键帧数据632馈送到深度模型634。关键帧数据632指示所选的关键帧和相关数据,如上所述,所选的关键帧和相关数据用于光度损失块636执行光度损失计算。在各种实施例中,由关键帧选择块631执行的关键帧选择策略可以应用于训练平台635的每个损失参数。
1.2.3总体改进策略
训练平台635的总体改进损失(L)可以根据上述式(9)确定。
深度改进系统600用于改进任何经训练的深度估计网络或模型,以实现对图像序列的每一帧的几何一致深度预测。由于流SLAM模块610在单独的线程上运行,因此缓冲关键帧数据632。关键帧数据632包括大小固定的时间同步数据队列中的图像帧、地图点、和摄像头位姿。虽然时间同步数据队列可以设置为任一固定大小,但在说明性示例中(参阅下文D.2.1节),时间同步数据队列的大小设置为11。
通过最小化式(9)中的损失项并执行K*个步骤的梯度下降,进行当前关键帧的深度改进,其中K*是由关键帧选择块631选择的关键帧的数量。在深度模型634上执行K*个深度改进步骤之后,可以使用改进后的深度模型634运行深度推断,以生成并保存当前关键帧的深度图640。最后可以通过执行如本领域所知的TSDF或捆集融合重建全局地图。
在要求对每个图像帧进行深度改进(例如,每帧深度改进)的情况下,可以维持用于每帧数据633的数据队列。每帧数据633可用于通过获取多个当前连续帧和多个最近的关键帧构造帧片段,其中,关键帧的数量大于连续帧的数量。在示例实施例中,5帧片段可以由两个当前连续帧和三个最近的关键帧组成。在这种情况下,通过最小化式(9)中的损失项并执行K个步骤的梯度下降进行当前帧的深度改进。在K个深度改进步骤之后,可以使用改进后的深度模型634运行深度推断,以生成并保存当前帧的改进的深度图640。
最后可以通过执行如本领域所知的融合(例如TSDF或捆集融合)重建全局地图。因此,深度改进系统600可以包括可选的全局建图模块650,全局建图模块650实质上类似于图1的全局密集建图模块130。全局建图模块650接收改进后的深度图640并执行融合算法(例如TSDF、捆集融合等)以生成与输入图像序列相关的环境的3D重建。
下面将示例算法总结为算法2。
/>
2.实验
在三个公共数据集上进行实验:EuRoC、TUM-RGBD、和ScanNet数据集。进行了消融研究以验证深度改进系统600中每个组件的有效性,并呈现了三个数据集上的定量和定性结果。对于定量深度评估,使用了标准误差和准确性指标,包括MAE、Abs Rel、RMSE、δ<1.25(即δ1)、δ<1.252(即δ2)、δ<1.253(即δ3)。
2.1实施细节
深度改进系统600包括流SLAM模块610(例如,此实施方式中的RAFT-SLAM模块)以及在线深度改进模块630。RAFT-SLAM模块基于ORB-SLAM3实现,支持单目模式和VI模式。该两种模式均进行了实验,实验表明深度改进系统600在这两种模式下均实现了相对于预训练后的模型一致的改善。在线深度改进模块使用定制的数据加载器(例如,数据620从其被提取、读取和/或加载到深度改进模块630的接口)和训练损失,改进预训练后的深度模型(例如,深度CNN模型)。在该实验中,比较自监督模型(即Monodepth2)和监督模型(例如DensePredictionTransformers或DPT),以展示深度改进系统600的有效性。机器人操作系统(robot operating system,ROS)用于在模块610和630之间交换数据以实现跨语言兼容性。ADAM用作优化器,并将学习率设置为1.0e-5。加权参数λs设置为1.0e-4,λm设置为5.0e-2,λc设置为1.0e-1。因为在线训练期间批大小始终为1,所以批量归一化层(如果存在)被冻结在深度网络中。因为DPT模型的解码器层经过了相对良好的训练,所以这些解码器层被冻结。
如上所述,根据标准对地图点进行过滤,以保证用于在线深度改进的良好监督信号。为此,丢弃重投影误差大于1个像素或是在少于5个关键帧中观察到的地图点。对于每个帧,SLAM位姿和对应的地图点被更新并推送到在线深度改进模块630。因为在SLAM后端优化后,某些点可能变为合格/不合格,所以对每一帧都执行地图点过滤。维持长度为11的关键帧数据队列(例如,关键帧数据632)和长度为2的每帧数据队列(例如,每帧数据633)。关键帧改进的运动阈值(平移)设置为0.05m,而每帧的运动阈值设置为0.01m。对于Monodepth2模型,关键帧的改进步骤数设置为15(或每帧为3),对于DPT模型,关键帧的改进步骤数设置为3(或当不需要每帧改进时每帧为0)。
如上所述,深度改进系统600的评估实施方式采用ROS作为跨语言通信的代理。每个处理过的帧及其后续帧、当前跟踪的地图点、以及摄像头位姿(如果存在)被发送到深度改进模块620。这些帧被馈送到RAFT模型612中以获得成对流预测,包括前向流和后向流。使用1像素的阈值对预测的流进行前后向一致性检查,以获得有效的流掩膜。为了提高效率,使用尺寸为256×512的缩小图像进行ROS通信和流预测。在单目模式下,系统成功初始化后,地图点持续对齐,摄像头位姿导入CNN深度模型进行五个步骤的处理,以使其尺度一致。
可能很难确保RAFT-SLAM模块永远不出现故障。例如,在具有强烈运动模糊和明显卷帘快门伪影的序列上,RAFT-SLAM模块可能偶尔会故障。在发生故障时,深度改进模块620接收到SLAM故障信号后,关键帧和每帧数据的队列都被清除。在这种情况下,关键帧深度改进过程将暂停,但如果需要所有帧的深度图,每帧深度推断仍可运行。该策略可以确保深度改进系统600很少被中断,并且在SLAM模块还原后深度改进系统继续运行,该策略被采用。
2.2
EuRoC室内MAV数据集
如上所述,EuRoC MAV数据集是包含立体图像序列和摄像头参数的室内数据集。安装有全局快门立体摄像头的MAV用于采集大型厂房和Vicon室中的数据。在厂房中记录了五个序列,Vicon室中记录了六个序列。通过VICON设备和Leica MS50激光扫描仪获得真实值摄像头位姿和深度,因此所有Vicon序列都用作测试集。为了生成真实值深度,激光点云被投影到左侧摄像头的图像平面上。原始图像的尺寸为480×754,用于Monodepth2的图像尺寸调整为256×512或256×320,用于DPT的图像尺寸调整为384×384。
消融研究
不失一般性,在EuRoC数据集的V2_03序列上进行消融研究,以衡量单目模式和pRGBD模式下每个组件对深度改进系统600的贡献。首先,通过运行在线改进算法构建基础系统,其中,光度损失如式2,深度平滑度损失如式3,地图点损失如式4。请注意,光度损失使用来自RAFT-SLAM模块的摄像头位姿而不是来自位姿网络的摄像头位姿。该基础模型记为“BaseSystem”。然后新的组件被添加到这个基础模型中,添加的新组件包括RAFT-SLAM模块的尺度对齐策略(“+Scale Alignment”)和遮挡感知深度一致性损失(“+DepthConsistency”)。在pRGBD模式下,“BaseSystem”将预训练后的深度作为输入,没有使用本文提出的改变,并且该基础系统使用深度一致性损失。然后,基础系统的新组件,即,使用来自在线深度改进模块的改进的深度(“+Refined Depth”),在SLAM前端使用RAFT流(“+RAFT-flow”),并删除捆集调整中的重投影误差项(“+Remove BA Term”)。
表5
上表5示出了一组完整的消融结果。在单目模式下,“BaseSystem”将绝对相对深度误差从9.9%(通过经训练的DPT模型实现)降低到9.0%,这验证了深度改进系统600执行的基本自监督改进方法的有效性。在SLAM前端中使用RAFT流使得SLAM更加鲁棒,生成更准确的位姿估计,进而改善了深度改进模块。添加尺度自对齐(“+Scale Alignment”)显著改善了深度质量的所有指标,例如Abs Rel从8.3%下降到6.4%,δ1从91.5%增加到95.2%。添加遮挡感知深度一致性损失(“Depth Consistency”)进一步改善了1.1%的Abs Rel,改善了1.8%的δ1。从该消融研究中可以明显看出,深度改进方法的每个组件在改善深度结果方面都做出了重要贡献。在pRGBD模式下也可以得出类似的结论。
表6示出了pRGBD模式下深度改进系统的里程计结果。很明显,pRGBD模式下的深度改进系统600在鲁棒性和准确性方面都优于基线(例如ORB-SLAM3),并且每个提出的新组件都有助于改善。请注意,“BaseSystem”仅使用来自DPT的经训练的深度,从而形成pRGBD模式。
表6
单目模式下的定量深度结果
通过在EuRoC测试序列上在单目RAFT-SLAM下运行深度改进系统600,进行定量评估,深度评估结果列于下表6。因为深度改进系统600使用DPT作为起始深度模型,所以将深度改进系统600记为“DRS”。在深度预测和真实值之间执行每帧尺度对齐。如下表7所示,深度改进系统600在所有测试序列上实现了相对于基线模型的一致和显著改进。例如,在序列V1_01中,深度改进系统600将Abs Rel从14.0%(通过DPT实现)降低到5.0%,深度误差降低了两倍。
表7
视觉惯性模式下的定量深度结果
当IMU数据可用时,深度改进系统600可以在VI RAFT-SLAM模式下运行,直接获取公制尺度的摄像头位姿和地图点。请注意,在VI模式下不需要尺度对齐。上表6还提供了定量深度结果,从中可以看出,即使没有尺度对齐,VI模式下的深度改进系统600的性能也与单目模式相当。与类似的密集建图即CodeMapping相比,深度改进系统600在运行时(run-time)相似(例如,每个关键帧约1秒)的情况下明显更准确,这表明深度改进系统600实现了改善。
pRGBD模式下的定量深度结果
pRGBD模式下的定量深度评估见表7右列。从表7可以看出,pRGBD模式在深度结果方面的表现略优于其他两种模式。该结果可以归因于,在pRGBD模式下,SLAM模块610和深度改进模块630形成一个松散耦合的循环,使得两个模块彼此受益。
定性深度结果
图7示出了在EuRoC数据集上使用深度改进系统600执行的深度图的定性视觉比较。图7示出了由深度改进系统600的“DRS”实施方式生成的深度图与DPT的深度图之间的定性视觉比较。
从图7可以清楚看出根据本公开实施例的深度改进方法带来的定性改善。例如,图7示出了深度改进系统600是如何纠正预训练后的模型中普遍存在的不准确的几何形状。例如,在图7的第一行中,输入图像710示出平放在地板上的一张薄纸712。DPT生成的深度图720中,与薄纸对应的像素被预测为具有比薄纸相邻地板的像素高得多的深度值(例如,框722与框724的比较)。而DRS能够将薄纸深度纠正为与地板深度一致,如深度图730中所示的框732与框734的比较。
图8示出了使用深度改进系统600进行的环境的全局重建。特别地,图8示出了EuRoC VICON室的全局地图,该地图使用深度改进系统600生成的改进的深度图,并将改进的深度图融合在一起。如图8所示,采用改进的深度图可以实现几何一致的重建。
里程计结果
下表8示出了单目模式下在EuRoC数据集上深度改进系统600与目前最先进的EuRoC数据集的里程计比较结果。所有的实验都采用了与ORB-SLAM3相同的参数设置。如表8所示,深度改进系统600得到了与Droid-SLAM相当的结果(注意Droid-SLAM可以是为SLAM精心设计的,而本文中的实施例可以不如此设计),并且明显优于其他单目基线。
表8
Monodepth2
提供了使用自监督模型(例如Monodepth2)作为基础模型的深度改进系统600在EuRoc上的深度结果。从五个序列(MH_01、MH_02、MH_04、V1_01和V1_02)中获取单目和立体图像作为训练集,以训练基础模型Monodepth2。由于使用了具有已知基线距离的立体图像,因此经训练的Monodepth2知道尺度。定量深度结果如下表9所示,从中可以看出,与Monodepth2相比,深度改进系统600(记为“DRS-MD2”)在三种SLAM模式下均具有显著改善。
表9
针对关键帧结果,在下表9中呈现了所有关键帧(例如,由深度改进模块630设置)的深度改进。表9示出了VI模式下在EuRoC上的对关键帧的定量深度评估。深度图以公制尺度(例如以米为单位)预测,并且不执行每帧尺度对齐。大多数序列中,关键帧的深度质量略优于每帧的结果。这验证了本公开的关键帧机制的有效性,并证明了深度改进过程中在时序帧之间具有足够大的基线的重要性。
表10
/>
2.3 TUM-RGBD数据集
TUM-RGBD数据集主要用于RGB-D SLAM或里程计的性能基准测试。该数据集源自使用Microsoft Kinect传感器和八个高速跟踪摄像头采集的单目图像、单目图像相应的深度图像、以及摄像头位姿。因为TUM-RGBD数据集包含大量由摄像头快速运动引起的运动模糊和卷帘快门失真,因此单目系统尤其难处理TUM-RGBD数据集。使用了来自该数据集的两个单目序列(即“freiburg3_struction_texture_near”和“freiburg3_struct_texture_far”)测试深度改进系统600,这两个单目序列满足足够的摄像头平移的需求。定量深度结果呈现在下表11,其中深度改进系统600表示为DRS。和之前一样,与预训练后的DPT模型相比,深度改进系统600的两种模式均有了显著的改善,Abs Rel减少了2到4倍。
表11
图9示出了在TUM-RGBD数据集上使用深度改进系统600进行的环境的全局重建。特别地,图9示出了TUM-RGBD序列的全局地图,该地图使用深度改进系统600生成的改进的深度图,并将改进的深度图融合在一起。如图9所示,场景几何结构得到忠实复原。
此外,深度改进系统600还在TUM-RGBD数据集的另外两个序列上进行了评估,即freiburg3_long_office_household和freiburg3_long_office_household_validation。采用的设置与上述设置相同,并使用在NYUv2上预训练的DPT模型作为初始模型。定量深度结果如表12所示,与预训练后的模型相比,深度改进系统600实现了一致和显著的改进。在表12中,深度改进系统600表示为DRS。
表12
另外,在下表13中示出了TUM-RGBD上关于相对位姿误差(RPE)的里程计结果。其中“X”表示由于系统故障而没有位姿输出,“(X)”表示部分位姿结果。与基线ORB-SLAM3相比,由深度改进系统600改善的里程计结果验证了使用RAFT使得SLAM系统更加稳健和准确。特别地,单目(DRS-Mono)模式和pRGBD(DRS-pRGBD)模式下,深度改进系统600均显著优于Li最近提出的深度里程计方法。
表13
图10示出了在TUM-RGBD数据集上由深度改进系统600生成的深度图的定性视觉比较。图10示出了(从左列到右列)输入图像、由DPT生成的深度图、以及由深度改进系统600生成的深度图之间的定性视觉比较。从图10可以看出,与DPT相比,深度改进系统600能够减少(甚至消除)可能出现的伪影和错误预测。
图11示出了在TUM-RGBD数据集上使用深度改进系统600进行的另一个环境的全局重建。特别地,图11示出了freiburg3_long_office_household序列的全局地图,该地图使用深度改进系统600生成的改进的深度图,并将改进的深度图融合在一起。如图11所示,场景几何结构得到忠实复原。
2.4 ScanNet数据集
ScanNet是由1500多次扫描组成的室内RGB-D数据集。该数据集由手持设备采集,因此大多数序列中都存在运动模糊,对单目SLAM和深度改进都构成挑战。此外,因为大多数序列都来自小房间(例如浴室和卧室),所以此数据集中的摄像头平移较小。为了测试深度改进系统600,使用以NYUv2预训练后的DPT作为基础模型,对具有相对较大的摄像头平移的三个序列进行采样和运行。结果总结在下表14中。可能是由于ScanNet和NYUv2之间的数据集相似性,预训练后的DPT模型在ScanNet上表现良好,Abs Rel为6.3%至8.0%。深度改进系统600依旧改善了深度质量的所有指标。特别地,在scene0228_00上,深度改进系统600将Abs Rel从8.0%降低到5.0%,将δ1从93.1%提高到97.9%。
图12示出了在ScanNet数据集上使用深度改进系统600进行的环境的全局重建。特别地,图12示出了scene0228_00序列的全局地图,该地图使用由深度改进系统600生成的改进的深度图,并将改进的深度图融合在一起。
表14
2.4 KITTI数据集
上表14中提供了深度改进系统600在KITTI上的的深度结果,其中深度改进系统600表示为DRS-MD2-Mono。关键帧的运动阈值设置为0.25m(或每帧设置为0.05m),λm设置为0.01,并使用三个帧片段(例如,0、-1、1)构建损失,其他参数与上述参数相同。与基础模型Monodepth2相比,深度改进系统600将Abs Rel降低了1%,将δ1提高了2.8%。但是,由于KITTI中的移动物体,因此该改善可能不如非动态室内环境那么显著。
因此,本公开的实施例以共生的方式结合几何SLAM和深度学习。本公开的实施例依赖鲁棒化的SLAM(例如,流SLAM模块610)计算摄像头位姿和稀疏地图点。本公开的实施例还包括用于使用自监督训练损失改进深度预测的在线学习框架。可以通过融合改进的深度图重建几何一致的全局地图。
E.示例计算系统
图13是可用于实现本公开实施例的各种特征的示例计算组件。
图13示出了示例计算机系统1300的框图,其中可以实现本公开描述的自监督深度估计系统100的各种实施例。计算机系统1300包括用于通信的总线1302或其它通信机制,一个或多个硬件处理器1304耦合到总线1302以处理信息。硬件处理器1304可以是一个或多个通用微处理器。
计算机系统1300还包括主存储器1306,例如随机访问存储器(RAM)、缓存和/或其它动态存储设备,主存储器1306耦合到总线1302以储由处理器1304执行的信息和指令,例如用于执行图1架构的指令。待由处理器1304执行的指令被执行期间,主存储器1306还可用于存储临时变量或其他暂时的信息。这种指令存储在处理器1304可访问的存储介质中时,使计算机系统1300成为定制用于执行指令中指定操作的专用机器。
计算机系统1300还包括只读存储器(ROM)1308或其它静态存储设备,该静态存储设备耦合到总线1302,为处理器1304存储静态信息和指令。提供例如磁盘、光盘或USB盘(闪存盘)等的存储设备1310,并且该存储设备1310耦合到总线1302以存储信息和指令。
计算机系统1300可以通过总线1302耦合到显示器1312(例如液晶显示器(liquidcrystal display,LCD)(或触摸屏)),显示器用于向计算机用户显示信息。包括字母数和其它键的输入设备1314耦合到总线1302以向处理器1304传递信息和命令选择。另一种用户输入设备是光标控制1316,例如鼠标、轨迹球或光标方向键,用于向处理器1304传递方向信息和命令选择以及控制在显示器1312上的光标运动。在一些实施例中,在没有光标的触摸屏上,可以通过接收触摸实现与光标控制相同的方向信息和命令选择。
一个或多个图像传感器1318可以耦合到总线1302,用于采集视频作为环境的多个图像帧和/或静态图像。图像传感器包括任何类型的摄像头(例如,可见光摄像头、红外摄像头、热成像摄像头、超声波摄像头和其他摄像头)或用于采集的其他图像传感器。例如,图像传感器1318可以采集根据本文公开实施例(例如,图2和图6)处理的图像。在一些实施例中,图像传感器1318将信息传送到主存储器1306、ROM 1308和/或存储器1310,以便实时处理和/或用于存储以供后续处理。根据一些实施例,不需要包括图像传感器1318,用于处理的图像可以从存储器中检索。
计算系统1300可以包括用户界面模块以实现GUI,GUI可以作为由计算机设备执行的可执行软件代码存储在大容量存储设备中。该模块和其他模块可以包括组件,例如软件组件、面向物体的软件组件、类组件和任务组件、进程、函数、属性、过程、子例程、程序代码段、驱动进程、固件、微码、电路、数据、数据库、数据结构、表、数组和变量。
一般而言,本公开使用的词语“组件”、“引擎”、“模块”、“系统”、“数据库”、“数据存储”、“框”等,可以指体现在硬件或固件中的逻辑,或者指软件指令的集合,可能具有入口和出口点,使用编程语言编写,例如Java、C或C++。软件组件可以被编译并链接到安装在动态链接库中的可执行进程中,或者可以使用解释性编程语言(例如BASIC,Perl或Python)编写。可以理解的是,软件组件可以从其他组件或自身调用,和/或可以响应于检测到的事件或中断而被唤醒。用于在计算机设备上执行的软件组件可以设置在计算机可读介质(例如光盘、数字视频光盘、闪存盘、磁盘或任何其他有形介质),或者作为数字下载(并且可以原本以压缩或可安装的格式存储,在执行之前需要安装、解压缩或解密)。这种软件代码可以部分或全部存储在执行的计算机设备的存储设备上,以供计算机设备执行。软件指令可以嵌入在固件中,例如EPROM。可以进一步理解的是,硬件组件可以由连接的逻辑单元组成,例如门和触发器,和/或可以由可编程单元组成,例如可编程门阵列或处理器。
计算机系统1300可以使用定制硬连逻辑、一个或多个ASIC或FPGA、固件和/或进程逻辑执行本文中描述的技术,这些定制硬连逻辑、一个或多个ASIC或FPGA、固件和/或进程逻辑结合计算机系统使得或将计算机系统1300编程为专用机器。根据一个实施例,响应于处理器1304执行包含在主存储器1306中的一个或多个指令的一个或多个序列,计算机系统1300执行本文的技术。这种指令可以从另一存储介质(例如存储设备1310)读入主存储器1306。执行包含在主存储器1306中的指令序列使得处理器1304执行本公开描述的处理步骤。在其他实施例中,可以使用硬连线电路代替软件指令或与软件指令结合。
如本公开所使用的术语“非暂时性介质”以及类似的术语,是指存储使得机器以特定方式运行的数据和/或指令的任何介质。这种非暂时性介质可包括非易失性介质和/或易失性介质。非易失性介质例如包括光盘或磁盘,例如存储设备1310。易失性介质包括动态存储器,例如主存储器1306。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储芯片或盒式磁带、和以上的联网版本。
非暂时性介质不同于传输介质,但可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线1302的导线。传输介质还可以采取声波或光波的形式,例如在无线电波和红外数据通信期间产生的波。
计算机系统1300还包括耦合到总线1302的通信接口1318。通信接口1318提供双向数据通信,该双向数据通信耦合到连接到一个或多个本地网络的一个或多个网络链路。例如,通信接口1318可以是综合业务数字网络(integrated services digital network,ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供相应类型的电话线的数据通信连接。另一示例中,通信接口1318可以是局域网(LAN)卡,以向兼容的LAN(或WAN组件以实现WAN通信)提供数据通信连接。也可以应用无线连接。在任一这样的实施方式中,通信接口1318发送和接收电、电磁或光信号,这些信号携带表示各种类型的信息的数字数据流。
网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供与主机或由互联网服务提供商(Internet Service Provider,ISP)操作的数据设备的连接。ISP进一步通过现在通常称为“互联网(Internet)”的万维分组数据通信网络提供数据通信服务。本地网络和互联网均使用携带数字数据流的电、电磁或光信号。经过各种网络的信号以及在网络链路上并且经过通信接口1318的信号承载计算机系统1300的往来数字数据,这两种信号是传输介质的示例形式。
计算机系统1300可以通过网络、网络链路和通信接口1318发送消息以及接收包括程序代码的数据。在互联网示例中,服务器可以通过互联网、ISP、本地网络以及通信接口1318为应用程序传输所需的代码。
接收的代码可以由处理器1304在接收时处理,和/或存储在存储设备1310中,或存储在其他非易失性存储中以供以后执行。
在之前章节中描述过的每个进程、方法以及算法可以在代码组件中实施,并且全部或部分由代码组件自动化,此代码组件由包括计算机硬件的一个或多个计算机系统或计算机处理器执行。该一个或多个计算机系统或计算机处理器也可以操作用于支持相关操作在“云计算(cloud computing)”环境中运行,或作为“软件即服务(software as aservice,SaaS)”。这些进程和算法可以部分或全部在专用电路中实现。上述各种特征和进程可以各自独立使用,或以各种方式结合使用。不同的组合和子组合是为了符合本公开的范围,并且某些方法或进程块在一些实施方式中可以省略。本公开描述的方法和进程也不限于任一特定顺序,与之相关的块或状态可以以其他合适顺序执行,或并行执行,或以其他方式执行。块或状态可以在本公开的示例实施例中添加或移除。某些操作或过程的执行可以分布在计算机系统或计算机处理器之间,不仅仅驻留在单个机器中,而是部署在多台机器上。
如本公开使用的电路可以利用任何形式的硬件、软件或其组合来实现。例如,可以使用处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制中的一个或多个来组成电路。在实施方式中,本公开描述的各种电路可以实现为分离的电路,或是所描述的功能和特性可以在一个或多个电路之间部分或全部共享。尽管各种特性或功能元素可以被单独描述或声称为单独的电路,但是这些特性和功能可以在一个或多个公共电路之间共享,并且此类描述不应要求或暗示使用单独的电路来实现此类特性或功能。当电路全部或部分使用软件实现时,此类软件可以与能够执行与其相关的功能的计算或处理组件(例如计算机系统1300)一起操作。
如本公开使用的术语“或”可以解释为包容性或排他性的意义。此外,对资源、操作或结构的单数描述不应被解读为排除复数的情况。条件语言,例如“可以”、“可能”、“可能”或“可以”等,除非另有明确说明,或者在所使用的上下文中以其他方式理解,通常旨在传达某些实施例包括某些特征、元素和/或步骤,而其他实施例不包括这些特征、元素和/或步骤。
除非另有明确说明,否则本文中使用的术语和短语及其变体应被解释为开放式而不是限制性。具有类似诸如“常规”、“传统”、“正常”、“标准”、“已知”等形容词的含义的术语不应被解释为将所述项目限制在给定时间段或在给定时间可用的项目。相反,所述项目应该被解读为包括现在或将来任何时候可以使用或已知的常规、传统、正常或标准技术。在某些示例中,扩大词和短语如“一个或多个”、“至少”、“但不限于”或其他类似的短语的出现不应理解为在没有这种扩大短语的情况下旨在或要求更窄的范围。
如本公开所使用的术语“电路和组件”可以描述可按照本公开的一个或多个实施例执行的功能的给定单元。如本公开所用,组件可以利用任何形式的硬件、软件或其组合来实现。例如,可以使用一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制来组成组件。本公开的各种组件可以实现为分离的组件,或是描述的功能和特性可以在一个或多个组件之间部分或全部共享。换言之,正如本领域普通技术人员在阅读本实施方式后显而易见的,本公开中描述的各种特性和功能可以在任何给定的应用中实现。这些特性和功能可以在一个或多个单独或共享的组件的各种组合和排列中实现。尽管各种特性或功能元素可以单独描述或声称为单独的组件,但应该理解,这些特性/功能可以在一个或多个公共软件和硬件元素之间共享。此类描述不应要求或暗示使用单独的硬件或软件组件来实现此类特性或功能。
当组件全部或部分使用软件实现时,这些软件元素可以与能够执行与其相关的功能的计算或处理组件一起操作。
本文中,术语“计算机程序介质”和“计算机可用介质”通常用于指暂时性或非暂时性介质。这些以及其他各种形式的计算机程序介质或计算机可用介质可以用于将一个或多个指令的一个或多个序列携带到处理设备以供执行。这种实现在介质上的指令一般称为“计算机程序代码”或“计算机程序产品”(可以以计算机程序或其他分组的形式分组)。这样的指令被执行时可以使得计算组件能够实现如本公开所讨论的本公开的特征或功能。
可以理解的是,在一个或多个独立的实施例中描述的各种特征、方面以及功能不限于适用于所描述的特定实施例。相反,无论本公开是否描述这些实施例,也无论这些特征是否呈现为所述实施例的一部分,上述各种特征、方面以及功能能够单独或以各种组合应用于一个或多个其他实施例。因此,本公开的广度和范围不应受到上述任何示例实施例的限制。
除非另有明确说明,否则本文中使用的术语和短语及其变体应被解释为开放式而不是限制性。作为前述内容的示例,术语“包括”应理解为“包括但不限于”等意思。术语“示例”用于提供所讨论项目的示例性实例,而不是其穷举或限制性的清单。术语“一个”应理解为“至少一个”、“一个或多个”或类似的含义。具有类似诸如“常规”、“传统”、“正常”、“标准”、“已知”等形容词的含义的术语不应被解释为将所述项目限制在给定时间段或在给定时间可用的项目。相反,所述项目应该被解读为包括现在或将来任何时候可以使用或已知的常规、传统、正常或标准技术。若本文涉及本领域普通技术人员明显可知或已知的技术,则此类技术包括熟练技术员现在或将来任何时候明显可知或已知的技术。
在某些示例中,扩大词和短语如“一个或多个”、“至少”、“但不限于”或其他类似的短语的出现不应理解为在没有这种扩大短语的情况下旨在或要求更窄的范围。使用术语“组件”并不意味着描述或声称的作为组件一部分的方面或功能均配置在通用包中。实际上,组件的任何或所有各种方面,无论是控制逻辑还是其他组件,均可以组合进单个包或单独维护,并且还可以分布在多个分组、多个包或跨越多个位置。
Claims (20)
1.一种从单目图像估计深度的方法,包括:
接收包括多个图像帧的图像序列,所述多个图像帧中的每个图像帧包括环境的一个或多个特征;
基于对所述多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图;
从生成的所述地图点、所述摄像头位姿、以及所述深度图计算一个或多个损失参数;以及
基于所述一个或多个损失参数改进经训练的深度估计模型,其中,改进的深度估计模型从所述图像序列预测深度图。
2.根据权利要求1所述的方法,还包括:
通过将预测的所述深度图融合在一起,生成所述环境的重建。
3.根据权利要求1或2所述的方法,其中,基于对所述多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图包括:
执行同时定位和建图(SLAM),其中,所述SLAM通过经训练的深度网络或基于学习的光流进行增强。
4.根据权利要求3所述的方法,其中,所述SLAM由结合到所述SLAM的前端跟踪的基于学习的光流增强,所述方法包括:
定位所述多个图像帧中的每个图像帧与每个顺序前一图像帧之间特征点的深度对应关系,其中,特征点是每个图像中构成所述多个特征中的特征的点,
其中,所述地图点、所述摄像头位姿、以及所述深度图由所述SLAM基于定位后的所述深度对应关系生成,所述深度对应关系作为所述SLAM的输入。
5.根据权利要求3或4所述的方法,其中,所述基于学习的光流是递归全对场变换(RAFT)光流。
6.根据权利要求3所述的方法,其中,所述SLAM由包括卷积神经网络(CNN)的经训练的深度网络增强,所述方法包括:
使用所述CNN预测所述多个图像帧中的每个图像帧的深度图;以及
将预测的所述深度图输入所述SLAM中,
其中,至少所述地图点和摄像头位姿是由所述SLAM基于所述CNN预测的所述深度图生成。
7.根据权利要求1-6任一项所述的方法,其中,所述一个或多个损失参数包括以下中的一个或多个:光度损失、地图点损失、深度一致性损失、以及边缘感知深度平滑度损失。
8.根据权利要求7所述的方法,其中,基于所述一个或多个损失参数改进经训练的深度估计模型包括:
计算整体改进损失(L)如下:
L=Lp+λsLs+λmLm+λcLc,
其中,Lp表示所述光度损失,Ls表示所述边缘感知归一化平滑度损失,Lm表示所述地图点损失,Lc表示所述深度一致性损失,λs、λm和λc表示加权参数,所述加权参数用于平衡每个损失项对所述整体改进损失的贡献。
9.根据权利要求1-8任一项所述的方法,还包括:
从所述多个图像帧的子集中选择关键帧,
其中,所述一个或多个损失参数基于选择的所述关键帧计算。
10.根据权利要求1-8任一项所述的方法,其中,所述图像序列由驻留在网络上的基于云的服务器接收,其中,所述生成、所述计算、以及所述改进在所述基于云的服务器上进行。
11.一种非暂时性计算机可读存储介质,存储可由一个或多个处理器执行的多个指令,当由所述一个或多个处理器执行时,所述多个指令使所述一个或多个处理器执行包括以下的方法:
接收包括多个图像帧的图像序列,所述多个图像帧中的每个图像帧包括环境的一个或多个特征;
基于对所述多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图;
从生成的所述地图点、所述摄像头位姿、以及所述深度图计算一个或多个损失参数;以及
基于所述一个或多个损失参数改进经训练的深度估计模型,其中,改进的所述深度估计模型从所述图像序列预测深度图。
12.根据权利要求11所述的非暂时性计算机可读存储介质,其中,所述方法还包括,
通过将预测的所述深度图融合在一起,生成所述环境的重建。
13.根据权利要求11或12所述的非暂时性计算机可读存储介质,其中,基于对所述多个图像帧中包括的多个特征的跟踪和建图,生成地图点、摄像头位姿、以及深度图包括:
执行同时定位和建图(SLAM),所述SLAM通过经训练的深度网络或基于学习的光流进行增强。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所述基于学习的光流是递归全对场变换(RAFT)光流。
15.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所述SLAM由包括卷积神经网络(CNN)的经训练的深度网络增强。
16.根据权利要求11-15任一项所述的非暂时性计算机可读存储介质,其中,所述一个或多个损失参数包括光度损失、地图点损失、深度一致性损失、以及边缘感知深度平滑度损失。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,基于所述一个或多个损失参数改进经训练的深度估计模型包括:
计算整体改进损失(L)如下:
L=Lp+λsLs+λmLm+λcLc
其中,Lp表示所述光度损失,Ls表示所述边缘感知归一化平滑度损失,Lm表示所述地图点损失,Lc表示所述深度一致性损失,λs、λm和λc表示加权参数,所述加权参数用于平衡每个损失项对所述整体改进损失的贡献。
18.一种用于改进深度估计模型的系统,所述系统包括:
存储器,用于存储指令;以及
一个或多个处理器,通信耦合到所述存储器并用于执行所述指令以:
接收多个图像帧,所述多个图像帧包括由摄像头采集的环境的场景;
执行第一模块,所述第一模块包括增强的同时定位和建图(SLAM),其中,所述SLAM通过经训练的深度网络或基于学习的光流进行增强,所述第一模块用于基于在多个图像帧上执行增强的所述SLAM,生成摄像头位姿、所述环境的地图点、以及每个图像帧的深度图;
执行第二模块,所述第二模块包括在线训练平台,所述第二模块用于计算一个或多个损失参数并基于所述一个或多个损失参数迭代更新所述深度估计模型;以及
使用改进的所述深度估计模型生成所述多个图像的改进的深度图。
19.根据权利要求18之一所述的系统,其中,所述经训练的深度网络是卷积神经网络(CNN),所述基于学习的光流是递归全对场变换(RAFT)光流。
20.根据权利要求18之一所述的系统,其中,所述一个或多个损失参数包括光度损失、地图点损失、深度一致性损失、以及边缘感知深度平滑度损失。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/162,920 | 2021-03-18 | ||
US202163285574P | 2021-12-03 | 2021-12-03 | |
US63/285,574 | 2021-12-03 | ||
PCT/US2022/020893 WO2022187753A1 (en) | 2021-03-18 | 2022-03-18 | Slam-guided monocular depth refinement system using self-supervised online learning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117321631A true CN117321631A (zh) | 2023-12-29 |
Family
ID=89250369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280020728.3A Pending CN117321631A (zh) | 2021-03-18 | 2022-03-18 | 使用自监督在线学习的slam引导的单目深度改进系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117321631A (zh) |
-
2022
- 2022-03-18 CN CN202280020728.3A patent/CN117321631A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107980150B (zh) | 对三维空间建模 | |
US10885659B2 (en) | Object pose estimating method and apparatus | |
US10553026B2 (en) | Dense visual SLAM with probabilistic surfel map | |
US10225473B2 (en) | Threshold determination in a RANSAC algorithm | |
US11170224B2 (en) | Keyframe-based object scanning and tracking | |
WO2019180414A1 (en) | Localisation, mapping and network training | |
US11948309B2 (en) | Systems and methods for jointly training a machine-learning-based monocular optical flow, depth, and scene flow estimator | |
WO2022187753A1 (en) | Slam-guided monocular depth refinement system using self-supervised online learning | |
CN113711276A (zh) | 尺度感知单目定位和地图构建 | |
CN111951325B (zh) | 位姿跟踪方法、位姿跟踪装置及电子设备 | |
WO2022174198A1 (en) | Self-supervised depth estimation framework for indoor environments | |
JP7138361B2 (ja) | 3次元仮想空間モデルを利用したユーザポーズ推定方法および装置 | |
GB2567245A (en) | Methods and apparatuses for depth rectification processing | |
US20190073787A1 (en) | Combining sparse two-dimensional (2d) and dense three-dimensional (3d) tracking | |
Tarrio et al. | Realtime edge based visual inertial odometry for MAV teleoperation in indoor environments | |
Zhu et al. | PairCon-SLAM: Distributed, online, and real-time RGBD-SLAM in large scenarios | |
Huai et al. | Collaborative monocular SLAM with crowdsourced data | |
CN117321631A (zh) | 使用自监督在线学习的slam引导的单目深度改进系统 | |
CN111709990A (zh) | 一种相机重定位方法和系统 | |
Rhee et al. | Two-pass icp with color constraint for noisy rgb-d point cloud registration | |
Liu et al. | Deep learning for 3D human pose estimation and mesh recovery: A survey | |
US20230419507A1 (en) | Systems and methods for motion estimation and view prediction | |
Liao et al. | VI-NeRF-SLAM: a real-time visual–inertial SLAM with NeRF mapping | |
CN112907620B (zh) | 相机位姿的估计方法、装置、可读存储介质及电子设备 | |
US20230206492A1 (en) | Method for generating three-dimensional map and method for determining pose of user terminal by using generated three-dimensional map |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |