微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 武汉大学科研团队突破卫星图像三维重建难题:一张卫星照片如何变成可以"走进去"的立体城市?

武汉大学科研团队突破卫星图像三维重建难题:一张卫星照片如何变成可以"走进去"的立体城市?

2026-05-22 10:05
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-22 10:05 科技行者

这项由武汉大学遥感信息工程学院与人工智能学院联合主导,并有瑞士洛桑联邦理工学院、香港科技大学、东北大学、浙江大学、蚂蚁集团及阿里巴巴高德地图等机构共同参与的研究,发表于2026年国际学习表征大会(ICLR 2026)。论文预印本编号为arXiv:2605.14984,有兴趣深入了解的读者可通过该编号查询完整论文。

平时刷地图软件的时候,你有没有想过这样一个问题:我们从卫星上拍下来的鸟瞰图,能不能直接变成一段可以在街道上"走动"的三维视频?这不只是一个有趣的脑洞,它背后藏着一个巨大的实际价值——自动驾驶、城市规划、应急救援、地图更新,都需要高质量的街道级三维场景数据。而派人开着车到处跑、到处拍,成本高、覆盖不均匀,而且数据更新极慢。

卫星则完全不同。它每天绕地球飞几十圈,拍下来的图像覆盖全球、成本极低、更新频繁。但问题在于,卫星是从几百公里高空俯拍的,看到的是屋顶、马路和树冠;而我们想要的三维街景,是站在地面上往四周看的视角——这两者之间的"视角鸿沟",就像用一张从飞机上拍的城市照片,去还原一个在街头行走的人眼前的画面,难度可想而知。

这篇论文提出了一个叫做"Sat3DGen"的算法系统,专门用来解决这个问题。它的核心雄心是:只给一张卫星图,就能生成一个可以从任意街道视角进行渲染的完整三维城市场景,而且这个三维场景不仅在外观上忠实于卫星图里的语义信息(比如斑马线、树木、建筑物),在几何结构上也要足够准确,不会出现楼房飘在空中、屋顶像气球一样鼓起来这类奇怪的错误。

研究团队的结果相当引人注目。在几何精度上,他们将误差从此前最好方法的6.76米压缩到了5.20米;在生成图像的真实感指标(FID,一种衡量生成图像与真实照片有多像的评分,分数越低越好)上,从约40分大幅降至19分。这一切还是在没有专门针对图像质量额外"加料"的情况下做到的,纯粹靠几何结构改善带来的连锁效应。

一、现有方法为何总是"两手都抓,两手都不硬"

要理解这项研究的价值,先得明白之前的方法为什么不够好。

在Sat3DGen之前,这个领域的方法大体分成两条路线。第一条路线可以称之为"建筑师流派",代表方法包括Sat2Scene和Sat2City。这类方法的思路很直白:先用算法识别出卫星图里的建筑物轮廓,然后根据已知的建筑高度数据把它们"拉起来"变成三维盒子,再在表面贴上纹理。这条路线的好处是建筑物的几何形状比较整洁,但弱点同样致命——它只能处理建筑物,对于斑马线、行道树、路边的护栏、停车场的标线这些非建筑元素,完全无能为力。生成的场景就像一个只有建筑骨架的空城,缺乏真实街道应有的丰富细节。

第二条路线可以称之为"画家流派",代表方法是Sat2Density和它的改进版Sat2Density++。这类方法不依赖预先知道建筑高度,而是直接让神经网络从卫星图和少量街景图中"学"出一个三维场景来,同时学几何又学外观颜色。好处是语义丰富,道路、树木、行人都能出现;坏处是学出来的几何结构一团糟——建筑边界像被撕碎了一样不整齐,屋顶形状各种奇怪,空中还经常悬浮着莫名其妙的残影,就像照片底片曝光不足时留下的鬼影。

