炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!
(来源:科技行者)
2022年那会儿,如果你去问一个搞3D视觉的研究者,怎么用AI从一张照片里估算出深度信息和物体表面的朝向,他大概率会告诉你两条路。
一条是老老实实用大量标注数据训练一个专门的判别式模型,靠海量的图片深度对来死磕。另一条呢,是蹭一下当红的文生图扩散模型的东风,把深度图和法线图当成"特殊的图片"来生成。
这两条路走到今天,都撞上了各自的天花板。而这篇论文的思路挺有意思:它没有再去优化图像扩散模型,而是转身去找了视频生成模型来干这活。这个转向背后的逻辑,值得掰开揉碎讲讲。
先说说这件事到底难在哪。
**当深度估计遇到"既要又要"的两难**
单张图片估计深度和表面法线,这本身就是个不适定问题。什么意思呢?就是同一张2D照片,理论上可以对应无数种3D场景的解释,模型必须靠"先验知识"去猜哪种解释最合理。
早期的判别式方法,比如MiDaS,靠200万张图片训练,在NYUv2数据集上的AbsRel误差(越低越好)是11.1。后来Omnidata把训练数据堆到1220万张,误差降到7.4。再后来Depth Anything系列直接冲到6260万张训练图片,误差压到4.3左右。
这个趋势很清楚:数据量每往上翻一个数量级,效果才勉强挤出一点提升。这是典型的"暴力堆料"打法,代价是需要极其庞大的算力和标注成本,而且模型对伪标签噪声特别敏感,预测出来的东西经常缺失细节,看着糊糊的。
后来大家发现,与其从零训练,不如站在巨人肩膀上。Stable Diffusion这类文生图扩散模型,已经在海量图片上学到了非常丰富的视觉先验,把这些先验借过来做深度估计,用少量数据微调就能出不错的效果。
*扩散模型*:一种生成式AI技术,工作原理是先把数据一步步加噪声搞成一团随机噪音,再训练一个网络学习怎么把噪音一步步去掉、还原出真实数据,图像生成领域的Stable Diffusion就是靠这个原理工作的。
代表性的工作叫Marigold,只用7.4万张图片训练,就能在NYUv2上做到AbsRel 5.5,δ1指标96.4,效果反而超过了很多用几百万张图训练的判别式模型。这一下子把"数据效率"这件事的重要性摆到了台面上。
但Marigold这类方法有个隐藏的软肋:深度和法线是分开训练的,每个任务要养一个独立模型。这就好比你家里想同时要冰箱和洗衣机的功能,结果得买两台完全独立的机器,各自占地方、各自耗电,还没法共享任何零件。如果能有一台机器同时干两件事,多好。
于是有了第二条路:像GeoWizard和Orchid这样的工作,试图把深度和法线放到同一个模型里联合预测。做法是改造扩散模型的内部结构,比如加入交叉注意力模块或者切换器机制,让模型知道现在该输出深度还是法线。
这个思路听起来挺聪明,但代价也不小。论文里提到,GeoWizard用了20.8万张训练图片,比Marigold多了将近3倍,但在KITTI数据集上的AbsRel反而是14.4,比同等规模数据训练的其他方法差了一大截。
为什么会这样?因为改动扩散模型的架构,相当于在预训练模型和微调任务之间硬生生凿开了一道缝。模型预训练时学到的知识和微调时要用的结构对不上号,迁移效率就打了折扣,这就得靠更多数据去填这个坑。
这两条路走到头,都绕不开一个共同的盲点:它们都是把图像扩散模型硬套到几何估计任务上,却没有真正让"图像"和"几何"这两种模态之间产生显式的互动关系。论文作者觉得,这可能正是导致跨模态一致性差、细节丢失的根源。
**为什么是视频模型**
这篇论文的核心洞察是:视频生成模型天生自带一种"下一帧预测"的能力,而这恰好可以被重新解读成"从图像预测几何"的能力。
具体来说,作者们提出了三条理由。第一,视频扩散模型不仅在图片上训练过,还在海量视频数据上训练过,学到的生成先验更丰富,覆盖的领域也更广。第二,视频模型的架构里天然带有"时序注意力"机制,专门用来捕捉相邻帧之间的依赖关系,这个机制原本是为了让生成的视频画面连贯不闪烁,但拿来建模"图像到几何"的关系也说得通。第三,就算视频模型预训练时压根没见过深度图法线图这种几何标签,这种时序建模能力依然可以被迁移过去用。
*时序注意力*:视频生成模型里的一种机制,专门用来让模型理解"这一帧"和"下一帧"之间应该保持什么样的连贯关系,避免视频画面出现突兀跳变或者闪烁。
基于这个洞察,作者提出了GeoNeXt。它的核心创意是把几何估计任务重新表述成"下一帧预测":给定一张RGB图像作为第一帧,把对应的深度图和法线图当成后续帧,整个任务就变成了"这张图片之后应该跟着两张什么样的帧"。
这就好比你本来是个专门看图猜谜的人,突然有人告诉你,你其实更擅长看故事接龙,猜"接下来会发生什么"。表面上任务变了,但底层能力是相通的,甚至因为视频模型对"连贯性"和"因果关系"的理解更强,接龙猜出来的答案反而更靠谱。如果不这么转换视角,硬要图像模型去理解深度和法线之间的内在联系,模型就缺少一种天然的机制去处理这种多目标关联,只能靠额外加模块硬凑,效果自然打折扣。
**架构怎么改:从Stable Video Diffusion说起**
具体实现上,GeoNeXt基于Stable Video Diffusion这个开源的图生视频模型改造而来。
*Stable Video Diffusion(SVD)*:Stability AI发布的一个开源视频生成模型,输入一张静态图片,它能生成后续连贯的视频帧,本身具备很强的时序建模能力。
原始的SVD是靠两种方式把输入图片的信息传给去噪网络:一是把图片的隐空间特征和噪声拼接在一起,二是用CLIP提取图片的语义嵌入,通过交叉注意力传给网络的中间层。
*隐空间*:为了降低计算量,扩散模型通常不直接在像素级别操作,而是先用一个编码器把图片压缩成一个维度更小但保留关键信息的"隐藏表示",所有的加噪去噪操作都在这个压缩空间里完成,最后再用解码器还原回图片。
*CLIP*:一种能把图片和文字映射到同一个语义空间的模型,常被用来提取图片的"语义摘要"作为条件信号喂给生成模型。
GeoNeXt把这套机制做了改造。深度图和法线图现在被安排成"接在RGB图像后面的两帧",输入图片的隐空间特征被复制到深度和法线的槽位里,作为强力的条件信号,通过拼接的方式喂给去噪网络。而CLIP这条支路,作者直接砍掉了。原因是CLIP要求把图片缩放到固定尺寸,这个缩放操作会让深度图和法线图产生几何畸变,反而帮倒忙。消融实验证实了这个判断:去掉CLIP嵌入后,模型在NYUv2上的AbsRel从5.6降到5.3,δ1从96.5提升到96.8,是真的变好了,不是噱头。
更关键的一步是,GeoNeXt没有采用"只生成几何、不管图像"的策略,而是让图像和几何在同一条去噪轨迹上一起被重建。也就是说,模型在预测深度和法线的同时,也在同步重建输入的RGB图像本身。
这个设计初听有点反直觉:都已经有输入图像了,为什么还要模型重新生成一遍?
论文里的消融实验给出了答案。去掉图像重建这一支路后,在NYUv2上AbsRel从5.3恶化到6.5,在NYU法线估计上平均角度误差从16.7涨到17.9。这说明同步重建图像这件事,不是多此一举,而是在强迫模型把图像和几何这两种模态的表示对齐到同一个语义空间里,让两者之间产生真实的相互校验。
这就像你请两个证人分别描述同一个案发现场,如果只让证人A单独说,你没法判断他说的靠不靠谱;但如果同时让证人A和证人B描述,还要求两人的描述必须能互相印证细节,那这份证词的可信度就高多了。如果不要求图像和几何同步重建,深度和法线的预测就成了没有锚点的自说自话,容易在细节上跑偏。
**训练数据:少而精的搭配**
GeoNeXt的训练数据用得非常克制。只用了两个合成数据集:Hypersim和Virtual KITTI 2。
Hypersim提供461个室内场景,清洗之后大约3.9万个有效样本,图像分辨率576×768。Virtual KITTI 2是一个合成驾驶场景数据集,用了其中4个城市场景,大约2万个样本,裁剪到352×1216,深度上限设在80米。训练时按9:1的比例混合采样,90%概率取自Hypersim,10%取自Virtual KITTI,跟随了Marigold的采样策略。
总训练量加起来才5.9万张图片。对比一下前面提到的Depth Anything系列用了6260万张图片,这个差距是1000倍级别的。GeoNeXt却能在多个数据集上打平甚至超过这些大数据模型,比如在ETH3D上AbsRel只有5.6,比Depth Anything V2的13.1还要低不少。
这背后的逻辑也不难理解:GeoNeXt并不是从零学习几何知识,而是在借用视频模型已经学到的关于世界结构、光影关系、物体轮廓的丰富先验,只需要用少量数据去"教会"它把这些先验用在几何预测这个新任务上就够了。这就好比一个已经精通素描的画家,你不需要从头教他怎么画线条和阴影,只需要给他看几十张范例,告诉他这次要画的是深度图不是普通画像,他就能很快上手,而一个完全没有绘画基础的人,你得从最基本的握笔姿势教起,耗时耗力还未必学得好。
**推理阶段:噪声一路降到几何图**
推理的时候,GeoNeXt先把图像、深度、法线三个对应的隐变量都初始化成标准高斯噪声,同时把输入图像编码成对应的干净隐空间表示。噪声和图像隐空间拼接后送进去噪网络,网络会在多个扩散步骤里逐步预测出图像、深度、法线三者的隐空间表示。去噪完成后,图像那部分的结果被丢弃不用,只保留深度和法线,再用VAE解码器还原成最终的深度图和法线图。
*VAE(变分自编码器)*:一种神经网络结构,包含编码器和解码器两部分,编码器负责把图片压缩成隐空间表示,解码器负责把隐空间表示还原回图片,扩散模型通常借用现成的VAE来完成这个压缩和还原的工作。
推理速度上,作者用了EDM采样器,只需要5步去噪,并且用5个不同噪声种子跑5次做集成,兼顾了速度和精度。相比之下,GeoWizard要跑50步去噪配合10次集成才能达到较好效果,推理时间从GeoNeXt的10秒暴涨到272秒,差了27倍。
**结果说话:五个数据集的较量**
深度估计方面,论文在NYUv2、KITTI、ETH3D、ScanNet、DIODE五个数据集上做了零样本测试,也就是训练时完全没见过这些数据集,直接拿来验证泛化能力。
| 方法 | 训练数据量 | NYUv2 AbsRel | KITTI AbsRel | ETH3D AbsRel | ScanNet AbsRel | DIODE AbsRel |
| Depth Anything V2 | 6260万 | 4.5 | 7.4 | 13.1 | 4.2 | 26.5 |
| Marigold | 7.4万 | 5.5 | 9.9 | 6.5 | 6.4 | 30.8 |
| Lotus-G | 5.9万 | 5.4 | 8.5 | 5.9 | 5.9 | 23.0 |
| GeoWizard | 20.8万 | 5.6 | 14.4 | 6.8 | 6.4 | 33.0 |
| **GeoNeXt** | **5.9万** | **5.3** | **8.2** | **5.6** | 5.9 | **22.6** |
法线估计方面,同样在NYUv2、ScanNet、iBims-1、Sintel、OASIS五个数据集上测试,衡量指标是预测法线和真实法线之间的平均角度误差,越小越好。
| 方法 | 训练数据量 | NYUv2 角度误差 | iBims-1 角度误差 | Sintel 角度误差 | OASIS 角度误差 |
| DSINE | 16万 | 16.4 | 17.1 | 34.9 | 24.4 |
| E2E-FT | 7.4万 | 16.5 | 16.1 | 33.5 | 23.2 |
| GeoWizard | 20.8万 | 18.9 | 19.4 | 40.3 | 25.0 |
| **GeoNeXt** | **5.9万** | 16.7 | **16.4** | **33.0** | 22.8 |
从这两张表能看出一个很清晰的规律:GeoNeXt几乎在所有数据集上都排在前列,用的训练数据却是同类方法里最少的之一。跟GeoWizard这个同样做联合几何估计的对手比,GeoNeXt在KITTI上AbsRel低了6.2,在DIODE上低了10.4,训练数据却只有对方的四分之一左右。
论文还专门做了消融实验,验证联合训练是不是真的比分开训练更好。结果是:单独训练一个深度模型,在ETH3D上AbsRel是6.4;单独训练一个法线模型,在iBims-N上角度误差是17.3。而联合训练的完整模型,这两个数字分别降到5.6和16.4。这说明深度和法线这两种几何信息之间确实存在某种内在关联,联合建模能让模型互相借力,不是简单地把两个任务拼在一起就完事。
作者还测试了一个有意思的细节:深度和法线在"帧序列"里的先后顺序会不会影响效果?结果显示几乎没有差别,无论是"深度在前法线在后"还是反过来,各项指标的波动都在误差范围之内。这说明模型真正学到的是图像、深度、法线三者之间的内在关系,而不是死记硬背了某种固定的生成顺序。这个鲁棒性挺重要,意味着这套方法的泛化能力不是靠某个偶然的训练技巧堆出来的。
**应用场景:几何信息之外的想象空间**
论文开头的图里展示了几个应用方向:可控图像生成、图像重打光、网格重建。这些应用的共同点是,都需要一个准确、干净的几何结构作为基础。
比如图像重打光,你想让一张照片里的场景换一种光照效果,前提是你得先知道场景里每个表面朝向哪里,这样才能正确计算新光源打上去会产生什么样的明暗变化。这就像你想给一个雕塑换个打光角度,前提是你得先摸清楚这个雕塑每个凸起和凹陷的具体形状,否则光打上去的阴影效果全是乱的。GeoNeXt预测出来的高质量法线图,正好能给这类应用提供靠谱的结构基础。
写在后面
读完这篇论文,最让我意外的一点是,数据效率的提升居然不是来自更聪明的算法技巧,而是来自"换一个模型家族"这么朴素的思路转变。这提醒我一件事:有时候突破瓶颈的方式不是在原有框架里死磕优化,而是换个完全不同角度看问题本身是不是被框错了。
论文里提到GeoWizard需要20多万训练数据才能勉强追上用几万数据训练的GeoNeXt,这个对比其实挺扎心的。它说明"改造模型架构"这条路看似灵活,实际上是在用更高的数据成本去弥补预训练和微调之间被人为拉大的鸿沟。反倒是"换个预训练模型、但尽量少改动它原本的结构"这条路,走得更顺。这跟我们平时做技术选型时的直觉可能是相反的:大家总觉得改动越多、定制化程度越高,效果应该越好,但这篇论文提醒你,有时候尊重一个预训练模型原本的运作逻辑,比魔改它更划算。
还有一点值得琢磨:视频模型的时序注意力机制原本是为了解决"视频画面不能突兀跳变"这个问题而设计的,结果被这篇论文拿来处理"图像和几何之间要保持一致"这个完全不同领域的问题。这种跨领域的能力迁移,某种程度上说明深度学习模型学到的很多"能力"其实比我们命名它们时想象的更通用,只是我们习惯了把一个模型和它诞生时的具体任务牢牢绑定在一起。
如果视频模型的时序理解能力可以被借用来做几何估计,那还有哪些原本"专属于某个任务"的模型能力,其实也可以被重新解读、迁移到完全不相关的领域?这大概是这篇论文留给我最大的疑问。
Q&A
Q1:GeoNeXt是什么?
A:GeoNeXt是一种把视频生成模型改造成几何估计工具的新方法,它把深度图和法线图预测重新表述成"下一帧预测"任务,用视频模型的时序理解能力来联合估计图像的深度和表面法线信息。
Q2:GeoNeXt相比之前的方法有什么优势?
A:GeoNeXt只用5.9万张训练图片,就在多个数据集上超过了用几十万甚至上千万数据训练的模型,比如在ETH3D上AbsRel误差只有5.6,比训练数据多35倍的GeoWizard的6.8还要低。
Q3:为什么GeoNeXt要用视频生成模型而不是图像生成模型?
A:视频生成模型自带时序注意力机制,天然擅长处理"前后帧关联"这种任务,把深度图法线图当成后续帧生成,能更自然地建立图像和几何之间的一致性,而且不需要改动模型架构,数据利用效率更高。