Deep Rigid Instance Scene Flow

Abstract

本文解决了自动驾驶场景下的场景流估计问题。我们利用深度学习技术以及强大的先验,因为在我们的应用领域中,场景的运动可以由机器人的运动和场景中演员的3D运动组成。我们在一个深度结构模型中将问题定义为能量最小化,该模型可以在GPU中通过展开一个高斯-牛顿求解器有效地解决。我们在具有挑战性的KITTI场景流数据集中的实验表明,我们的性能远远超过了最先进的技术,而速度是它的800倍。

1. Introduction

场景流是指从一组连续的(在时间上)立体对中估计三维运动场的问题。场景流用来描述场景中每个点的3D运动。通过场景流,我们可以深入了解几何以及场景的整体构成和运动。自动驾驶汽车如果知道场景中其他物体的3 d运动,不仅可以帮助自治系统规划自己的未来运动时避免碰撞, 而且还提高场景的理解和预测他人的意图。在本研究中,我们主要研究自动驾驶场景中3D场景流的估计。

在自动驾驶的世界里,场景的运动可以用自我汽车的运动来解释。通常是刚性移动的动态对象的存在也可以作为强先验。以前的结构预测方法经常利用这些事实,并拟合运动的分段刚性表示[41,44,27,3]。虽然这些方法在场景流估计上取得了令人印象深刻的结果,但它们需要几分钟来处理每一帧,因此不能在现实世界的机器人系统中使用

另一方面,基于深度学习的方法在各种低层次任务上实时取得了最先进的性能,如光流预测[11,32,38]和立体估计[46,26,24]。虽然它们产生“准确”的结果,但它们的输出不是结构化的,不能捕获估计变量之间的关系。例如,它们缺乏保证给定对象上的像素产生一致估计的能力。虽然这种现象可能对摄影编辑应用程序的影响很小,但在自动驾驶汽车的环境中,这可能是灾难性的,因为在这种环境中,整个物体的运动比每个像素的运动更重要。

考虑到这些问题,我们开发了一个新颖的深度刚性实例场景流(DRISF)模型,它兼顾了两个方面的优点。背后的想法是,场景的运动可以通过估计每个演员的3D刚性运动组成。静态背景也可以被建模为一个刚性运动的对象,因为它的3D运动可以被描述为“自我-汽车”运动。因此,问题被简化为估计每个交通参与者的三维运动。为了实现这一目标,我们首先利用深度神经网络来估计光流、视差和实例分割。我们然后利用多个几何能量函数对这些视觉线索之间的结构几何关系进行编码。通过优化能量函数,我们可以有效地推理出每个交通参与者的三维运动。由于能量以加权平方和的形式存在,因此可以通过高斯牛顿算法[5]进行有效的最小化。我们在神经网络中以层的形式实现GN求解器,因此所有操作都可以端到端在GPU上高效地计算。

我们在KITTI场景流数据集[27]上演示了我们的方法的有效性。如图1所示,我们的深度刚性实例场景流模型在运行时间和精度上都明显优于之前的所有方法。重要的是,它几乎每一个入口都达到了最先进的性能。与现有技术相比,DRISF使D1异常值比减少43%,D2异常值比减少32%,流量异常值比减少24%。与现有的最佳场景流模型[3]相比,我们的场景流误差降低了22%,运行速度提高了800倍。

image-20210616205719505

图2:我们的方法概述:给定两个连续的立体图像,我们首先估计光流、立体和分割(第3.1节)。然后,每个实例的视觉线索被编码为能量函数(第3.2节),并传入高斯-牛顿(GN)求解器,以找到最佳三维刚性运动(第3.3节)。GN求解器被展开为一个递归网络。

2. Related Work

Optical flow光流: 光流传统上被认为是能量最小化的任务。它可以追溯到Horn和Schunck[17],他们将能量定义为一个数据项和一个平滑项的组合,并采用变分推理来解决。从那时起,各种各样的改进被提出[6,4,30]。最近,深度学习已经取代了变量学习方法。采用深度特征进行匹配[1,43]极大地提高了性能。但是由于匹配结果不密集,需要[35]的后处理步骤。这不仅降低了速度,而且限制了整体性能。

在Flownet[11]的倡导下,[21]已经提出了各种基于端到端深度回归的方法。Flownet2[20]通过叠加多个网络来迭代优化估计的流量,并引入可微分的变形操作来补偿大排量。由于产生的网络非常庞大,SpyNet[32]提出使用空间金字塔网络来处理大型运动。他们大大缩小了模型的尺寸,但以降低性能为代价。Lite-Flownet[19]和PWC-Net[38,37]扩展了这一想法,并将传统的金字塔处理和成本量概念纳入网络。与以前的方法相比,得到的模型更小、更快。在这项工作中,我们采用最新的PWC-Net作为我们的流程模块。

Stereo立体: 传统的立体方法[16,22]遵循三个步骤:计算patch-wise feature, construct cost volumes,以及最终的后处理。补丁的表示起着重要的作用。现代方法利用ecnn来预测两个补丁是否匹配[44,46]。虽然它们在具有挑战性的基准测试中表现出色,但它们的计算成本很高。为了加快匹配过程,Luo等人[24]提出了一种连体匹配网络,利用相关层[9]提取所有可能差异的边际分布。虽然相关层的使用显著提高了效率,但他们仍然需要后处理技术[15,47]来平滑他们的估计,这在很大程度上限制了他们的速度。基于此,我们提出了直接从给定的立体图像对中回归亚像素差异的网络。disnet[26]利用1D相关层来近似立体成本量,并依赖后面的层进行隐式聚合。Kendall等人[23]将3D conv纳入到进一步的正则化中,并提出了一个可区分的软argmin,以实现成本量的亚像素差异。PSM-Net[8]后来通过合并堆叠沙漏[29]和金字塔空间池对[23]进行了扩展[48,14]。在本工作中,我们利用PSM-Net作为我们的立体声模块。

Scene flow场景流: 场景流[40]描述了一个点的3D运动。与光流估计类似,该任务传统上被定义为一个变分推理问题[39,31,18,2]。然而,由于大运动引起的误差,在现实世界的情况下,性能是相当有限的。为了提高鲁棒性,基于斜面的方法[44,27,41,25]提出将场景分解成小的刚性移动平面,解决离散连续优化问题。贝尔等人在[27]的基础上构建[3],并加入识别线索。在细粒度实例和几何特征的帮助下,它们能够跨各种具有挑战性的场景建立通信。与我们的工作类似,Ren等[34]利用多个视觉线索进行场景流估计。他们通过层叠的条件随机场对特征进行编码,并迭代地改进它们。虽然这些方法取得了令人印象深刻的性能,但它们在实际应用中计算成本很高。大多数方法需要几分钟来计算一个场景流。这在很大程度上是由于复杂的优化任务。相比之下,我们的深度结构运动估计模型能够在不到一秒的时间内计算场景流,速度快了2到3个数量级。

image-20210620173251639

图3:val集合的定性结果:我们的模型可以非常准确地估计背景运动。在大多数情况下,它还能够估计前景物体的三维运动。如上一列所示,它在具有挑战性的情况下会失败。

3. Deep Rigid Instance Scene Flow

在本文中,我们感兴趣的是估计场景流在自动驾驶汽车的背景下。我们基于直觉建立模型,即在这个场景中,场景的运动可以通过估计每个演员的3D运动来形成。静态背景也可以被建模为一个刚性运动的对象,因为它的3D运动可以被描述为“自我-汽车”运动。为此,我们提出了一种新的深度结构模型,利用光流、立体声以及实例分割作为视觉线索。我们首先描述我们如何使用深度学习来有效地估计几何和语义特征。然后我们将场景流任务定义为能量最小化问题,并详细讨论每个能量项。最后,我们描述了如何进行有效的推理和学习

3.1 视觉线索

我们利用三种视觉线索:实例分割,光流和立体。

Instance Segmentation实例分割: 我们利用Mask R-CNN[13]作为我们的实例分割网络,因为它在自动驾驶基准中产生最先进的结果,例如KITTI[12]和Cityscapes[10]。Mask R-CNN是一个基于Faster R-CNN[33]的两阶段网络。对于每个对象提议,它预测对象类,回归其2D框,并推断bg/fg分割掩码。

Stereo:立体: 我们利用金字塔立体匹配网络(PSM-Net)[8]来计算我们的立体估计。它由三个主要模块组成:全卷积特征模块、空间金字塔池化[14,48]和3D成本体处理。特征模块以完全卷积的方式计算高维特征图;空间金字塔池在不同的尺度和位置聚集语境,构建成本量;然后,3D成本体积模块执行隐性成本体积聚合,并使用堆叠沙漏网络对其进行规格化。与以前的视差回归网络相比,PSM-Net学习更好地细化和产生尊重对象边界的尖锐视差图像。这是至关重要的,因为过度平滑的结果往往会恶化运动估计。

Optical Flow光流: 我们的流模块类似于PWC-Net[38],这是一个最先进的流网络设计基于三个经典原则(类似于立体网络):金字塔特征处理,扭曲和成本体积推理。金字塔特征处理对大背景下的视觉特征进行编码;通过从粗到细的方案,渐进的翘曲降低了建造成本。成本量推理通过细化边界进一步提高性能。我们通过一个修改实现了PWC-net:在扭曲操作中,如果采样点落在图像之外,我们使用最近的边界像素的特征来填充,而不是0。根据经验,我们发现这可以提高性能。

3.2 能量公式

我们现在描述我们的深度结构模型的能量公式。设L0、R0、L1、r1为两个连续时间步长采集的输入立体对。设D0,D1为估计的立体声,FL,FRbe为推断的流。表示S0 Las,实例分割计算在左侧图像L0上。假设所有的相机都预先用已知的特性校准。我们参数化了ξ∈se(3)的三维刚体运动,与se(3)有关的lie代数。我们使用这个参数化,因为它是三维运动的最小表示。对于每个实例i∈s0l,我们的目标是找到使光度误差、刚性拟合和流量一致性的加权组合最小的刚性三维运动,其中权值记为λ·,i。为简单起见,设I = {L0,R0,L1,R1,D0,D1,FL,FR}为输入图像和视觉线索。我们将属于实例i的像素集合表示为Pi= {p|S0 L§ = i}。注意,背景可以被视为一个“实例”,因为它中的所有像素都经历了相同的刚性变换。我们通过最小化得到每个实例的三维运动

image-20210616174527594

这三个能量项是互补的。他们捕获的几何和外观之间的观察和推断刚性运动一致。接下来,我们将更详细地描述能量术语。

Photometric Error光度误差:该能量编码了这样一个事实,即所有图像的对应应该具有相似的外观。特别是,对于参考图像中的每个像素p∈Pi,我们将其光度值与目标图像中相应像素的光度值进行比较:image-20210616175143566

其中αp∈{0,1}是表示哪个像素是离群值的指示函数。关于如何估计αp的讨论,我们请读者参阅第3.3节。P是参考图像中的一个像素,P表示投影在另一图像上的图像坐标,通过逆深度扭曲给出接下来是刚性变换ξ。具体地说,

image-20210616175303018

其中πK(·):R3→r2是已知本征K的透视投影函数,π−1 K(·,·):R2× R→R3是将一个像素及其视差转化为三维点的逆投影;ξ◦x用变换exp(ξ)x刚性变换三维点x。ρ是一种鲁棒误差函数,它通过减少异常值对非线性最小二乘问题的影响来提高整体鲁棒性。继Sun等人[36]之后,我们采用广义Charbonnier函数ρ(x) = (x2+ ?2)α作为我们的鲁棒函数,集α = 0.45和?= 10−5。与[36]类似,我们在实践中观察到稍微非凸的惩罚可以提高性能。

Rigid Fitting刚性拟合:这一项鼓励估计的三维刚性运动类似于从立体和流网络获得的逐点三维运动。形式上,给定由光流网络输出定义的对应{(p, q = p + FL§)|p∈Pi}和视差映射D0,D1,能量测度ξ:

image-20210616175421880

其中q = p + FL§和π - 1 k表示逆投影函数,ρ是相同的鲁棒误差函数。

Flow Consistency流量一致性:这一项鼓励3D刚体运动的投影接近最初的流量估计。这是通过测量我们的光流网和结构化刚性流之间的差异来实现的,结构化刚性流是通过使用d0和刚体运动ξ对每个像素进行扭曲来计算的。

image-20210616175514524

其中,p0是定义在Eq.(3)中的刚性扭曲函数,ρ是相同的鲁棒误差函数。

3.3 推理

Uncertain Pixel Removal不确定的像素移除: 由于视点的改变,流/立体预测错误等,一些像素的视觉线索是不可靠的。例如,一个图像中的像素可能由于视点的变化而被另一个图像遮挡。这促使我们将α p赋给每个像素p作为离群值的指示。为了达到这个目标,我们首先排除在下一帧中可能被遮挡的像素。具体来说,如果第二帧的扭曲3D视差与第一帧的视差显著不同,像素被标记为遮挡。直观的感觉是,在现实世界中,由于速度限制,像素的视差不会发生剧烈变化。我们根据经验把阈值设为30。接下来,我们使用RANSAC方案来拟合每个刚体运动实例。我们只保留内点,去掉其余的。尽管很简单,但我们发现这个策略非常有效

Initialization初始化: 由于能量模型的高度非凸结构,良好的初始化对于获得良好的性能至关重要。由于上一步已经删除了大部分不可靠点,我们直接利用RANSAC获得的刚性运动作为我们的鲁棒初始猜测。

Gaussian Newton Solver高斯牛顿求解器: 在连续空间上,ξ值是非凸可微的。为了处理鲁棒函数,我们采用迭代重加权最小二乘算法[7]。对于每一次迭代,我们可以将每个实例i的原始能量最小化问题重写为加权平方和:

image-20210616203139438

其中r表示残差函数,w根据稳健函数ρ对每个样本重加权,Eng表示对能量项求和。我们采用高斯-牛顿算法来最小化函数。因此我们有

image-20210616203209868

◦是位姿合成运算符,在实践中,我们将推理步骤展开为递归神经网络,并定义其计算图如式(5)所示。整个流水线包括矩阵逆是可微的。关于每一项的雅可比矩阵的推导和更多关于高斯-牛顿求解器的细节,请参阅附页材料。

Final Scene Flow Prediction最终场景流预测: 给定每个实例的最终刚性运动估计ξ∗i,我们能够计算密集的实例级刚性场景流。我们的场景流由三个部分组成,即第一帧的立体声D0,第二帧的扭曲立体声Dwarpas以及实例级的刚性流估算。具体来说,对于每个点p,我们有:

image-20210616203344240

其中zK(·)计算3D点的视差;π−1是反投影函数;和ξ◦x变换一个三维点x使用刚体运动ξ。

3.4 学习

可以对整个深度结构网络进行端到端的训练。在实际应用中,我们通过反向传播分别训练实例分割、流估计和立体估计模块。更具体地说,mask-RCNN模型是预先训练的城市景观和微调KITTI。损失函数包括ROI分类损失、box回归损失和掩模分割损失。PSM-Net在场景流[26]上进行预训练,并在KITTI上进行L1回归损失微调。PWC-Net在FlyingChairs[11]和FlyingThings[26]上进行预先训练,然后在KITTI上进行微调,使用加权L1回归损失。

4. Experiments

在这一节中,我们首先描述实验设置。接下来,我们评估我们的模型基于像素级场景流度量和实例级刚性运动度量。最后综合研究了我们模式的特点。

4.1 数据集和实现细节数据

Data数据: 我们在KITTI场景流数据集[27]上验证了我们的方法。该数据集由200组训练图像和200组测试图像组成,这些图像来自真实世界的驾驶场景。在[8]之后,我们将训练数据分成train, val按照4:1的比例分割。

Implementation details实现细节:对于前景对象,我们使用所有的能量术语。权值设置为1。背景资料,我们只使用光度术语(见消融研究)。我们运行RANSAC 5次,使用平均能量最低的一个作为初始化。我们展开GN求解器50步。如果能量到达平台,求解器就会提前终止。在实践中,通常在10次迭代中达到最佳能量。

4.2 现场流量估算

Comparison to the state-of-the-art与最先进的方法的比较: 我们将我们的方法与基准上的领先方法进行比较2:ISF [3], PRSM [42], OSF+TC [28], SSF [34], OSF[27], 2由于我们的PWC-Net(对160张图片进行了微调)的验证性能略差于官方的(对所有200张图片进行了微调),我们在提交给基准测试时使用它们的权重。所有其他设置保持不变。我们感谢孙德清的帮助。和CSF[25]。请注意,除了标准的两个相邻帧,PRSM和OSF+TC依赖于额外的临时帧。如表1所示,我们的方法(DRISF)在运行时间和异常值比率方面都显著优于所有以前的方法。它几乎在每一个入口都达到了最先进的性能。DRISF使D1异常值比降低43%,D2异常值比降低32%,流量异常值比降低24%。与ISF模型[3]相比,我们的场景流错误降低了22%,运行速度提高了800倍。图1比较了所有方法的性能和运行时间。

Qualitative results定性结果: 为了更好地理解我们的方法的优缺点,我们在图4中可视化了测试集上的一些场景流结果。由于大型车辆运动、无纹理区域、遮挡和光照变化,场景流估计在这些场景中具有挑战性。对于最左边的图像,由于太阳反射和遮挡,先前的方法无法估计车辆的运动和邻近区域。饱和的高强度像素阻碍了基于光度的方法[27]的精确匹配。通过检测和分割,ISF[3]能够提高前景估计。但是在被遮挡的背景下仍然失败。相比之下,我们的方法对光照变化具有较强的鲁棒性,能够通过有效地将车辆与背景分离来处理遮挡。它还能准确地估计远处小车的运动,以及路边交通棍的运动。由于我们只在车辆上训练了我们的Mask R-CNN,所以它不能分割火车,因此我们的模型也失败了。对于中间的图像,无纹理的汽车位移较大,被遮挡在第二帧中。虽然之前的方法基本上失败了,但我们的方法能够通过推断剩余非遮挡部分的流量和视差产生准确的运动估计。中间失效模式也是由于分割不准确。

4.3 三维刚性运动估计

现在我们来评估DRISF模型在估算三维刚性运动方面有多好。为了实现这一目标,我们利用了在KITTI场景流数据集中提供的ground truth光流、视差和实例分割来进行拟合最小二乘刚性运动为每个对象实例,以创建地面真实刚性运动。