研究团队分析了为什么"画家流派"的几何总是这么乱。根源在于两个互相叠加的难题。第一个难题是监督信号极度稀疏:对于每一块卫星图对应的场景,模型能用来学习的街景图片数量非常有限,而且这些图片拍摄的视角零零散散,场景中有大量区域从来没有被任何街景图片"看到过",自然学不好。第二个难题是视角鸿沟极其巨大:卫星从正上方俯视,街景从地面平视,这是两种在几何上差异极大的观察方式,让神经网络在如此稀疏的线索下去"猜"出两者之间的三维结构,难度极高。

Sat3DGen选择的策略是"以几何为先"——不是去发明一个全新的网络架构,而是在"画家流派"的框架上,针对上述几何问题一个个地打"补丁"。这个思路类似于一个厨师知道自己的厨艺还不错,但发现菜品总有几个固定的缺陷:炒菜总爱糊底、汤总是太淡、摆盘总是歪。与其换一套全新的厨具,不如针对这三个问题各研究一个专门的解法:换个受热更均匀的锅、加盐的时机稍微调整一下、摆盘时多用一把尺。

二、系统的整体构造:从一张图到一个三维世界

在深入讲具体的改进点之前,先说说Sat3DGen整个系统是怎么运转的。

当一张卫星图片进入系统,第一步是用一个叫做"DINO-v3"的视觉模型(可以理解为一个强大的图像理解引擎)把这张图"读懂",提炼成一个紧凑的特征网格——就像把一张充满细节的地图压缩成一个16×16格子的概要,每个格子里都存着对应区域的特征信息。

接下来,这些特征被"解码"成一种叫做"三平面特征场"的三维数据结构。可以把这个结构想象成三块互相垂直的透明玻璃板,分别代表俯视面、正视面和侧视面,每块玻璃上都画满了密密麻麻的特征信息。空间中任意一个三维点,都可以通过投影到这三块玻璃上来查询它的特征。然后,一个小型神经网络根据这些特征来预测这个点的"密度"(简单理解为这里有没有实体物质)和颜色。整个三维场景就这样被表示成了一个"密度+颜色"的空间分布函数,也就是所谓的"神经辐射场"(NeRF)。

有了这个三维表示,想从哪个角度渲染画面就从哪个角度发出"光线"去采样,每条光线在穿透三维空间时,会根据沿途遇到的密度和颜色进行积分合成,最终在画面上得到一个像素的颜色值。这就是所谓的体积渲染——就像用一把手电筒照进一团有颜色的烟雾,看手电筒光穿过烟雾后在远处墙壁上形成的颜色一样。天空部分则被单独处理:用一个球形特征图来表示不同方向的天空外观,使得无论从哪个角度看,天空都保持合理的连贯性。

整个模型还支持把三维场景导出为真实的网格模型(Mesh),就像那些3D打印文件一样,可以拿去做城市可视化或者进一步处理。

三、四个关键改进:针对几何问题的精准"手术"

Sat3DGen与前辈方法最重要的区别,在于四个针对几何问题精心设计的改进机制。

第一个改进叫做"空间令牌"。问题的起源是这样的:一辆在街道上行驶的汽车拍到的街景,往往会看到超出那块卫星图范围的建筑和道路。当三维场景被强制限定在卫星图的地理范围之内时,场景边缘的几何结构就会出现各种扭曲和破损,因为模型要用有限的空间去"塞进"那些本来延伸到边界之外的内容。解决办法是在卫星图的特征网格四周,额外加上一圈空白的"空间令牌"——就像把一张16×16的地图扩展成20×20,多出来的那一圈格子虽然没有实际的卫星图信息,但给了模型一些"喘息的空间"去安置边界处的内容。对应地,三维场景的覆盖范围也自动扩大了12.5%,边界处的几何问题得到了明显缓解。

第二个改进叫做"重力密度变化损失"。在真实世界里,物质受重力影响总是倾向于积累在低处——地面是实心的,墙体是连续的,只有树冠这类特殊情况才会在低处有空洞(树干下面是空的)。但神经网络如果没有这个约束,它很可能学出"半空中飘着一团莫名其妙的东西"这样的结果,因为这样也能在某些视角下骗过用来判断好坏的图像质量指标。

