Hunyuan3D 2.0(腾讯)
论文:https://arxiv.org/abs/2501.12202
代码:https://github.com/Tencent/Hunyuan3D-2
技术方案
模型由两部分组成:Hunyuan3D-DiT根据输入图像生成3D裸模,Hunyuan3D-Paint生成裸模的纹理图(输入单图,法向量和位置图作为几何条件,生成多视角图用于烘焙)。前者用到了SA和CA的ShapeVAE编码器,将点云映射到latent特征,flow-based扩散模型根据输入图预测目标token序列,通过VAE解码器输出占用值,经过MC算法得到mesh。
mesh生成
Importance Sampled Point-Query Encoder 编码器E用于提取3D形状的表示特征,为达到这个目标,本文设计了基于Attention的编码器,均匀从3D表面采样点云。然而,均匀采样无法重建复杂物体的细节,因此,本文加入了重要性采样,在边缘和角落采样更多的点,可以为复杂区域提供完整的信息。具体细节,采用CA通过point query压缩点云为连续token的集合,这些query用Farthest Point Sampling(FPS)分别对Pu和Pi均匀采样。最终点云M+N,重要点云query是M’+N’,两者都是cat得到的。进过傅里叶位置编码+线性层编码,再输入CA。如下图
Decoder 解码器Ds将latent形状嵌入映射为神经辐射场。先经过线性层,再输入SA模块,然后和Grid query输入CA获得3D神经辐射场。经过线性层获得SDF值,最后经过Marching Cube得到mesh。
Training Strategy & Implementation 训练损失用了SDF的MSE损失和潜空间的KL散度。训练时用到了多分辨率策略加速收敛,latent token序列长度从预定义集合中选取,短序列减少训练成本,长序列提升重建质量。最长序列长度3072
Hunyuan3D-DiT 是一个flow-based扩散模型,类似FLUX采用双流和单流网络结构。双流模块中,latent token和条件token分别过Linear、MLP等模块,只在Attention中交互信息;单流块中,latent token和条件token被cat,同时通过空间注意力和通道注意力交互信息。(本文省略了位置编码,因为ShapeVAE中特定token并不对应3D网格中的固定位置,相反,本文3D latent token本身负责确定生成的形状在3D网格中的位置/占用情况,这与图像/视频生成不同,在图像/视频生成中,token负责预测2D/时空网格中特定位置的内容。)
Condition Injection. 采用预训练好的图像编码器,DINOv2 Giant,输入size 518x518,此外,还移除图像背景,缩放到统一尺寸,目标位置中心化,背景填充为白色。
Training & Inference. 采用flow matching损失,加噪声得到xt,DiT预测噪声逐步得到x0
纹理合成
给定一个无纹理的3D网格和图像提示,本文目标是生成一个高分辨率且无缝的纹理图。纹理图应与图像提示中的可见区域紧密符合,展现多视角一致性,并与输入网格保持一致。为此,本文采用3阶段网络,包括:预处理阶段、多视图合成和纹理烘焙阶段。
Pre-processing
Image Delighting Module 参考图通常带有光照和阴影,直接用于纹理合成,直接使用会导致将光照烘焙到纹理图中。因此收集3D光照配对数据训练delight模型,最终使得纹理生成为白光照明图像,实现照明不变纹理合成
View Selection Strategy 为了减少算法开销,一般最大纹理区域,最少的几张视图,本文采用集合感知的视角选择策略,支持高效纹理合成。通过考虑几何表面的覆盖范围,启发式地选择8到12个视点进行推理。最初,我们固定4个正交视点作为基础,因为它们覆盖了大部分几何形状。随后,我们使用贪婪搜索方法迭代地添加新的视点。具体过程在算法1中说明,算法中的覆盖函数定义为:
其中UV(v,M)根据输入视图 v 和网格 M 返回 UV 空间中覆盖的纹理像素集,Aarea(· · ·) 是一个根据给定的覆盖纹理像素集计算覆盖面积的函数。这种方式更多集中在没见到的视角,加上密集视角推理,避免了后处理的负担(如纹理inpainting)
Hunyuan3D-Paint
Double-stream Image Conditioning Reference-Net. 采用ReferenceNet的形式,将原图VAE特征输入参考分支,该分支时间步为0,取消权重共享,直接用冻结的SD2.1权重。最后再注入主分支生成多视图。
Multi-task Attention Mechanism 参考Attention融合参考图信息到多视图扩散过程中;而多视角Attention保证视图一致性
Geometry and View Conditioning. 为了实现有效的训练,直接将规范法向量和坐标图CCM经过VAE与噪声cat,再进行扩散模型去噪;此外还加入了可学习的相机嵌入,每个视点分配一个唯一的无符号整数,并设置一个可学习的嵌入层将整数映射到特征向量,然后将其注入到多视图扩散模型中。在我们的实验中我们发现,将几何条件与可学习的相机嵌入相结合可以获得最佳性能。
Texture Baking
Dense-view inference. 第一阶段生成多视角图,第二阶段填充自遮挡空间;增加生成视角密集度,减轻阶段2的负担
Single Image Super-resolution. 采用ESRGAN预训练模型进行单图超分,提升纹理清晰度和质量,不会引入明显改变。
Texture Inpainting. 在将合成的密集多视图图像展开成纹理图后,UV纹理中仍有一小部分补丁未被完全覆盖。为了解决这个问题,我们采用了一种直观的修复方法。首先,我们将现有的UV纹理投影到顶点纹理上。然后,我们通过计算连接的、纹理化的顶点上的纹理的加权总和来查询每个UV纹理像素的纹理。权重被设置为纹理像素和顶点之间几何距离的倒数。
实验结果
执行细节 继承了SD-v2模型的ZSNR权重,参考图在-20~20的随机方位角上渲染得到,在512x512上训练8000步,bs=48,学习了5e-5
无需多言,开源的最好的效果。目前3DGS技术也比较火,也许可以将输出SDF换成3DGS,再从3DGS恢复mesh,同时3DGS自带的颜色可以进行delight、超分和纹理烘焙,得到一致的纹理图。