2张图2秒钟3D重建!这款AI工具火爆GitHub,网友:忘掉Sora

关注公众号,发现CV技术之美

丰色 发自 凹非寺
量子位 | 公众号 QbitAI

只需2张图片,无需测量任何额外数据——

当当,一个完整的3D小熊就有了:


fb8484979d944eecc572763ab468fd98.gif

这个名为DUSt3R的新工具,火得一塌糊涂,才上线没多久就登上GitHub热榜第二

666be4246b154e562cf82b37495e06a7.png

网友实测,拍两张照片,真的就重建出了他家的厨房,整个过程耗时不到2秒钟

(除了3D图,深度图、置信度图和点云图它都能一并给出)

639c353e1285c5b41d83b52c97fa2efb.gif

惊得这位朋友直呼:

大伙先忘掉sora吧,这才是我们真正看得见摸得着的东西。

0bae6a6d7654e64281ecd2c33954b4c7.png

实验显示,DUSt3R在单目/多视图深度估计以及相对位姿估计三个任务上,均取得SOTA。

作者团队(来自芬兰阿尔托大学+NAVER LABS人工智能研究所欧洲分所)的“宣语”也是气势满满:

我们就是要让天下没有难搞的3D视觉任务。

所以,它是如何做到?

“all-in-one”

对于多视图立体重建(MVS)任务来说,第一步就是估计相机参数,包括内外参。

这个操作很枯燥也很麻烦,但对于后续在三维空间中进行三角测量的像素不可或缺,而这又是几乎所有性能比较好的MVS算法都离不开的一环。

在本文研究中,作者团队引入的DUSt3R则完全采用了截然不同的方法。

不需要任何相机校准或视点姿势的先验信息,就可完成任意图像的密集或无约束3D重建。

在此,团队将成对重建问题表述为点图回归,统一单目和双目重建情况。

在提供超过两张输入图像的情况下,通过一种简单而有效的全局对准策略,将所有成对的点图表示为一个共同的参考框架。

如下图所示,给定一组具有未知相机姿态和内在特征的照片,DUSt3R输出对应的一组点图,从中我们就可以直接恢复各种通常难以同时估计的几何量,如相机参数、像素对应关系、深度图,以及完全一致的3D重建效果。

3c8e816caf838324e7bfd6243b215df3.png

(作者提示,DUSt3R也适用于单张输入图像)

具体网络架构方面,DUSt3R基于的是标准Transformer编码器和解码器,受到了CroCo(通过跨视图完成3D视觉任务的自我监督预训练的一个研究)的启发,并采用简单的回归损失训练完成。

如下图所示,场景的两个视图(I1,I2)首先用共享的ViT编码器以连体(Siamese)方式进行编码。

所得到的token表示(F1和F2)随后被传递到两个Transformer解码器,后者通过交叉注意力不断地交换信息。

bce6891db75adc4b78d3b7d2dfccd25c.png

最后,两个回归头输出两个对应的点图和相关的置信图。

重点是,这两个点图都要在第一张图像的同一坐标系中进行表示。

多项任务获SOTA

实验首先在7Scenes(7个室内场景)和Cambridge Landmarks(8个室外场景)数据集上评估DUSt3R在绝对姿态估计任务上性能,指标是平移误差和旋转误差(值越小越好)。

作者表示,与现有其他特征匹配和端到端方法相比,DUSt3R表现算可圈可点了。

18622e6fc22fcf03c3a073d16030a724.png

因为它一从未接受过任何视觉定位训练,二是在训练过程中,也没有遇到过查询图像和数据库图像。

其次,是在10个随机帧上进行的多视图姿态回归任务。结果DUSt3R在两个数据集上都取得了最佳效果。

d52b89146d93f570929fbb2a12308173.png

而单目深度估计任务上,DUSt3R也能很好地hold室内和室外场景,性能优于自监督基线,并与最先进的监督基线不相上下。

33c551fb9259531fe5debdb4ecbbe472.png

在多视图深度估计上,DUSt3R的表现也可谓亮眼。

dbc23f950b1a3dfd5fea2e7edff71292.png

以下是两组官方给出的3D重建效果,再给大伙感受一下,都是仅输入两张图像:

(一)

4a896b288d7d82708c26e09283a06086.png

(二)

7c87473902079c348fd7f0ae93483f8f.png

网友实测:两张图无重叠也行

有网友给了DUSt3R两张没有任何重叠内容的图像,结果它也在几秒内输出了准确的3D视图:

6694190602ca6bcfbb00de39c546ed1e.gif

(图片是他的办公室,所以肯定没在训练中见过)

aae944d925f7401a933af4c999a8892f.png

对此,有网友表示,这意味着该方法不是在那进行“客观测量”,而是表现得更像一个AI。

3576633d06f9f499148e4ee87baab47c.png

除此之外,还有人好奇当输入图像是两个不同的相机拍的时,方法是否仍然有效?

有网友还真试了,答案是yes!

a7a3c2c2fb87b6d2dfc97ce4e072f4cd.png

传送门:
[1]论文https://arxiv.org/abs/2312.14132 
[2]代码https://github.com/naver/dust3r
参考链接:
[1]https://dust3r.europe.naverlabs.com/
[2]https://twitter.com/janusch_patas/status/1764025964915302400

1cef00ce663687f4a714297849375c06.jpeg

END

欢迎加入「AIGC交流群👇备注:AIGC

432c143488de9e6fc2477d3a4f46253a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Python绘制两张图的结合,你可以使用pyecharts库来完成。首先,你需要安装pyecharts库,然后引入需要的模块。接下来,创建两个图表对象,并分别设置它们的数据和样式。最后,通过Grid组件将这两个图表对象结合在一起,并显示出来。 以下是实现这个过程的示例代码: ```python from pyecharts.charts import Bar, Line from pyecharts import options as opts from pyecharts.globals import ThemeType from pyecharts.commons.utils import JsCode from pyecharts.faker import Faker # 创建第一个图表对象,例如柱状图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(Faker.choose()) .add_yaxis("A", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="图表A")) ) # 创建第二个图表对象,例如折线图 line = ( Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(Faker.choose()) .add_yaxis("B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="图表B")) ) # 将两个图表对象结合在一起 grid = ( Grid(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add(bar, grid_opts=opts.GridOpts(pos_left="10%")) .add(line, grid_opts=opts.GridOpts(pos_right="10%")) ) # 显示图表 grid.render("combined_charts.html") ``` 你可以根据自己的需求来修改数据和样式,然后运行代码即可得到结合的两张图表。最后,通过render方法将图表保存为HTML文件,或者使用show方法直接在浏览器中显示图表。 希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值