为了让网络学会"尊重重力",研究团队设计了一个惩罚机制:随机采样一个三维点,然后在它正上方稍高一点的位置再取一个点,如果高处的密度比低处还大,就施加一个惩罚。这个惩罚有一个小小的"宽容区间"——如果高处比低处高出的密度不超过一个阈值(设为1),就不惩罚,允许这种情况存在。这个宽容区间的设计是有道理的:树冠在树干上方,树冠下方的空间密度确实会比树冠本身低,如果完全不允许高处比低处密,树就没法正常生成了。这个损失函数有效压制了空中飘浮的残影,同时保留了真实场景中合理的悬空结构。

第三个改进叫做"卫星视角深度约束"。每个场景只有一张卫星鸟瞰图,而且鸟瞰图里最缺乏信息的地方恰恰是屋顶——因为街景图片很少能直接看到屋顶,导致屋顶的几何形状完全由模型"自由发挥",结果就是各种奇形怪状的膨胀或凹陷。

解决思路是借助一个叫"Depth Anything v2"的预训练深度估计模型,让它对卫星图里的每个像素估算一个相对深度值(不是真实的物理距离,而是"哪里高哪里低"的相对关系)。然后让Sat3DGen生成的深度图去匹配这些伪标签。因为伪标签本身不是完美准确的,所以采用了一种允许整体缩放和平移的比较方式——只要深度图的相对顺序和变化趋势大体吻合就行,不要求精确的米级数值。这个约束有效地让屋顶形状变得合理,平顶建筑保持平整,坡屋顶保持合理的坡度。

第四个改进叫做"透视视角训练"。前面提到监督信号极度稀疏是一个根本性问题。解决思路是充分利用已有的全景街景图片:既然有一张360度的全景图,就可以从中裁出各种角度的"透视视图",就像在同一个观察点上把脑袋朝不同方向转——向左看、向右看、向上看、向前看,每个方向都可以得到一张独立的透视图片。这样,原本一张全景图只能提供一个"观察位置"的监督,现在可以变成来自同一位置、多个方向的多张图片的监督,有效增加了有效视角的数量和多样性,让模型的训练更加均匀充分。

四、训练的食材和菜谱:数据集与训练细节

模型的训练使用了VIGOR数据集,这是一个将卫星图与地面全景街景图进行GPS匹配配对的数据集。训练阶段用了芝加哥、纽约、旧金山三座城市的78,188对卫星-全景图配对数据;测试阶段则完全换成了模型从未见过的西雅图市的11,875对数据。这种"在三座城市学、去另一座城市考试"的设置,是对模型泛化能力相当严苛的考验,因为不同城市的建筑风格、街道布局和植被特点差异很大。

卫星图输入尺寸为256×256像素,卫星图的拍摄缩放级别固定在20级,这使得每个像素对应的实际地面距离基本一致。生成的全景街景图尺寸为512×128像素,透视图为256×256像素。整个训练过程在8块NVIDIA H20 GPU上运行,批大小为32,共训练了60万次迭代。

训练过程中同时优化多个损失函数。重建损失确保生成的卫星图、全景街景图和透视图在像素颜色上尽可能接近真实图片;感知损失(LPIPS)确保生成图在特征层面上也与真实图相似,而不只是像素级别的吻合;对抗损失(GAN损失,采用StyleGAN2的设计)通过一个额外的"判别器"来辨别生成图是否足够真实,迫使模型生成更细腻的纹理;天空区域的两个专门损失则保证天空与场景的分离干净,且天空颜色与地面参考图匹配。

五、评测的成绩单:数字说明了什么

研究团队专门为本工作构建了一个新的几何评测基准,方法是把VIGOR西雅图测试集的卫星图,与来自华盛顿州自然资源部激光雷达门户网站的"金县西部2021"高精度激光雷达点云数据进行对齐配对。这份激光雷达数据是在2021年春夏季采集的,在时间上与VIGOR数据集的创建时间高度吻合,数据标称精度达到厘米级别,是目前公开可用的最高质量城市三维真值数据之一。将原始激光雷达GeoTIFF文件与每张卫星图进行坐标系转换和像素级对齐是一项颇具挑战的工程工作,团队为此开发了一套完整的自动化处理流程。