Curating KITTI scene flow管理KITTI场景流: 在拟合过程中,我们发现KITTI的两个关键问题:首先,GT流/视差和GT分割之间存在不对准。其次,缩放拟合相同的3D CAD模型用于计算地面真实有时变化跨帧。第一个问题是由于GT是通过不同的方式收集的,因此不一致。由拟合的三维CAD模型获得GT流和GT差值,GT分割基于人工标注。为了解决这个问题,我们首先使用GT分段掩码来定义每个对象实例。然后我们用GT流和GT视差的每个实例通过最小二乘法拟合一个刚性运动。由于一些边界像素可能会被注释器错标记,所以我们搜索边界周围的每个像素是否在周围区域有其他实例,如果有,我们就用它们的刚体运动对像素进行变换。如果它们的刚性运动能够更好地解释像素的3D运动,即3D距离更近,那么我们将像素分配给该实例。最后,我们对新的像素分配再次进行最小二乘拟合。不幸的是,即使重新标记后,仍有一些车辆的刚性运动无法解释。经过仔细的诊断,我们注意到这是因为CAD模型的规模随着帧的变化而变化。为了验证我们的假设,我们计算了跨帧的相同实例的特征分解。理想情况下,如果实例的规模变化不大,特征值应该大致相同。然而,我们发现了一些例子,其中最大特征值变化了7%。由于GT不准确,我们简单地删除了这些实例。

3D Motion evaluation3D运动评估:大多数场景流方法是基于像素或采用分段刚性设置。目前还不清楚如何将它们的估计聚合到基于实例的运动模型中而不影响它们的性能。鉴于此,我们利用我们的GN求解器的运动初始化作为基线。我们利用深层网的输出,应用RANSAC来寻找最佳的刚性运动。我们称之为Deep+RANSAC。如表3所示,这个基线非常具有竞争力。它的性能与之前的先进技术相当,甚至更好。我们基于平移误差和角度误差来评估我们的运动模型。如图5所示,80%以上的车辆平移误差小于1m,转角误差小于1.3◦。此外,大多数翻译误差大于1m的车辆距离至少为20m。一般来说,两种误差都随距离的增加而略有增加。这是意料之中的,因为飞行器越远,我们得到的观测就越少。平移误差和角误差也有很强的相关性。

Visual odometry视觉里程表:“自我车”的里程表可以通过估计背景运动来计算。作为概念验证,我们计算验证图像上的每帧里程表误差。平均我们的运动模型漂移0.09米和0.24◦每10m。图6显示了详细的里程表误差w.r.t旅行距离。我们注意到当前的结果没有任何姿态过滤器,循环闭包等。我们计划在未来进一步开发这一方向。

4.4 分析

Ablation study消融研究:为了了解每个能量项对背景和前景物体的有效性,我们使用不同的能量组合来评估我们的模型。如表2所示,前景对象在使用所有能量项时表现最佳,而背景对象仅使用光度项时误差最小。这可以用车辆通常是无纹理的事实来解释,有时有很大的位移。如果我们只使用光度术语,将很难建立通信和处理急剧的外观变化。借助流动和刚性项,我们可以引导运动,减少这种影响,并处理遮挡。相比之下,背景是充满鉴别纹理和相对较小的运动,这是理想的光度术语。添加其他术语可能会引入额外的噪声并降低性能。

Comparison against original flow/disparity与原始流/差异的比较: 通过利用视觉线索和遮挡处理之间的结构,我们的模型能够定量(表3)和定性(图7)提高性能。目标运动估计更好,边界更清晰,遮挡误差大大减少,这表明结合先验知识,例如同一个实例的像素应该有相同的刚性运动,进入模型是至关重要的任务。

Potential improvement 潜在的改善 为了理解我们在改进每个模块时可能获得的潜在增益,我们依次用ground truth逐个替换求解器的输入,并评估我们的模型。用GT替代D1和flow,场景流错误率分别降低了8%和21%,而用GT替代分割并没有改善结果。这表明流和立体声模块仍有改进空间。

Runtime analysis 运行时分析 在表4的推理过程中,我们对模型中每个组件的运行时进行基准测试。整个推理过程可以分解为三个顺序的阶段:视觉线索提取、遮挡推理和优化。由于同一阶段中的模块是独立的,它们可以并行执行。此外,现代自动驾驶汽车配备了多个gpu。因此,每个阶段的运行时间是所有并行模块的最大值。在实践中,我们利用两个Nvidia 1080Ti gpu来提取视觉线索:一个用于PSM-Net,另一个用于Mask R-CNN和PWC-Net。目前,立体声模块占用了50%以上的总时间。这主要是由于3D CNN成本聚合和堆叠沙漏细化。未来,我们计划研究其他更快更可靠的立体网络。GN求解器的运行时间高度依赖于我们展开的步骤的数量和我们考虑的点的数量。详细分析请参考附件资料。

Limitations局限性: DRISF有两个主要的限制:第一,它严重依赖于分割网络的性能。如果分割模块未能检测到车辆,则将车辆视为背景,并赋予其反向的自我汽车运动。在这种情况下,即使光流网络准确地预测了它的流量,3D运动也可能是完全错误的。在未来,我们计划通过联合推理实例分割和场景流来解决这个问题。第二,当前的能量功能是高度流为中心的。只有光度项与流量无关。如果光流网络完全失效,求解器将很难恢复正确的运动。一个可能的解决方案是增加更多的流不变的能量项,比如相邻帧之间的实例关联。

5. Conclusion

