看透物体的3D表示和生成模型:NUS团队提出X-Ray
- 项目主页: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
当前,人工智能在人类智能领域迅速发展。在计算机视觉中,图像和视频生成技术已经日趋成熟,如Midjourney、Stable Video Diffusion等模型广泛应用。然而,三维视觉领域的生成模型仍面临挑战。
目前的3D模型生成技术通常基于多角度视频生成和重建,例如SV3D模型,通过生成多角度视频并结合神经辐射场(NeRF)或者3D高斯光滑模型(3D Gaussian Splatting技术)逐步构建3D物体。这种方法主要限制在只能生成简单的、无自遮挡的三维物体,无法呈现物体内部结构,使得整个生成过程复杂且且不完美,显示出该技术的复杂性和局限性。
究其原因,在于目前缺乏灵活高效且容易泛化的3D Representation (3D表示)。
图1. X-Ray序列化3D表示
新加坡国立大学(NUS)胡润博士带领研究团队发布了一种全新的3D表现——X射线,它能够顺序化地表现从相机摄像角度看过去的物体的透层次的物体表面形状和纹理,可以充分利用视频生成功能来生成模型优势来生成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技术在医疗影像和生物技术领域的应用,可能改变人们对复杂生物结构的理解和研究方法。期待它如何改变与三维世界的互动方式。
以上是看透物体的3D表示和生成模型:NUS团队提出X-Ray的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

要通过 Git 下载项目到本地,请按以下步骤操作:安装 Git。导航到项目目录。使用以下命令克隆远程存储库:git clone https://github.com/username/repository-name.git

更新 git 代码的步骤:检出代码:git clone https://github.com/username/repo.git获取最新更改:git fetch合并更改:git merge origin/master推送更改(可选):git push origin master

如何更新本地 Git 代码?用 git fetch 从远程仓库拉取最新更改。用 git merge origin/<远程分支名称> 将远程变更合并到本地分支。解决因合并产生的冲突。用 git commit -m "Merge branch <远程分支名称>" 提交合并更改,应用更新。

Git 代码合并过程:拉取最新更改以避免冲突。切换到要合并的分支。发起合并,指定要合并的分支。解决合并冲突(如有)。暂存和提交合并,提供提交消息。

解决 Git 下载速度慢时可采取以下步骤:检查网络连接,尝试切换连接方式。优化 Git 配置:增加 POST 缓冲区大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。尝试使用不同的 Git 客户端(如 Sourcetree 或 Github Desktop)。检查防火

在开发一个电商网站时,我遇到了一个棘手的问题:如何在大量商品数据中实现高效的搜索功能?传统的数据库搜索效率低下,用户体验不佳。经过一番研究,我发现了Typesense这个搜索引擎,并通过其官方PHP客户端typesense/typesense-php解决了这个问题,大大提升了搜索性能。

适合新手的加密货币数据平台有CoinMarketCap和非小号。1. CoinMarketCap提供全球加密货币实时价格、市值、交易量排名,适合新手与基础分析需求。2. 非小号提供中文友好界面,适合中文用户快速筛选低风险潜力项目。

可以通过以下步骤删除 Git 分支:1. 删除本地分支:使用 git branch -d <branch-name> 命令;2. 删除远程分支:使用 git push <remote-name> --delete <branch-name> 命令;3. 保护分支:使用 git config branch. <branch-name>.protected true 添加保护分支设置。