在几何精度的评测上,采用了平均绝对误差(MAE)、均方根误差(RMSE)以及误差小于2.5米和7.5米的像素比例这四个指标。结果显示:此前最好的方法Sat2Density++的RMSE为6.76米,"典型图像转三维"基线(即只使用DINO-v3编码器但不加任何几何改进的版本)已经凭借更强的特征提取能力将RMSE降至6.21米,而Sat3DGen完整模型则进一步将RMSE压到了5.20米,MAE降至3.47米,误差小于2.5米的像素比例从49.69%大幅提升到了62.69%。

在生成图像质量的评测上,Sat3DGen在FID(越低越好,衡量生成图与真实图的分布距离)上从Sat2Density++的约40分降至19.2分,KID(另一个类似但更稳健的分布距离指标)从0.035降至0.014,DINO特征相似度(衡量语义一致性,越高越好)从0.465提升至0.525。这些改进还超过了ControlNet和ControlS2S等专门针对图像生成质量优化的方法,尽管后者是在更"容易"的测试条件下(同城训练测试而非跨城市)得到的结果。

消融实验(即逐个关闭某个改进模块来看它单独的贡献)揭示了各个模块的作用分工。在FID提升上,重力密度变化损失贡献最大,去掉它FID从21.6升至25.9;在几何精度提升上,卫星深度约束和空间令牌贡献更大,去掉卫星深度约束RMSE从5.20升至5.75,去掉空间令牌则升至5.64。透视视角训练则在两个方面都有显著贡献,将FID从21.6进一步降至19.2,RMSE从5.23降至5.20。

关于重力损失中的宽容区间参数ε,研究团队做了专门的敏感性实验,测试了从ε=0到ε=10的多个取值。ε=0时效果最差,因为过于严格地惩罚了所有高处比低处密的情况,连合理的树冠也被压制了;随着ε增大,性能先改善后趋于平稳;ε=1.0时取得最佳的综合表现,这成为最终选择的超参数。

六、这个系统能做什么:延伸出去的应用场景

除了核心的卫星图转三维这个任务,研究团队还展示了多个下游应用方向,这些应用共同体现了高质量三维表示的价值。

第一个应用是从单张卫星图生成"数字表面模型"(DSM)。简单说就是生成一张高度图,标注出场景中每个位置的地表高度。有趣的是,Sat3DGen在训练时完全没有用到任何真实的高度测量数据,但它从街景图片的几何约束中"自学"出了对高度的理解,生成的高度图在建筑边界处比Sat2Density++清晰得多,能够区分出不同高度的建筑物。

第二个应用是语义地图到三维场景的生成。这是一个两步流程:先用一个基于ControlNet和SDXL的扩散模型,把OpenStreetMap(开放街道地图)风格的彩色语义图(标注了哪里是道路、哪里是建筑、哪里是公园)转换为卫星外观的图片,然后再把这张"合成卫星图"输入Sat3DGen生成三维场景。这样就可以通过画一张地图来定制生成想要的城市场景,在城市规划和游戏开发中有很大的想象空间。

第三个应用是大面积三维网格生成。对于一张很大的卫星图(比如覆盖150米×150米区域的图像),系统采用滑动窗口的方式逐块处理,每块256×256像素,步长128像素,相邻块之间重叠的部分取密度的平均值来衔接。生成的大面积网格在建筑之间的过渡自然,地面平滑连续,展现出在城市数字孪生等场景中的潜力。

第四个应用是环视多相机视频生成。由于三维场景是用NeRF表示的,可以在任意位置、任意方向渲染图像,因此可以模拟一辆汽车沿着规划路径行驶时,前后左右四个方向的摄像头同时拍到的画面,生成完全同步的多视角行车视频。这对于自动驾驶系统的仿真测试有直接价值,因为它可以用来生成虚拟的驾驶数据,用于训练和测试感知算法,而完全不需要派真实车辆去实际路段采集。

