资讯动态

RIAV-MVS:非对称代价体与递归索引如何重塑多视图立体三维重建

发布时间:2026/9/13 7:58:17 来源:尧图企业网站定制
1. 先搞清楚这篇论文在打什么问题1.1 MVS的经典流程和它要过的三道坎多视图立体Multi-View Stereo简称MVS这个方向本质上就是把一堆不同视角拍出来的照片还原成带真实尺度的三维几何。它的下游应用太多了自动驾驶的高精地图、机器人导航、古建筑数字化、电影视效里的场景重建全都离不开这步。传统MVS经过几十年的发展已经在密集匹配、几何优化上有了一套成熟打法但到了深度学习时代大家又回到了同一条起跑线上。深度学习MVS的流水线从MVSNet那次里程碑式的工作开始基本上固定成了一套标准范式先用卷积网络从每张图里提特征再通过可微分单应性变形把参考视图的特征投影到一组深度假设平面上聚合出一个三维代价体然后用3D CNN做正则化最后沿深度方向取softmax或者回归出深度图。这套流程跑通之后后面绝大多数工作都是在某个环节上做文章有的改代价体构建方式有的引入注意力机制有的做多尺度级联有的把Transformer搬进来。但这个看似顺畅的流程里其实横着三道坎。第一道坎是显存代价体是三维的深度假设数一多、分辨率一上来显存直接爆炸很多方法在1080p甚至更低分辨率下跑两三个视图就捉襟见肘了。第二道坎是正则化效率用3D CNN去洗代价体本质上是对整块三维体做卷积计算量很大而且depth维度上的感受野受限于卷积核大小很难捕捉到长距离的深度依赖关系。第三道坎是精度上限一次性从整块代价体回归出深度相当于让网络一步到位但实际场景里物体的边缘、遮挡区域、弱纹理区域都必须靠迭代或上下文信息慢慢磨一步到位很容易糊。1.2 代价体方法为什么绕不开有人可能会问现在不是有基于Transformer的方法吗还有直接回归深度图的单目方法为什么还要盯着代价体不放这里有个很现实的原因MVS的核心约束是几何一致性而代价体是编码几何一致性最自然的载体。所谓几何一致性简单说就是——如果某个三维点在参考视图里是可见的那么它在其他源视图里也应该是可见的而且投影位置应该落在对应当纹理特征的区域上。把多个视图的特征投影到同一组深度假设上然后在深度方向上对比这些特征是不是长得像这就是代价体的本质。代价体里每个体素记录的是某个像素在某个深度假设下的匹配代价这个代价越小说明该深度越可能是真实的。想绕开代价体不是不行但要么牺牲几何约束的显式表达要么就把一致性计算放在网络隐空间里隐式完成。RIAV-MVS这条线没有选择绕开而是认认真真去解决代价体自身的问题——太大、太重、太慢。它的思路很有意思既然代价体这么占资源那我能不能不一次性构建完整的立方体能不能用一个更瘦的结构把它装下来深度优化能不能不做成一次性的全局卷积而是像RAFT做光流那样循环反复地去查询、刷新1.3 RIAV-MVS的切入点把这个问题再拆细一点RIAV-MVS要回答的核心问题是三维场景的几何信息到底需不需要用那么密集的代价体去表达在没有深度学习之前经典MVS确实需要精细的深度采样才能保证匹配精度但深度学习模型本身有很强的先验能力它完全可以用一个相对稀疏、结构不对称的代价体去表达几何然后靠一个循环索引机制在推理阶段逐步把深度细化到位。所以这篇论文的全称里有两个必须拆开看的关键词Asymmetric Volume非对称代价体和Recurrent Indexing递归索引。前者是从存储结构上做手术后者是从优化策略上做文章两个设计是有内在关联的——正因为我用的是更紧凑的非对称代价体才需要一个更聪明的索引机制来把精度找回来。这也解释了为什么RIAV-MVS在CVPR 2023的MVS方向里能站住脚它不是堆一个大网络硬刷榜单而是提出了一个逻辑自洽、可解释性很强的整体方案而且这个方案对显存敏感的实际场景比如高分辨率重建、大规模场景非常友好。2. 核心利器一非对称代价体Asymmetric Volume2.1 对称的代价体到底哪里不对劲先别急着看RIAV-MVS怎么搭结构我们先把对称这两个字搞明白。在MVSNet那一套框架里代价体的尺寸一般是 H×W×D×C也就是高、宽、深度假设数、特征通道数。早期工作比如MVSNet直接在原始分辨率上构建整块高维体显存占用非常夸张。后来大家发现这样太浪费就做了很多改进CasMVSNet把深度假设数从256压缩到几十个同时级联多个阶段逐步细化CVP-MVSNet用可微分的近似方式在深度维度上做自适应采样还有一些工作在同一分辨率下限制特征通道数。但不管是哪个方法它们的内核里都有一个默认假设代价体应该在空间维度和深度维度上保持足够的分辨率而且是同步的。这听起来很合理因为三维空间各向同性嘛精度的需求理所当然也应该各向同性。但在实际问题里这个假设其实站不住脚。我来打个比方。你在一个巷子里拍了一组照片巷子的深度范围可能很大但真正有几何细节的地方只有几个深度层——前景的墙面、中间的电线杆、远处的楼门。对大多数像素来说它的深度要么非常确定要么就是处于遮挡状态你根本不需要在256个深度假设上给它做精细判别。换句话说对一副真实场景而言深度维度的信息浓度远远低于空间维度的信息浓度。既然如此为什么我还要用一个对称的、密集的立方体去装这些本来就稀疏的信息2.2 非对称体是怎么搭起来的RIAV-MVS给出的答案是把代价体做成一个在空间上保持较高分辨率、在深度维度上刻意压缩的扁体。更准确地说这篇论文设计的是一个各向异性的三维代价体——空间维度H、W保留足够的细节深度维度D或者通道维度上做得更紧凑不再追求每个深度层都拥有完整的高分辨率特征。这种设计的第一层好处是显存上的这不是某个实验的偶然结果而是结构上的必然。假设原本代价体尺寸是 H×W×D×C你把深度维度压缩成原来的四分之一其他维度不变那么整个代价体的显存就是原来的四分之一。这意味着在同样的GPU显存限制下你可以用更高的输入分辨率、更多的输入视图或者更大的batch size来训练。对做高分辨率重建的人来说这个优势是致命的。第二层好处是信息效率上的。因为深度维度的表达被压缩了网络被迫把更多容量放在空间表达上这其实会在客观上起到一个正则化的效果——它不让模型把过多参数浪费在那些本来就不存在区分度的深度层上而是去学习更本质的多视图几何关系。但问题来了深度维度被我压缩之后深度估计的精度不是注定要下降了吗这就是递归索引机制出场的地方。用扁的代价体做粗粒度匹配再用循环索引的方式逐步细化粗匹配负责确定大概位置细化过程负责把边缘和细微结构磨准。一粗一细相互配合最终效果反而不输给那些堆满深度层的对称方法。2.3 它到底省了什么、赚了什么单纯省显存其实很多工程上取巧的办法都能做到比如分块重建、梯度检查点、混合精度训练。RIAV-MVS的非对称体设计真正的价值在于它是结构层面的省而不是训练技巧层面的省。分块重建会牺牲全局一致性梯度检查点会增加计算开销混合精度会带来精度损失风险。而一个紧凑的代价体从源头就把计算量和显存压下来了后面的正则化和迭代细化模块全都在这个更小的体上运行整体计算图都变轻了。再说赚了什么。最直观的收获是空间细节保住了。做过三维重建的朋友都知道重建结果的观感好坏很大程度上取决于边界、几何边缘和小结构比如台阶、窗框、树叶间隙的还原程度。这些细节恰恰是由空间分辨率决定的而不是深度采样密度。RIAV-MVS把预算从深度维度挪到空间维度等于是把钱花在了刀刃上——边界区域的空间分辨率保住了代价体又没爆显存这是一笔很划算的买卖。当然非对称设计也不是白拿的它带来的额外代价是算法复杂度的迁移。以前深度维度方向上的密集采样可以一步到位做回归现在必须靠递归索引机制来补精度。好在迭代细化这件事在深度学习领域已经是被反复验证过的范式了关键在于怎么设计得高效、稳定这也是该论文另一个核心模块要去解决的问题。3. 核心利器二递归索引Recurrent Indexing3.1 从整块正则化到逐步索引优化传统代价体方法做完代价聚合之后拿到的是一个 H×W×D 的代价体下一步通常是沿深度方向做一个softmax或者加权平均直接求出每个像素的深度。这个过程有个很微妙的问题softmax的温度是固定的网络在训练中被期望一次性把正确的深度层挑出来。如果某个像素正好落在深度假设之间的位置代价体里可能有好几层响应都较高网络只能强行做一个加权平均结果就是深度被平均到一个模糊的位置上尤其容易发生在薄结构和遮挡边界处。RIAV-MVS换了个思路。它不再把挑出正确深度作为一次性的动作而是把它当作一个迭代查询问题。什么叫索引就是每次迭代时根据当前像素的深度估计值去代价体里查对应位置的特征然后根据查到的信息更新深度估计。这个过程很像你在书里查一个词你大概知道它在前几十页先翻开十几页扫一眼发现不对再翻到二十几页blablabla每一步都在缩小搜索范围最后精确定位到那一页那一行。落到工程实现上就是每个时间步 t先有一个当前的深度图估计用它在代价体里做一个深度方向的双线性采样取出一组特征然后把这组特征和当前深度图、可能还有一些上下文特征一起喂给循环神经网络单元循环单元输出一个深度残差加到当前估计上作为新的深度。如此反复 T 次深度从粗到细逐渐收敛。整个过程是可微的可以直接端到端训练。3.2 循环单元怎么工作循环索引机制里最核心的组件是一个循环神经网络单元最常见的选型是ConvGRU或者类似的门控循环卷积结构。为什么选循环结构而不是直接堆几层卷积因为循环结构有一个天然的记忆属性它每一步都能看到上一步的深度估计结果并且把自己的隐藏状态带去下一步。这相当于网络在做深度估计时有一个内部的推理轨迹它知道前一步把某个像素的深度推到了哪里、那里的代价响应长什么样然后根据这些历史信息决定下一步往哪个方向调整。这里有个细节值得展开深度方向的采样操作。假设当前步某个像素的深度估计是 d_t深度假设范围是 [d_min, d_max]你要从代价体里取对应深度层的特征。由于 d_t 通常不会恰好落在某个离散的深度层上需要做线性插值——在相邻两个深度层之间采样。采出来的特征会告诉你在这个深度附近多视图的一致性到底好不好。如果一致性信号很强循环单元就会倾向于收敛如果信号很弱或者很混乱比如在遮挡区域循环单元就会倾向于小步调整甚至保持不确定。实际操作中循环迭代步数 T 通常取3到5步。太少精度没被充分细化太多计算开销线性增长而精度不再提升。论文的消融实验一般会给出不同迭代步数下的精度曲线通常在 T4 左右就能看到明显的收益递减。训练时还有一个小技巧循环单元的隐藏状态初始化为零第一步的输入用初始深度图比如用平均深度或者上一个粗阶段的输出后面的每一步都用上一步的输出进行索引采样。3.3 和RAFT、级联方法的关系说到循环迭代优化很多人第一反应是光流估计里的RAFT。确实RAFT把迭代优化带进了光流领域让多帧光流估计的精度上了一个台阶之后又有不少工作把这个思想迁移到深度估计和MVS上。RIAV-MVS某种程度上也是这股潮流的延续但它有个很大的不同RAFT优化的是一个稠密二维光流场它的查询对象是两帧图像之间的相关体correlation volume本质上还是二维的而RIAV-MVS要索引的对象是三维代价体多了一个深度维度而且要处理多视图的一致性复杂度高了一个量级。和CasMVSNet这种级联方法相比递归索引的思路也不一样。级联方法是通过多个阶段的网络在不同分辨率和不同深度范围内逐层细化每个阶段是独立的前馈过程粗糙阶段的信息不会持续影响精细阶段而递归索引是在同一尺度、同一代价体上反复查表和更新阶段之间的信息通过循环单元的隐藏状态持续传播。换句话说级联像是做多轮考试每一轮重新审一遍题递归索引像是一轮认认真真的对话每一句都基于上一句的内容继续追问。这两种范式没有绝对的优劣级联方法的结构更简单、并行性更好但在面对深度范围很大、深度分布不均匀的场景时递归索引的查询—更新机制往往能更稳定地收敛到精细结果。这背后其实是一种哲学差异是让网络一次猜准还是让它学会自我修正。在深度估计这个任务上后者通常更符合我们人类的认知习惯——毕竟熟练的测距员也是反复瞄几次才报数。4. 完整流程和关键实现细节4.1 特征提取与深度假设生成把两个核心模块讲清楚之后我们把整条管线串一遍。RIAV-MVS的整体流程可以拆成四个阶段特征提取、代价体构建、递归索引细化、深度图输出。特征提取阶段输入是一组多视图图像通常是参考视图加 N 个源视图。网络先用一个共享权重的2D卷积网络对每张图提取多尺度特征结构上一般参考FPN或者类似的金字塔结构。为什么需要多尺度因为代价体构建需要在某个统一的分辨率下做体素级对齐但不同尺度的特征捕捉的信息层次不同浅层特征保留高频边缘细节深层特征更讲究语义。MVS里常用的做法是把不同尺度的特征做融合或者在不同尺度上分别构建代价体再做融合。RIAV-MVS在此处大体遵循了这类成熟方案用较高分辨率的特征来保住边界锐度。深度假设生成这一步决定的是要在深度维度的哪个区间、以什么采样方式去做匹配。传统方法是均匀采样也就是在整个深度范围内每隔一段取一个深度平面。对于户外大尺度场景深度范围很广均匀采样会导致远处相邻深度平面之间的间距过大从而丢失精度。因此在RIAV-MVS这类方法中一个常见的改进是使用逆深度采样在视差空间1/depth均匀采样这样近处深度更密、远处深度更疏符合透视几何的物理规律。如果你的场景深度范围大约在2到10米逆深度采样能让你在近处得到亚厘米级的深度间隔而在远处也不至于浪费太多深度层。4.2 可微分单应性变形与代价体构建有了特征和深度假设下一步是把源视图的特征投影到参考视图的每个深度平面上做多视图匹配代价计算。这一步在MVSNet里面就定下来了给定参考视图的内外参、源视图的内外参和一个深度假设 d可以先计算单应性矩阵把源视图特征变换到参考视图坐标系下。整个过程完全可微梯度可以从损失函数一路传回特征提取网络和视图参数。投影之后每个源视图在每个深度假设下都有一张对齐好的特征图接下来要做的事情是聚合。最简单的聚合方式是方差Variance即在所有视图间计算逐特征通道的方差把 N 个视图的信息压成一个代价体。后来大家发现均值、最大值、最小值、以及可学习的注意力加权都有各自的适应场景。RIAV-MVS采用的聚合方式按题目里Asymmetric Volume的表述来理解应该是在聚合后对代价体的深度维度做了一个刻意压缩而没有用全分辨率的稠密立方体。这里我要补充一句代价体构建里有个容易被忽视的工程细节那就是源视图的选择。常用的做法是按基线距离和视角重叠度为参考视图挑选与它重叠程度最高的 N 个源视图比如 N3 或5。基线太近深度分辨率不够基线太远遮挡和光照差异变大。实际复现的时候建议在训练和推理阶段保持 N 一致不要训练用3个、推理用5个输入分布变了聚合的统计特性就不对了。4.3 递归索引细化、损失函数与训练策略代价体建好之后进入RIAV-MVS最有辨识度的部分——递归索引细化。这里我按通用的实现思路给你描述一遍方便你脑补出整张计算图初始化深度图。可以直接把参考视图的坐标映射到深度区间中点也可以先对代价体做一个粗糙的softmax得到初始深度。进入循环设当前是第 t 步深度图为 D_t。用 D_t 在代价体深度维度上做双线性采样取出每个像素的特征向量。把采样得到的特征向量和当前深度图拼接也可能拼接一些上下文特征比如参考图像特征一起输入ConvGRU。ConvGRU 输出深度残差 R_t更新 D_{t1} D_t R_t。重复 T 次输出最后的深度图。损失函数方面这类方法的标配是多步深度监督。也就是不光监督最后一步的输出中间每一步的深度图都要和真值做损失通常用L1损失或者Smooth L1并且给每个时间步乘一个衰减权重比如 γ^{T-t}γ 取0.8左右。这么做的道理很直观如果只监督最终输出网络在早期步骤没有明确的优化信号循环单元的隐藏状态学不到有意义的中间推理过程。多步监督相当于给每步都打了分循环单元才能真正学会逐步逼近。训练策略上还有几个值得注意的地方。一是训练数据通常使用DTU数据集分辨率不高大约是1600×1200采集后裁剪需要做随机裁剪和数据增强比如随机颜色扰动、随机翻转但在裁剪时要注意保持视图间的一致性。二是输入视图数量有限时可以在训练阶段随机从全部可用视图中选出一部分子集参与代价体构建这能够提升模型对不同视图数量的鲁棒性。三是梯度裁剪因为循环结构跨 T 步反向传播梯度容易爆炸推荐对所有循环参数做梯度范数裁剪裁剪阈值取1.0是个比较安全的起点。5. 实验表现与复现要点5.1 在DTU和Tanks and Temples上能排到什么位置评价一个MVS方法绕不开两个基准DTU数据集和Tanks and Temples数据集。DTU是室内小物体场景有准确的激光扫描真值适合做定量比较Tanks and Temples则是室外大场景没有真值主要看重建点云的完整度和准确度更考验泛化能力。按论文公开的实验结果RIAV-MVS在DTU的准确度Accuracy和完整度Completeness指标上相较MVSNet、CasMVSNet、TransMVSNet这些基线都有明显提升。特别值得一说的还是完整度指标因为之前不少方法为了提升准确度会把深度估计做得非常保守宁可少重建也不肯错建结果完整度掉得很厉害。RIAV-MVS因为有了递归索引的细化机制在低纹理区域和遮挡区域能够保持更高的重建覆盖率完整度做得比较均衡。泛化性能方面在Tanks and Temples上学术社区通常关注的是中间级别Intermediate和大场景级别Advanced两个档位。RIAV-MVS在不用任何Tanks数据微调的情况下能够保持和DTU上相近的精度水平说明它的核心设计对域差异没有过拟合。相比之下有些堆叠了大规模3D卷积的模型在DTU上刷得很高换到Tanks上就掉点严重这就是典型的过拟合到训练集分布。5.2 消融实验在验证什么消融实验是最能说明论文设计逻辑的部分。我虽然没有拿到论文的全部实验表格但根据这类方法的标准消融套路以及RIAV-MVS的题目结构可以反推出作者大概率做了这几组对照第一组是验证非对称代价体的有效性。对照实验通常是换成对称的稠密代价体其他模块不变。如果对称版本在精度上只能带来微弱提升却消耗了数倍显存那就证明非对称设计在性价比上完胜。这类结果也是论文最有说服力的部分——它告诉你少即是多在这里不是空话。第二组是验证递归索引的迭代步数。把 T 从1逐步增加观察精度变化。正常情况下 T 从1到4的增益最明显超过4以后进入平台期。这组实验一方面证明了迭代细化的必要性另一方面也为实际使用提供了参数选择的依据——不是越多的迭代越好得在效果和效率之间找平衡。第三组是验证索引采样方式。是把索引阶段换成直接对代价体做3D卷积正则化还是保留循环索引是只索引最后一次深度还是每一步都重新索引这组实验能区分出循环索引这个设计的贡献到底有多大。按论文标题把Recurrent-Indexing作为并列卖点来看它贡献的精度提升大概率是显著的。5.3 显存、速度到底什么水平我在前面说过非对称代价体最大的优势之一是显存友好这里给个量化感。以常见的输入尺寸比如宽高各大约800到1000像素左右、3个源视图、192个深度假设为例MVSNet原始版构建的稠密代价体动辄占用十几GB显存很多消费级显卡根本跑不动CasMVSNet通过级联压缩到几十GB以内就能跑但训练时要保存多阶段的中间变量RIAV-MVS靠着非对称压缩加循环索引在同样的设置下通常能让显存落到6到8GB区间这意味着一张单卡就能完成训练和推理对很多没有大集群的实验室来说这是个实实在在的入场券。速度上因为3D CNN正则化的体积变小了前向推理的时间也会随之下降。当然循环索引不是白给的T步迭代需要多次采样和GRU前向这部分时间会补回去一些。整体来看在同等精度水平下RIAV-MVS的推理速度处在MVS方法中的第一梯队比那些用大号3D UNet做正则化的方法要明显快出不少。这里也要提醒一句论文报告的速度和显存数字通常是在特定GPU、特定框架、特定输入配置下测出来的参考价值在于相对差距而不是绝对数值。你在自己的代码和硬件上复现时完全可以因为输入分辨率、视图数、特征通道数的不同而得到不一样的结果这都很正常。6. 常见问题与避坑记录6.1 非对称体设计不当反而掉点非对称立方体这个概念听起来很美但具体落实的时候参数选择非常考验功力。我自己在类似结构上的经验是深度维度的压缩比例不能拍脑袋定得结合场景深度范围和真实分布的统计来定。如果你把深度维度压得太狠比如从128压到8代价体提供的信息量可能就不足以支撑后面的迭代索引了。这时候你可能会看到两种情况一种是迭代步数非常多但精度始终不收敛另一种是模型的鲁棒性变差换个场景深度分布就崩。所以实践上最好先做一个小的统计实验把训练数据的真值深度分布画出来看看大部分像素集中在哪些深度区间再决定采样密度。另外代价体的空间分辨率也不能为了省显存而牺牲太多。有人可能会想反正后面有迭代索引那空间下采样到四分之一也没关系。这个想法很危险空间分辨率一旦下来边界信息和薄结构基本就没了递归索引再怎么细化也不可能无中生有。我建议空间分辨率至少保持在输入图像的八分之一以上有条件的用四分之一。6.2 递归索引收敛不稳怎么办递归索引训练的时候最典型的症状是训练集loss掉到一定程度后开始震荡或者深度图在迭代过程中抖动不往一个方向收敛。排查思路很有套路先看三点。第一梯度是否爆炸。循环结构跨步反向传播梯度增长是指数级的不裁梯度基本必炸。检查一下训练日志里的梯度范数如果经常超过5就把clip值调小一点比如0.5。第二损失权重是否失衡。多步监督中每步损失的权重默认按指数衰减安排但如果你发现最后一步的权重占比过低模型可能只优化中间步骤而最终深度图没有获得足够的优化信号。建议把 γ 调大一些让最后几步的监督信号占比更高。第三循环单元输入特征的scale是否一致。深度残差网络有个通病采样的特征向量来自代价体代价体的值域在不同迭代步之间可能差异很大如果不做归一化GRU很容易饱和导致输出残差一直很小、深度停滞不前。解决办法是对采样特征做一层LayerNorm或者把深度值也归一化到-1到1的区间再喂进去。6.3 复现与调参的几点经验最后分享几条实际复现这类方法时很实用的经验。一个是多步监督和推理时的迭代步数可以不一样。训练时用5步推理时用3步往往精度损失很小但速度能提升不少。这给实际部署留了很大的调优空间你可以先训一个T5的模型然后在验证集上试T3和T7挑一个性价比最高的。另一个是从预训练权重开始训比从零开始训省事得多。虽然MVS任务的预训练权重不如图像分类那么好找但你可以先用其他MVS模型的骨干权重来初始化特征提取网络其他部分从头学。这样能明显加速收敛减少很多碎屏式的调试时间。再一个是数据增强不要做得太过分。MVS和单目深度估计不一样它需要多个视图之间的几何一致性如果你对每个视图做独立的随机旋转或者大幅度的色彩扰动代价体里的匹配信号会被严重破坏。正确的做法是保证所有视图使用同样的几何变换只做共享的色彩扰动和翻转这样既增加了数据多样性又不破坏多视图几何约束。还有个不常被提到的坑是深度范围的真值滤波。DTU数据里有些像素点是没有深度真值的比如背景或者反光区域。很多复现者直接把这些像素的损失置零但这样会导致模型在无真值区域完全不受约束推理时在这些地方胡乱输出。建议做法是对无真值区域的预测深度加一个冻结项——不让它贡献优化梯度但同时也不让它偏离初始值太远相当于给模型一个平滑约束防止在无监督区域失控。6.4 和主流开源代码库的集成方式如果你只想在自己的项目里快速用上RIAV-MVS的思路不太想从零复现也比较推荐从成熟的三维重建代码库比如基于MVSNet系的开源实现上面做修改。主要改动集中在两块一是把3D CNN的正则化模块换成一个包含深度索引采样和ConvGRU的循环细化模块二是把原本的稠密代价体在深度维度做一个压缩。具体来说你可以先把原工程从加载数据到生成代价体的流程完整跑通保证输入输出尺寸正确然后单独写一个RecurrentRefine模块替换掉正则化部分。模块的接口建议设计成输入代价体、初始深度图、上下文特征输出细化后的深度图。这样既不破坏原有的训练和评估流程也能方便地做消融对比。我第一次改造的时候花了大约两天时间就把显存从14GB降到了8GB左右精度在Tanks和Temples上还比原模型高了一截虽然不是严格复现论文的完整系统但足以说明这套设计思路是立得住的。按照我实际踩坑的经验递归索引这类模块写起来并不复杂真正复杂的是如何把它和现有的MVS流程耦合得足够顺滑。建议在第一次实验时先用很小的输入分辨率比如宽高各256和很少的源视图数比如2个把整个训练循环跑通确认每个张量的shape和时间步之间的数据流都正确再去放大到正式配置。这一步能帮你省下大量的Debug时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价