- 项目主页:https://tau-yihouxiang.github.io/projects/X-Ray/X-Ray.html
- 论文地址:https://arxiv.org/abs/2404.14329
- 代码地址:https://github.com/tau-yihouxiang/X-Ray
- 数据集:https://huggingface.co/datasets/yihouxiang/X-Ray
如今的生成式AI在人工智能领域迅猛发展,在计算机视觉中,图像和视频生成技术已日渐成熟,如Midjourney、Stable Video Diffusion [1]等模型广泛应用。然而,三维视觉领域的生成模型仍面临挑战。
目前的3D模型生成技术通常基于多角度视频生成和重建,如SV3D模型[2],通过生成多角度视频并结合神经辐射场(NeRF)或者3D高斯渲染模型(3D Gaussian Splatting技术逐步构建3D物体。这种方法主要限制在只能生成简单的、无自遮挡的三维物体,且无法呈现物体内部结构,使得整个生成过程复杂而且不完美,显示出该技术的复杂性和局限性。
究其原因,在于目前缺乏灵活高效且容易泛化的3D Representation (3D表示)。
图1. X-Ray序列化3D表示
X射线能够穿透并记录关键物体内外表面信息,受到这个启发,新加坡国立大学(NUS)胡涛博士带领研究团队发布了一种全新的3D表示—X-Ray,它能够序列化地表示从相机摄像角度看过去的物体的逐层次的物体表面形状和纹理,可以充分利用视频生成模型的优势来生成3D物体,可以同时生成物体的内外3D结构。
本文将详细展示X-Ray技术的原理、优势及其广泛的应用前景。
图2. 与基于渲染的3D模型生成方法比较。
技术革新:物体内外表面的3D表示方法
X-Ray表示:从相机中心开始朝向物体方向的H×W个矩阵点发射射线。在每条射线方向上,逐个记录与物体的表面相交点的L个包含深度、法向量和颜色等的三维属性数据,然后将这些数据组织成L×H×W的形式,实现任意3D模型的张量表示,这就是该团队提出的X-Ray表示方法。
值得注意的是,该表示形式与视频格式一样,因此可以用视频生成模型做3D生成模型。具体过程如下。
图3. 不同层数的X-Ray示例样本。
1.编码过程: 3D模型转X-Ray
给定一个3D模型,通常是三维网格,首先设置一个相机观测该模型,然后通过光线投影算法(Ray Casting Algorithm)来记录每个相机射线与物体相交的所有表面的属性,包括该表面的深度,法向量,颜色等,为了指示方便,用表示该位置是否存在表面。
然后,获取所有相机射线等相交表面点,即可得到一个完整的X-Ray 3D表达,如下表达式和图3所示。
通过编码过程,将一个任意的3D模型转化为X-Ray,它和视频格式是一样的,并且具有不同的帧数,通常情况下,帧数L=8 足够表示一个3D物体。
2.解码过程:X-Ray转3D模型
给定一个X-Ray,也可以通过解码过程转化回3D模型,这样只需要通过生成X-Ray即可生成3D模型。具体过程包括点云生成过程和点云重建表面两个过程。
- X-Ray到点云:X-Ray很容易转化为点云,该点云中的每个点除了有3D点的位置坐标,还具有颜色和法向量信息。
其中r_0,r_d分别是相机射线的起点和归一化方向,通过对每个相机射线的处理,就可以获得一个完整的点云。
- 点云到三维网格:接下来就是将点云转化为三维网格的过程,这是一个被研究了很多年的技术,因为这些点云具有法向量,所以采用Screened Poisson 算法直接将点云转化为三维网格模型,即最终的3D模型。
基于X-Ray表示的3D模型生成
为了生成高分辨率的多样3D X-Ray模型,该团队使用了与视频格式相似的视频扩散模型架构。这个架构可以处理连续的3D信息,并通过上采样模块来提高X-Ray的质量,生成高精度的3D输出。扩散模型负责从噪声数据逐步生成细节丰富的3D图像,上采样模块则增强图像分辨率和细节,以达到高质量标准。结构具体如图4所示。
X-Ray 扩散生成模型
扩散模型在X-Ray生成中使用潜在空间,通常需要自定义开发向量量化-变分自编码器(VQ-VAE)[3] 进行数据压缩,这一缺少现成模型的过程增加了训练负担。
为有效训练高分辨率生成器,该团队采用了级联合成策略,通过技术如Imagen和Stable Cascaded,从低到高分辨率逐步训练,以适应有限的计算资源并提高X-Ray图像质量。
具体而言,使用Stable Video Diffusion中的3D U-Net架构作为扩散模型,生成低分辨率X-Ray,并通过时空注意机制从2D帧和1D时间序列中提取特征,增强处理和解释X-Ray能力,这对高质量结果至关重要。
X-Ray 上采样模型
前一阶段的扩散模型仅能从文本或其他图像生成低分辨率的X-Ray图像。在随后的阶段,着重提升这些低分辨率X-Ray至更高分辨率。
该团队探索了两种主要方法:点云上采样和视频上采样。
由于已经获得了形状和外观的粗糙表示,将这些数据编码成带有颜色和法线的点云是一个很直接的过程。
然而,点云表示结构过于松散,不适合进行密集预测,传统的点云上采样技术通常只是简单增加点的数量,这对于提升诸如纹理和颜色等属性可能不够有效。为了简化流程并确保整个管道的一致性,选择使用视频上采样模型。
这个模型改编自Stable Video Diffusion(SVD)的时空VAE解码器,专门从头开始训练,以4倍的因子上采样合成的X-Ray帧,同时保持原始的层数。解码器能够在帧级和层级上独立进行注意力操作。这种双层注意力机制不仅提高了分辨率,还显著改善了图像的整体质量。这些功能使得视频上采样模型成为在高分辨率X-Ray生成中更加协调和有效的解决方案。
图4:基于X-Ray表示的3D模型生成框架,包括X-Ray扩散模型与X-Ray上采样模型。
实验
1. 数据集:
实验使用了Objaverse数据集的一个筛选子集,从中移除了缺少纹理和不充分提示的条目。
这个子集包含超过60,000个3D对象。对于每个对象,随机选择4个摄像机视角,覆盖从-180到180度的方位角和从-45到45度的仰角,摄像机到对象中心的距离固定为1.5。
然后使用Blender软件进行渲染,并通过trimesh库提供的光线投射算法生成相应的X-Ray。通过这些过程,可以创建超过240,000对图像和X-Ray数据集来训练生成模型。
2. 实现细节:
X-Ray扩散模型基于Stable Video Diffusion (SVD) 中使用的时空UNet架构,进行了轻微调整:模型配置为合成8个通道:1个命中通道,1个深度通道和6个法线通道,与原始网络的4个通道相比。
鉴于X-Ray成像与传统视频之间的显著差异,从头开始训练模型,以弥补X-Ray与视频领域之间的大差距。训练在8个NVIDIA A100 GPU服务器上进行了一周。在此期间,学习率保持在0.0001,使用AdamW优化器。
由于不同的X-Ray具有不同数量的层,将它们填充或裁剪到相同的8层,以便更好地批处理和训练,每层的帧尺寸为64×64。对于上采样模型,第L层的输出仍然是8,但每个帧的分辨率提高到256×256,增强了放大X-Ray的细节和清晰度,结果如图5和图6所示。
图5:图像到X-Ray并到3D模型生成
图6:文本到X-Ray并到3D模型生成
未来展望:新表示带来无限可能
随着机器学习和图像处理技术的不断进步,X-Ray的应用前景无限广阔。
未来,这种技术可能会与增强现实(AR)和虚拟现实(VR)技术结合,为用户创造出完全沉浸式的3D体验。教育和训练领域也可以从中受益,例如通过3D重建提供更为直观的学习材料和模拟实验。
此外,X-Ray技术在医疗影像和生物技术领域的应用,可能改变人们对复杂生物结构的理解和研究方法。期待它如何改变与三维世界的互动方式。