七、坦诚面对局限:哪些问题还没有完全解决

研究团队在论文中坦率地指出了几个尚未解决的问题,这种坦诚值得关注。

位姿不精确是最根本的限制之一。系统对卫星图的处理假设它是完美的正射投影(即从正上方垂直俯视),但实际的卫星图往往有轻微的倾斜;全景街景图片也只知道GPS位置,没有精确的相机内外参数。更进一步,模型假设全景图的拍摄方向完全垂直于地面,忽略了地形坡度或道路倾斜带来的横滚角。这些姿态误差在平坦城区通常不显著,但在有坡度的地区可能引入明显的几何误差。

几何假设的局限性同样存在。系统假设地面是平坦的,对于有明显地形起伏的区域(比如旧金山的坡道、山城的街道)处理效果会打折扣。此外,对于训练集中极其罕见的建筑风格(比如中世纪欧式建筑、东南亚热带风格建筑),模型因为没见过足够的样本,生成质量可能下降。

评测指标的局限性也在坦率承认之列。理想的三维场景评测应该包括多视角一致性检验(即从不同角度看同一个物体时外观是否合理一致)和时序稳定性检验(即生成视频时画面是否稳定不抖动),但VIGOR数据集的结构不支持这类评测——它的图片是分散采集的,没有连续序列,无法做这类分析。

归根结底,Sat3DGen做的事情可以用一句话概括:它用一套有原则、有针对性的几何约束,显著提升了"让神经网络直接从卫星图学三维场景"这条技术路线的可靠性。它既没有抛弃这条路线,也没有堆砌大量复杂模块,而是通过重力约束、深度先验、空间扩展和视角增密这四个相互协作的机制,让生成的三维世界更像一个真实存在的地方——建筑站得稳、屋顶是平的、地面不是坑坑洼洼的、边界处不会无故断裂。

这意味着,未来地图应用或许可以在卫星图覆盖的任何地点按需生成可以"走进去"的虚拟街景,而不需要谷歌街景车事先跑一遍;自动驾驶公司可以为任何城市生成仿真驾驶场景,而不局限于已经做过高精地图的区域;应急管理部门可以在灾害发生后快速生成受灾区域的三维场景用于指挥调度,而不必等待实地三维测量。当然,要真正达到这些应用场景的要求,还需要在位姿精度、地形建模和非典型场景泛化等方面继续深耕。对这一领域感兴趣的读者,可以通过arXiv编号2605.14984或访问论文公开的代码仓库进一步探索。

---

Q&A

Q1:Sat3DGen生成的三维场景和普通卫星地图有什么区别?

A:普通卫星地图只是一张从高空拍摄的平面图片,看不到街道侧面和建筑立面。Sat3DGen生成的三维场景是一个可以从任意街道视角渲染画面的立体空间模型,可以模拟站在街道上向四周看的效果,还能导出为可用于城市可视化或自动驾驶仿真的三维网格文件。

Q2:重力密度变化损失是什么,它是怎么解决空中漂浮物的问题的?

A:重力密度变化损失是一个训练时施加给神经网络的惩罚规则,核心思想是"越高的位置应该越空旷"。具体做法是在空间中随机取一个点和它正上方稍高处的点,如果高处密度明显超过低处就惩罚网络。设置了一个小的宽容区间,允许树冠这类合理的悬空结构存在,有效减少了生成场景中莫名其妙悬在半空中的残影。

Q3:Sat3DGen的训练需要哪些数据,普通人能复现这项工作吗?

A:训练数据是GPS对齐的卫星图与地面全景街景图配对,使用的是公开的VIGOR数据集,包含四座美国城市的约9万对图像。训练在8块高端GPU上进行了60万次迭代。研究团队已将代码开源发布,有一定深度学习基础并拥有对应算力资源的研究者理论上可以复现,但对于没有相关设备的普通人来说,直接复现完整训练过程门槛较高。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-