在公众号「3D视觉工坊」后台,回复「原论文」可获取论文pdf和代码链接。
添加微信:dddvisiona,备注:三维重建,拉你入群。文末附行业细分群。
0. 笔者个人体会
提问:给你一张2D图像,要求获得完整的三维模型,你会怎么做?
我第一反应是拿SolidWorks自己画一个~
最近就看到了这样的一项开源工作Wonder3D,可以直接从2D图像生成3D模型,感觉很神奇。读了读文章,发现这项工作是基于扩散模型实现的,这里也不得不感叹扩散模型确实在AI绘画和图像生成领域有无限前景。今天笔者也将带领读者阅读一下这项工作,当然笔者水平有限,如果有理解不当的地方欢迎大家一起探讨,共同学习。
1. 效果展示
Wonder3D仅需2~3分钟即可从单视图图像重建高细节纹理网格。Wonder3D首先通过跨域扩散模型生成一致的多视法线图与相应的彩色图像,然后利用一种法线融合方法来实现快速和高质量的重建。这里也推荐「3D视觉工坊」新课程《彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进》。
对不同风格的图像也都适用。
甚至对各种小动物也适用:
代码已经开源了,而且他们的官方主页还放上了Live Demo的链接,感兴趣的读者可以上传自己的图像来尝试,下面展示一下笔者自己的测试结果。
原始图像:
生成的多视角图像:
2. 摘要
在这篇文章中,我们介绍了Wonder3D,一种从单视图图像中高效生成高保真纹理网格的新方法。基于分数蒸馏采样(SDS)的最近方法已经显示出从2D扩散先验恢复3D几何形状的潜力,但是它们通常遭受每个形状优化的耗时和不一致的几何形状。相比之下,某些作品通过快速网络推理直接产生3D信息,但其结果通常质量较低且缺乏几何细节。为了从整体上提高图像到3D任务的质量、一致性和效率,我们提出了一种跨域扩散模型来生成多视图法线贴图和相应的彩色图像。为了确保一致性,我们采用了一种多视图跨域关注机制,该机制有助于跨视图和模态的信息交换。最后,我们介绍了一种几何感知法向融合算法,从多视图2D表示中提取高质量的表面。我们的大量评估表明,与先前的工作相比,我们的方法实现了高质量的重建结果、鲁棒的泛化以及相当好的效率。
3. 算法解析
先让我们重新审视一下这个问题:
给定单张图像,绘制其三维模型。
传统方法会怎么做呢?
使用SLAM或SfM?单张图像做初始化都不够。
使用MVS方法?没有多视角图像就没有视差图。
用NeRF?最吃数据了,视角大一点都不行。
直接训模型学习?思路上可以,实操起来效果非常差。
这个任务本身就非常反人类,因为只有一个视角,没有先验信息谁也不知道完整的三维模型长什么样。
那怎么做呢?
这篇文章的思路很巧妙,没有像NeRF那样直接从2D图像生成3D模型,而是先用扩散模型生成多个视角的2D图像和法线图,再融合生成3D模型。
这么做有啥好处呢?
最大的好处就是可以直接利用Stable Diffusion这种经过数十亿张图像训练过的2D扩散模型,实际上相当于引入了非常强的先验信息。而且法线图可以表征物体的起伏和表面几何信息,进而计算3D模型的高保真几何元素。
这样,整个任务就变为了建立一个马尔科夫链,然后从中采样颜色和法线信息的过程。
其中p代表高斯噪声,n代表法线图,x代表RGB图,K代表图像数量。
不太对,扩散模型只能处理一个域,怎么出来RGB和法线两个域了?
的确是这样,最直观的改动思路就是给扩散模型添加一个头,重新训练模型,直接输出RGB和法线信息,这也是前两年多任务网络的常用做法。但是实际操作过程中会发现收敛很慢,而且泛化性差。
另一个思路是直接训练两个扩散模型,但这样不光增加了计算量,还会导致性能下降。
Wonder3D的做法是设计了一个域转换器(Domain Switcher),实际上是一个标注域信息的一维向量。域转换器先做位置编码,聚合时间embedding信息,再把它也输送给扩散模型,就可以让扩散模型同时处理两个域的信息。
这一点可以先放一个定性对比图来观察:
还有问题,RGB和法线是独立生成的,多视角的RGB图也未必就几何一致。
在这里,Wonder3D引入了一个注意力机制,分别处理多个时间RGB几何不一致的问题,以及RGB和法线图的关联问题。
到这里,Wonder3D具体的Pipeline就出来了:
输入一幅图像,Wonder3D取原始图像、CLIP产生的文本embedding、多视角相机参数,以及一个域转换器作为条件,生成一致的多视点法线图和彩色图。随后,Wonder3D借助法线融合算法,将2D表征重建为高质量的3D几何图形,产生高保真的纹理网格。
最后再看看这个几何融合是怎么做的:
Wonder3D是优化神经隐式SDF场,来从匹配的RGB和法线图中提取完整的三维信息。
刚才不是说NeRF需要稠密的图像序列吗?
如果直接做NeRF-SDF重建的话,误差非常大,并且会一直累计下去。Wonder3D的做法是引入了一系列损失函数来约束优化:
4. 实验
训练数据集是LVIS子集,batch size是512,在8块A800上训练了3天(果然普通人还是玩不起)。从2D图像生成3D模型的方法还是用的Instant NGP(论NeRF在各个领域的入侵haaaaa)。评估使用Google Scanned Object数据集。评估指标方面,3D重建用Chamfer Distances (CD)和Volume IoU,生成图像质量用PSNR、SSIM、LPIPS这几个常见指标。对比的方案也都是目前的SOTA,包括Zero123、RealFusion、Magic123、One-2-3-45、Point-E、Shap-E、SyncDreamer这些。
新视点合成对比,Zero 123缺乏多视图一致性,SyncDreamer对输入图像的仰角比较敏感,但是Wonder3D生成具有语义一致性和几何一致性的图像。这里也推荐「3D视觉工坊」新课程《彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进》。
新视点合成的定量对比。
3D重建质量的对比,Shape-E的重建结果不完整且扭曲。SyncDreamer的重建结生成图像大致对齐,但纹理质量不好。相比之下Wonder3D实现几何和纹理上最高的重建质量。
3D重建的定量对比。
最后3D生成模型中各项损失函数的消融实验,验证损失函数的必要性:
还是一个消融实验,验证多视图几何一致性和RGB-法线对其的注意力机制的作用:
5. 总结
本文为各位读者介绍了Wonder3D,可以从单张图像直接生成完整的三维模型,整个模型的设计思路很巧妙,而且也开源。渲染速度也达到了2~3分钟,这项工作的应用也很广泛,建图、VR、AR、动画、影视等等都可以用。感觉Wonder3D还是很神奇的,有点长见识了。
高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:
[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;
[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;
[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。
[三维重建方向]NeRF、colmap、OpenMVS、MVSNet等。
[无人机方向]四旋翼建模、无人机飞控等。
除了这些,还有求职、硬件选型、视觉产品落地等交流群。
大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。
第二步 加入知识星球,问题及时得到解答
3.1 「3D视觉从入门到精通」技术星球
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
3.2 3D视觉岗求职星球
本星球:3D视觉岗求职星球 依托于公众号「3D视觉工坊」和「计算机视觉工坊」、「3DCV」,旨在发布3D视觉项目、3D视觉产品、3D视觉算法招聘信息,具体内容主要包括:
收集汇总并发布3D视觉领域优秀企业的最新招聘信息。
发布项目需求,包括2D、3D视觉、深度学习、VSLAM,自动驾驶、三维重建、结构光、机械臂位姿估计与抓取、光场重建、无人机、AR/VR等。
分享3D视觉算法岗的秋招、春招准备攻略,心得体会,内推机会、实习机会等,涉及计算机视觉、SLAM、深度学习、自动驾驶、大数据等方向。
星球内含有多家企业HR及猎头提供就业机会。群主和嘉宾既有21届/22届/23届参与招聘拿到算法offer(含有海康威视、阿里、美团、华为等大厂offer)。
发布3D视觉行业新科技产品,触及行业新动向。
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
科研论文写作:
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[2]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[3](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[4]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[5]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
机器人导航与路径规划
[1]移动机器人规划控制入门与实践:基于Navigation2
视觉三维重建:
[2]基于深度学习的三维重建MVSNet系列 [论文+源码+应用+科研]
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)
无人机:
[1] 零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]