本文提出了一种新的三维场景流估计深度结构模型。我们专注于自动驾驶场景中,场景的运动可以通过估计每个演员的三维刚性运动组成。我们首先利用深度学习为每个实例提取视觉线索。然后采用基于多个几何的能量函数来编码它们之间的结构几何关系。通过优化能量函数,我们可以推理出每个交通参与者的三维运动,从而得出场景流。所有的操作,包括Gassian-Newton求解器,都是在GPU中完成的。我们的方法在KITTI场景流数据集上获得了最先进的性能。它在运行时间和精度方面都大大优于以前的所有方法。与现有技术相比,DRISF的性能提高了22%,速度提高了2至3个数量级。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5iRfoFb5-1630577723806)(https://gitee.com/acexu-13/pics-for-blog/raw/master/img/20210902181314.png)]

图4:测试测试的定性比较:我们的方法可以有效地处理遮挡和无纹理区域。该算法对光照变化和大位移具有较强的鲁棒性。更多结果请参考附录材料。# Abstract

本文解决了自动驾驶场景下的场景流估计问题。我们利用深度学习技术以及强大的先验,因为在我们的应用领域中,场景的运动可以由机器人的运动和场景中演员的3D运动组成。我们在一个深度结构模型中将问题定义为能量最小化,该模型可以在GPU中通过展开一个高斯-牛顿求解器有效地解决。我们在具有挑战性的KITTI场景流数据集中的实验表明,我们的性能远远超过了最先进的技术,而速度是它的800倍。

1. Introduction

场景流是指从一组连续的(在时间上)立体对中估计三维运动场的问题。场景流用来描述场景中每个点的3D运动。通过场景流,我们可以深入了解几何以及场景的整体构成和运动。自动驾驶汽车如果知道场景中其他物体的3 d运动,不仅可以帮助自治系统规划自己的未来运动时避免碰撞, 而且还提高场景的理解和预测他人的意图。在本研究中,我们主要研究自动驾驶场景中3D场景流的估计。

在自动驾驶的世界里,场景的运动可以用自我汽车的运动来解释。通常是刚性移动的动态对象的存在也可以作为强先验。以前的结构预测方法经常利用这些事实,并拟合运动的分段刚性表示[41,44,27,3]。虽然这些方法在场景流估计上取得了令人印象深刻的结果,但它们需要几分钟来处理每一帧,因此不能在现实世界的机器人系统中使用

另一方面,基于深度学习的方法在各种低层次任务上实时取得了最先进的性能,如光流预测[11,32,38]和立体估计[46,26,24]。虽然它们产生“准确”的结果,但它们的输出不是结构化的,不能捕获估计变量之间的关系。例如,它们缺乏保证给定对象上的像素产生一致估计的能力。虽然这种现象可能对摄影编辑应用程序的影响很小,但在自动驾驶汽车的环境中,这可能是灾难性的,因为在这种环境中,整个物体的运动比每个像素的运动更重要。

考虑到这些问题,我们开发了一个新颖的深度刚性实例场景流(DRISF)模型,它兼顾了两个方面的优点。背后的想法是,场景的运动可以通过估计每个演员的3D刚性运动组成。静态背景也可以被建模为一个刚性运动的对象,因为它的3D运动可以被描述为“自我-汽车”运动。因此,问题被简化为估计每个交通参与者的三维运动。为了实现这一目标,我们首先利用深度神经网络来估计光流、视差和实例分割。我们然后利用多个几何能量函数对这些视觉线索之间的结构几何关系进行编码。通过优化能量函数,我们可以有效地推理出每个交通参与者的三维运动。由于能量以加权平方和的形式存在,因此可以通过高斯牛顿算法[5]进行有效的最小化。我们在神经网络中以层的形式实现GN求解器,因此所有操作都可以端到端在GPU上高效地计算。

我们在KITTI场景流数据集[27]上演示了我们的方法的有效性。如图1所示,我们的深度刚性实例场景流模型在运行时间和精度上都明显优于之前的所有方法。重要的是,它几乎每一个入口都达到了最先进的性能。与现有技术相比,DRISF使D1异常值比减少43%,D2异常值比减少32%,流量异常值比减少24%。与现有的最佳场景流模型[3]相比,我们的场景流误差降低了22%,运行速度提高了800倍。

image-20210616205719505

图2:我们的方法概述:给定两个连续的立体图像,我们首先估计光流、立体和分割(第3.1节)。然后,每个实例的视觉线索被编码为能量函数(第3.2节),并传入高斯-牛顿(GN)求解器,以找到最佳三维刚性运动(第3.3节)。GN求解器被展开为一个递归网络。

2. Related Work

Optical flow光流: 光流传统上被认为是能量最小化的任务。它可以追溯到Horn和Schunck[17],他们将能量定义为一个数据项和一个平滑项的组合,并采用变分推理来解决。从那时起,各种各样的改进被提出[6,4,30]。最近,深度学习已经取代了变量学习方法。采用深度特征进行匹配[1,43]极大地提高了性能。但是由于匹配结果不密集,需要[35]的后处理步骤。这不仅降低了速度,而且限制了整体性能。

在Flownet[11]的倡导下,[21]已经提出了各种基于端到端深度回归的方法。Flownet2[20]通过叠加多个网络来迭代优化估计的流量,并引入可微分的变形操作来补偿大排量。由于产生的网络非常庞大,SpyNet[32]提出使用空间金字塔网络来处理大型运动。他们大大缩小了模型的尺寸,但以降低性能为代价。Lite-Flownet[19]和PWC-Net[38,37]扩展了这一想法,并将传统的金字塔处理和成本量概念纳入网络。与以前的方法相比,得到的模型更小、更快。在这项工作中,我们采用最新的PWC-Net作为我们的流程模块。

Stereo立体: 传统的立体方法[16,22]遵循三个步骤:计算patch-wise feature, construct cost volumes,以及最终的后处理。补丁的表示起着重要的作用。现代方法利用ecnn来预测两个补丁是否匹配[44,46]。虽然它们在具有挑战性的基准测试中表现出色,但它们的计算成本很高。为了加快匹配过程,Luo等人[24]提出了一种连体匹配网络,利用相关层[9]提取所有可能差异的边际分布。虽然相关层的使用显著提高了效率,但他们仍然需要后处理技术[15,47]来平滑他们的估计,这在很大程度上限制了他们的速度。基于此,我们提出了直接从给定的立体图像对中回归亚像素差异的网络。disnet[26]利用1D相关层来近似立体成本量,并依赖后面的层进行隐式聚合。Kendall等人[23]将3D conv纳入到进一步的正则化中,并提出了一个可区分的软argmin,以实现成本量的亚像素差异。PSM-Net[8]后来通过合并堆叠沙漏[29]和金字塔空间池对[23]进行了扩展[48,14]。在本工作中,我们利用PSM-Net作为我们的立体声模块。

Scene flow场景流: 场景流[40]描述了一个点的3D运动。与光流估计类似,该任务传统上被定义为一个变分推理问题[39,31,18,2]。然而,由于大运动引起的误差,在现实世界的情况下,性能是相当有限的。为了提高鲁棒性,基于斜面的方法[44,27,41,25]提出将场景分解成小的刚性移动平面,解决离散连续优化问题。贝尔等人在[27]的基础上构建[3],并加入识别线索。在细粒度实例和几何特征的帮助下,它们能够跨各种具有挑战性的场景建立通信。与我们的工作类似,Ren等[34]利用多个视觉线索进行场景流估计。他们通过层叠的条件随机场对特征进行编码,并迭代地改进它们。虽然这些方法取得了令人印象深刻的性能,但它们在实际应用中计算成本很高。大多数方法需要几分钟来计算一个场景流。这在很大程度上是由于复杂的优化任务。相比之下,我们的深度结构运动估计模型能够在不到一秒的时间内计算场景流,速度快了2到3个数量级。

image-20210620173251639

图3:val集合的定性结果:我们的模型可以非常准确地估计背景运动。在大多数情况下,它还能够估计前景物体的三维运动。如上一列所示,它在具有挑战性的情况下会失败。

3. Deep Rigid Instance Scene Flow

在本文中,我们感兴趣的是估计场景流在自动驾驶汽车的背景下。我们基于直觉建立模型,即在这个场景中,场景的运动可以通过估计每个演员的3D运动来形成。静态背景也可以被建模为一个刚性运动的对象,因为它的3D运动可以被描述为“自我-汽车”运动。为此,我们提出了一种新的深度结构模型,利用光流、立体声以及实例分割作为视觉线索。我们首先描述我们如何使用深度学习来有效地估计几何和语义特征。然后我们将场景流任务定义为能量最小化问题,并详细讨论每个能量项。最后,我们描述了如何进行有效的推理和学习

3.1 视觉线索

我们利用三种视觉线索:实例分割,光流和立体。

Instance Segmentation实例分割: 我们利用Mask R-CNN[13]作为我们的实例分割网络,因为它在自动驾驶基准中产生最先进的结果,例如KITTI[12]和Cityscapes[10]。Mask R-CNN是一个基于Faster R-CNN[33]的两阶段网络。对于每个对象提议,它预测对象类,回归其2D框,并推断bg/fg分割掩码。

Stereo:立体: 我们利用金字塔立体匹配网络(PSM-Net)[8]来计算我们的立体估计。它由三个主要模块组成:全卷积特征模块、空间金字塔池化[14,48]和3D成本体处理。特征模块以完全卷积的方式计算高维特征图;空间金字塔池在不同的尺度和位置聚集语境,构建成本量;然后,3D成本体积模块执行隐性成本体积聚合,并使用堆叠沙漏网络对其进行规格化。与以前的视差回归网络相比,PSM-Net学习更好地细化和产生尊重对象边界的尖锐视差图像。这是至关重要的,因为过度平滑的结果往往会恶化运动估计。

Optical Flow光流: 我们的流模块类似于PWC-Net[38],这是一个最先进的流网络设计基于三个经典原则(类似于立体网络):金字塔特征处理,扭曲和成本体积推理。金字塔特征处理对大背景下的视觉特征进行编码;通过从粗到细的方案,渐进的翘曲降低了建造成本。成本量推理通过细化边界进一步提高性能。我们通过一个修改实现了PWC-net:在扭曲操作中,如果采样点落在图像之外,我们使用最近的边界像素的特征来填充,而不是0。根据经验,我们发现这可以提高性能。

3.2 能量公式

我们现在描述我们的深度结构模型的能量公式。设L0、R0、L1、r1为两个连续时间步长采集的输入立体对。设D0,D1为估计的立体声,FL,FRbe为推断的流。表示S0 Las,实例分割计算在左侧图像L0上。假设所有的相机都预先用已知的特性校准。我们参数化了ξ∈se(3)的三维刚体运动,与se(3)有关的lie代数。我们使用这个参数化,因为它是三维运动的最小表示。对于每个实例i∈s0l,我们的目标是找到使光度误差、刚性拟合和流量一致性的加权组合最小的刚性三维运动,其中权值记为λ·,i。为简单起见,设I = {L0,R0,L1,R1,D0,D1,FL,FR}为输入图像和视觉线索。我们将属于实例i的像素集合表示为Pi= {p|S0 L§ = i}。注意,背景可以被视为一个“实例”,因为它中的所有像素都经历了相同的刚性变换。我们通过最小化得到每个实例的三维运动

image-20210616174527594

这三个能量项是互补的。他们捕获的几何和外观之间的观察和推断刚性运动一致。接下来,我们将更详细地描述能量术语。

Photometric Error光度误差:该能量编码了这样一个事实,即所有图像的对应应该具有相似的外观。特别是,对于参考图像中的每个像素p∈Pi,我们将其光度值与目标图像中相应像素的光度值进行比较:image-20210616175143566

其中αp∈{0,1}是表示哪个像素是离群值的指示函数。关于如何估计αp的讨论,我们请读者参阅第3.3节。P是参考图像中的一个像素,P表示投影在另一图像上的图像坐标,通过逆深度扭曲给出接下来是刚性变换ξ。具体地说,

image-20210616175303018

其中πK(·):R3→r2是已知本征K的透视投影函数,π−1 K(·,·):R2× R→R3是将一个像素及其视差转化为三维点的逆投影;ξ◦x用变换exp(ξ)x刚性变换三维点x。ρ是一种鲁棒误差函数,它通过减少异常值对非线性最小二乘问题的影响来提高整体鲁棒性。继Sun等人[36]之后,我们采用广义Charbonnier函数ρ(x) = (x2+ ?2)α作为我们的鲁棒函数,集α = 0.45和?= 10−5。与[36]类似,我们在实践中观察到稍微非凸的惩罚可以提高性能。

Rigid Fitting刚性拟合:这一项鼓励估计的三维刚性运动类似于从立体和流网络获得的逐点三维运动。形式上,给定由光流网络输出定义的对应{(p, q = p + FL§)|p∈Pi}和视差映射D0,D1,能量测度ξ:

image-20210616175421880

其中q = p + FL§和π - 1 k表示逆投影函数,ρ是相同的鲁棒误差函数。

Flow Consistency流量一致性:这一项鼓励3D刚体运动的投影接近最初的流量估计。这是通过测量我们的光流网和结构化刚性流之间的差异来实现的,结构化刚性流是通过使用d0和刚体运动ξ对每个像素进行扭曲来计算的。

image-20210616175514524

其中,p0是定义在Eq.(3)中的刚性扭曲函数,ρ是相同的鲁棒误差函数。

3.3 推理

Uncertain Pixel Removal不确定的像素移除: 由于视点的改变,流/立体预测错误等,一些像素的视觉线索是不可靠的。例如,一个图像中的像素可能由于视点的变化而被另一个图像遮挡。这促使我们将α p赋给每个像素p作为离群值的指示。为了达到这个目标,我们首先排除在下一帧中可能被遮挡的像素。具体来说,如果第二帧的扭曲3D视差与第一帧的视差显著不同,像素被标记为遮挡。直观的感觉是,在现实世界中,由于速度限制,像素的视差不会发生剧烈变化。我们根据经验把阈值设为30。接下来,我们使用RANSAC方案来拟合每个刚体运动实例。我们只保留内点,去掉其余的。尽管很简单,但我们发现这个策略非常有效

Initialization初始化: 由于能量模型的高度非凸结构,良好的初始化对于获得良好的性能至关重要。由于上一步已经删除了大部分不可靠点,我们直接利用RANSAC获得的刚性运动作为我们的鲁棒初始猜测。

Gaussian Newton Solver高斯牛顿求解器: 在连续空间上,ξ值是非凸可微的。为了处理鲁棒函数,我们采用迭代重加权最小二乘算法[7]。对于每一次迭代,我们可以将每个实例i的原始能量最小化问题重写为加权平方和:

image-20210616203139438

其中r表示残差函数,w根据稳健函数ρ对每个样本重加权,Eng表示对能量项求和。我们采用高斯-牛顿算法来最小化函数。因此我们有

image-20210616203209868

◦是位姿合成运算符,在实践中,我们将推理步骤展开为递归神经网络,并定义其计算图如式(5)所示。整个流水线包括矩阵逆是可微的。关于每一项的雅可比矩阵的推导和更多关于高斯-牛顿求解器的细节,请参阅附页材料。

Final Scene Flow Prediction最终场景流预测: 给定每个实例的最终刚性运动估计ξ∗i,我们能够计算密集的实例级刚性场景流。我们的场景流由三个部分组成,即第一帧的立体声D0,第二帧的扭曲立体声Dwarpas以及实例级的刚性流估算。具体来说,对于每个点p,我们有:

image-20210616203344240

其中zK(·)计算3D点的视差;π−1是反投影函数;和ξ◦x变换一个三维点x使用刚体运动ξ。

3.4 学习

可以对整个深度结构网络进行端到端的训练。在实际应用中,我们通过反向传播分别训练实例分割、流估计和立体估计模块。更具体地说,mask-RCNN模型是预先训练的城市景观和微调KITTI。损失函数包括ROI分类损失、box回归损失和掩模分割损失。PSM-Net在场景流[26]上进行预训练,并在KITTI上进行L1回归损失微调。PWC-Net在FlyingChairs[11]和FlyingThings[26]上进行预先训练,然后在KITTI上进行微调,使用加权L1回归损失。

4. Experiments

在这一节中,我们首先描述实验设置。接下来,我们评估我们的模型基于像素级场景流度量和实例级刚性运动度量。最后综合研究了我们模式的特点。

4.1 数据集和实现细节数据

Data数据: 我们在KITTI场景流数据集[27]上验证了我们的方法。该数据集由200组训练图像和200组测试图像组成,这些图像来自真实世界的驾驶场景。在[8]之后,我们将训练数据分成train, val按照4:1的比例分割。

Implementation details实现细节:对于前景对象,我们使用所有的能量术语。权值设置为1。背景资料,我们只使用光度术语(见消融研究)。我们运行RANSAC 5次,使用平均能量最低的一个作为初始化。我们展开GN求解器50步。如果能量到达平台,求解器就会提前终止。在实践中,通常在10次迭代中达到最佳能量。

4.2 现场流量估算

Comparison to the state-of-the-art与最先进的方法的比较: 我们将我们的方法与基准上的领先方法进行比较2:ISF [3], PRSM [42], OSF+TC [28], SSF [34], OSF[27], 2由于我们的PWC-Net(对160张图片进行了微调)的验证性能略差于官方的(对所有200张图片进行了微调),我们在提交给基准测试时使用它们的权重。所有其他设置保持不变。我们感谢孙德清的帮助。和CSF[25]。请注意,除了标准的两个相邻帧,PRSM和OSF+TC依赖于额外的临时帧。如表1所示,我们的方法(DRISF)在运行时间和异常值比率方面都显著优于所有以前的方法。它几乎在每一个入口都达到了最先进的性能。DRISF使D1异常值比降低43%,D2异常值比降低32%,流量异常值比降低24%。与ISF模型[3]相比,我们的场景流错误降低了22%,运行速度提高了800倍。图1比较了所有方法的性能和运行时间。

Qualitative results定性结果: 为了更好地理解我们的方法的优缺点,我们在图4中可视化了测试集上的一些场景流结果。由于大型车辆运动、无纹理区域、遮挡和光照变化,场景流估计在这些场景中具有挑战性。对于最左边的图像,由于太阳反射和遮挡,先前的方法无法估计车辆的运动和邻近区域。饱和的高强度像素阻碍了基于光度的方法[27]的精确匹配。通过检测和分割,ISF[3]能够提高前景估计。但是在被遮挡的背景下仍然失败。相比之下,我们的方法对光照变化具有较强的鲁棒性,能够通过有效地将车辆与背景分离来处理遮挡。它还能准确地估计远处小车的运动,以及路边交通棍的运动。由于我们只在车辆上训练了我们的Mask R-CNN,所以它不能分割火车,因此我们的模型也失败了。对于中间的图像,无纹理的汽车位移较大,被遮挡在第二帧中。虽然之前的方法基本上失败了,但我们的方法能够通过推断剩余非遮挡部分的流量和视差产生准确的运动估计。中间失效模式也是由于分割不准确。

4.3 三维刚性运动估计

现在我们来评估DRISF模型在估算三维刚性运动方面有多好。为了实现这一目标,我们利用了在KITTI场景流数据集中提供的ground truth光流、视差和实例分割来进行拟合最小二乘刚性运动为每个对象实例,以创建地面真实刚性运动。

Curating KITTI scene flow管理KITTI场景流: 在拟合过程中,我们发现KITTI的两个关键问题:首先,GT流/视差和GT分割之间存在不对准。其次,缩放拟合相同的3D CAD模型用于计算地面真实有时变化跨帧。第一个问题是由于GT是通过不同的方式收集的,因此不一致。由拟合的三维CAD模型获得GT流和GT差值,GT分割基于人工标注。为了解决这个问题,我们首先使用GT分段掩码来定义每个对象实例。然后我们用GT流和GT视差的每个实例通过最小二乘法拟合一个刚性运动。由于一些边界像素可能会被注释器错标记,所以我们搜索边界周围的每个像素是否在周围区域有其他实例,如果有,我们就用它们的刚体运动对像素进行变换。如果它们的刚性运动能够更好地解释像素的3D运动,即3D距离更近,那么我们将像素分配给该实例。最后,我们对新的像素分配再次进行最小二乘拟合。不幸的是,即使重新标记后,仍有一些车辆的刚性运动无法解释。经过仔细的诊断,我们注意到这是因为CAD模型的规模随着帧的变化而变化。为了验证我们的假设,我们计算了跨帧的相同实例的特征分解。理想情况下,如果实例的规模变化不大,特征值应该大致相同。然而,我们发现了一些例子,其中最大特征值变化了7%。由于GT不准确,我们简单地删除了这些实例。

3D Motion evaluation3D运动评估:大多数场景流方法是基于像素或采用分段刚性设置。目前还不清楚如何将它们的估计聚合到基于实例的运动模型中而不影响它们的性能。鉴于此,我们利用我们的GN求解器的运动初始化作为基线。我们利用深层网的输出,应用RANSAC来寻找最佳的刚性运动。我们称之为Deep+RANSAC。如表3所示,这个基线非常具有竞争力。它的性能与之前的先进技术相当,甚至更好。我们基于平移误差和角度误差来评估我们的运动模型。如图5所示,80%以上的车辆平移误差小于1m,转角误差小于1.3◦。此外,大多数翻译误差大于1m的车辆距离至少为20m。一般来说,两种误差都随距离的增加而略有增加。这是意料之中的,因为飞行器越远,我们得到的观测就越少。平移误差和角误差也有很强的相关性。

Visual odometry视觉里程表:“自我车”的里程表可以通过估计背景运动来计算。作为概念验证,我们计算验证图像上的每帧里程表误差。平均我们的运动模型漂移0.09米和0.24◦每10m。图6显示了详细的里程表误差w.r.t旅行距离。我们注意到当前的结果没有任何姿态过滤器,循环闭包等。我们计划在未来进一步开发这一方向。

4.4 分析

Ablation study消融研究:为了了解每个能量项对背景和前景物体的有效性,我们使用不同的能量组合来评估我们的模型。如表2所示,前景对象在使用所有能量项时表现最佳,而背景对象仅使用光度项时误差最小。这可以用车辆通常是无纹理的事实来解释,有时有很大的位移。如果我们只使用光度术语,将很难建立通信和处理急剧的外观变化。借助流动和刚性项,我们可以引导运动,减少这种影响,并处理遮挡。相比之下,背景是充满鉴别纹理和相对较小的运动,这是理想的光度术语。添加其他术语可能会引入额外的噪声并降低性能。

Comparison against original flow/disparity与原始流/差异的比较: 通过利用视觉线索和遮挡处理之间的结构,我们的模型能够定量(表3)和定性(图7)提高性能。目标运动估计更好,边界更清晰,遮挡误差大大减少,这表明结合先验知识,例如同一个实例的像素应该有相同的刚性运动,进入模型是至关重要的任务。

Potential improvement 潜在的改善 为了理解我们在改进每个模块时可能获得的潜在增益,我们依次用ground truth逐个替换求解器的输入,并评估我们的模型。用GT替代D1和flow,场景流错误率分别降低了8%和21%,而用GT替代分割并没有改善结果。这表明流和立体声模块仍有改进空间。

Runtime analysis 运行时分析 在表4的推理过程中,我们对模型中每个组件的运行时进行基准测试。整个推理过程可以分解为三个顺序的阶段:视觉线索提取、遮挡推理和优化。由于同一阶段中的模块是独立的,它们可以并行执行。此外,现代自动驾驶汽车配备了多个gpu。因此,每个阶段的运行时间是所有并行模块的最大值。在实践中,我们利用两个Nvidia 1080Ti gpu来提取视觉线索:一个用于PSM-Net,另一个用于Mask R-CNN和PWC-Net。目前,立体声模块占用了50%以上的总时间。这主要是由于3D CNN成本聚合和堆叠沙漏细化。未来,我们计划研究其他更快更可靠的立体网络。GN求解器的运行时间高度依赖于我们展开的步骤的数量和我们考虑的点的数量。详细分析请参考附件资料。

Limitations局限性: DRISF有两个主要的限制:第一,它严重依赖于分割网络的性能。如果分割模块未能检测到车辆,则将车辆视为背景,并赋予其反向的自我汽车运动。在这种情况下,即使光流网络准确地预测了它的流量,3D运动也可能是完全错误的。在未来,我们计划通过联合推理实例分割和场景流来解决这个问题。第二,当前的能量功能是高度流为中心的。只有光度项与流量无关。如果光流网络完全失效,求解器将很难恢复正确的运动。一个可能的解决方案是增加更多的流不变的能量项,比如相邻帧之间的实例关联。

5. Conclusion

本文提出了一种新的三维场景流估计深度结构模型。我们专注于自动驾驶场景中,场景的运动可以通过估计每个演员的三维刚性运动组成。我们首先利用深度学习为每个实例提取视觉线索。然后采用基于多个几何的能量函数来编码它们之间的结构几何关系。通过优化能量函数,我们可以推理出每个交通参与者的三维运动,从而得出场景流。所有的操作,包括Gassian-Newton求解器,都是在GPU中完成的。我们的方法在KITTI场景流数据集上获得了最先进的性能。它在运行时间和精度方面都大大优于以前的所有方法。与现有技术相比,DRISF的性能提高了22%,速度提高了2至3个数量级。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ILxIH64q-1630577724888)(https://gitee.com/acexu-13/pics-for-blog/raw/master/img/20210902181314.png)]

图4:测试测试的定性比较:我们的方法可以有效地处理遮挡和无纹理区域。该算法对光照变化和大位移具有较强的鲁棒性。更多结果请参考附录材料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值