如今的生成式AI在人工智能领域迅猛发展,在计算机视觉中,图像和视频生成技术已日渐成熟,如Midjourney、Stable Video Diffusion [1]等模型广泛应用。然而,三维视觉领域的生成模型仍面临挑战。
目前的3D模型生成技术通常基于多角度视频生成和重建,如SV3D模型[2],通过生成多角度视频并结合神经辐射场(NeRF)或者3D高斯渲染模型(3D Gaussian Splatting技术逐步构建3D物体。这种方法主要限制在只能生成简单的、无自遮挡的三维物体,且无法呈现物体内部结构,使得整个生成过程复杂而且不完美,显示出该技术的复杂性和局限性。
究其原因,在于目前缺乏灵活高效且容易泛化的3D Representation (3D表示)。
X射线能够穿透并记录关键物体内外表面信息,受到这个启发,新加坡国立大学(NUS)胡涛博士带领研究团队发布了一种全新的3D表示—X-Ray,它能够序列化地表示从相机摄像角度看过去的物体的逐层次的物体表面形状和纹理,可以充分利用视频生成模型的优势来生成3D物体,可以同时生成物体的内外3D结构。
本文将详细展示X-Ray技术的原理、优势及其广泛的应用前景。
X-Ray表示:从相机中心开始朝向物体方向的H×W个矩阵点发射射线。在每条射线方向上,逐个记录与物体的表面相交点的L个包含深度、法向量和颜色等的三维属性数据,然后将这些数据组织成L×H×W的形式,实现任意3D模型的张量表示,这就是该团队提出的X-Ray表示方法。
值得注意的是,该表示形式与视频格式一样,因此可以用视频生成模型做3D生成模型。具体过程如下。
给定一个3D模型,通常是三维网格,首先设置一个相机观测该模型,然后通过光线投影算法(Ray Casting Algorithm)来记录每个相机射线与物体相交的所有表面的属性,包括该表面的深度,法向量,颜色等,为了指示方便,用表示该位置是否存在表面。
然后,获取所有相机射线等相交表面点,即可得到一个完整的X-Ray 3D表达,如下表达式和图3所示。
通过编码过程,将一个任意的3D模型转化为X-Ray,它和视频格式是一样的,并且具有不同的帧数,通常情况下,帧数L=8 足够表示一个3D物体。
给定一个X-Ray,也可以通过解码过程转化回3D模型,这样只需要通过生成X-Ray即可生成3D模型。具体过程包括点云生成过程和点云重建表面两个过程。
其中r_0,r_d分别是相机射线的起点和归一化方向,通过对每个相机射线的处理,就可以获得一个完整的点云。
为了生成高分辨率的多样3D X-Ray模型,该团队使用了与视频格式相似的视频扩散模型架构。这个架构可以处理连续的3D信息,并通过上采样模块来提高X-Ray的质量,生成高精度的3D输出。扩散模型负责从噪声数据逐步生成细节丰富的3D图像,上采样模块则增强图像分辨率和细节,以达到高质量标准。结构具体如图4所示。
扩散模型在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至更高分辨率。
该团队探索了两种主要方法:点云上采样和视频上采样。
由于已经获得了形状和外观的粗糙表示,将这些数据编码成带有颜色和法线的点云是一个很直接的过程。
然而,点云表示结构过于松散,不适合进行密集预测,传统的点云上采样技术通常只是简单增加点的数量,这对于提升诸如纹理和颜色等属性可能不够有效。为了简化流程并确保整个管道的一致性,选择使用视频上采样模型。
这个模型改编自Stable Video Diffusion(SVD)的时空VAE解码器,专门从头开始训练,以4倍的因子上采样合成的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所示。
随着机器学习和图像处理技术的不断进步,X-Ray的应用前景无限广阔。
未来,这种技术可能会与增强现实(AR)和虚拟现实(VR)技术结合,为用户创造出完全沉浸式的3D体验。教育和训练领域也可以从中受益,例如通过3D重建提供更为直观的学习材料和模拟实验。
此外,X-Ray技术在医疗影像和生物技术领域的应用,可能改变人们对复杂生物结构的理解和研究方法。期待它如何改变与三维世界的互动方式。
本文来自微信公众号“机器之心”
【开源免费】LGM是一个AI建模的项目,它可以将你上传的平面图片,变成一个3D的模型。
项目地址:https://github.com/3DTopia/LGM?tab=readme-ov-file
在线使用:https://replicate.com/camenduru/lgm
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner