IC3D: Image-Conditioned 3D Diffusion for Shape Generation
————YssssMikey
Tips: 我会基本上几天更新一篇论文引读,一般是AIGC模型——3D+Diffusion方向每日在Arxiv上新发布的最新Paper来导读,喜欢支持的伙伴可以支持关注点赞哦!!对于文章中可能出现的错误和建议可以在评论区打出(本人也只是刚入AIGC方向的小朋友)
Summary: IC3D——第一个通过图像引导生成三维形状的Image-Conditioned 3D diffusion model(第一个采用体素表示的3D DDPM Model)
在text-to-image的启发下,创建利用了pair图像-形状预训练(CISP),通过对比预训练将image-shape联合嵌入
Intro:
第一个基于单视图图像条件生成三维形状的DDPM Model.1
对于选择体素的原因:
-
无需引入其他额外的体系结构复杂性
-
点云的使用需要特定的权宜来正确处理无序点集,如排列不变量permutation invariance和局部性利用locality exploitation
-
避免上述复杂性来focus图像驱动 的3D生成
Contribution:
-
提出CISP:利用对比学习联合image-shape嵌入的模型
-
利用CISP来引导DDPM进行image-guide 来生成shape
-
采用DDPM来生成基于Voxel-based 3D 数据
-
IC3D比SOTA形状生成模型更真实,并有强大的图像一致性
-
研究了CISP学习到的嵌入空间的正则化和泛化能力
-
通过learned manifold(流型学习)进行插值可以得到一致的形状
-
将learned sapce 泛化到相关input domains,可以实现草图到形状的生成(sketch-to-shape)
-
Model
-
Contrastive Image-shape pre-traing(CISP)
定义处理shape 的编码器 E s E_s Es 和处理image的编码器 E i E_i Ei ,然后他们能够输出一个大小为f 的embeddings。
Image encoder: 不同于CLIP中利用Vit作为image encoder,这里由于数据集有限,使用了DeiT(高效数据图像转换器),DeiT Base 使用768维 hidden embedding 和12层有12个attention head 的layer
Shape encoder: 将Vit模型扩展到3D,将2D卷积(mapping image to patch embedding)替换为3D 卷积(mapping voxel shape to patch embedding)。用一个可学习的token添加到输入序列,然后由network到所需的embedding dimension。这样可以轻松地提取(image or shape) CISP embedding——[cls]类标记应用在VIT ,启发于NLP。
上图显示描述了shape在embedding space的示例图像。对于上图可以观察模型如何捕捉细节和子类别。E.g. 桌子的高度随着 d 1 d_1 d1 增大而减小等等,对于类间的相互作用(公共汽车靠近最长的船,因为他们在体素化时有相似的形状因子)
训练过程:
-
给定包含N个对应(image-shape)的batch
-
使用 E i E_i Ei 和 E s E_s Es 生成的image-shape embeddings 。
-
计算image embedding(行)和shape embedding(列)之间的对称N×N相似矩阵,计算余弦相似度
-
训练Loss: 两个交叉熵组成,衡量预测给定图像形状的能力
-
训练目标: 最大化匹配N个pair(image-shape)的相似度,同时最小化 N 2 − N N^2-N N2−N 对的相似度,类似于CLIP
-
-
Shape Generation Pipeline
见上述fig.1 ,输入query image ,获得它的CISP embedding后,携带关于它的3D shape的信息,以及附加的token ,但编码信息没有被CISP捕获。然后利用这些embedding来guide DDPM的生成过程。最后通过二进制阈值来将其转换成为输出形状
-
Architecture
扩展了GLIDE中使用的架构,是基于ADM模型:
-
3D 卷积替代2D卷积
-
将text-encoder 替换为image encoder E c E_c Ec ,选择了 DeiT
-
使用以下两种方式进行图像嵌入
-
将其投影并添加到timestep embedding中
-
在每一个attention block中,将CISP embeddings 嵌入到4个额外的token,并将其连接到attention context (keys,values)
-
给 E c E_c Ec 加了8个可学习的token,并把他们对应的输出作为额外的attention context
-
-
-
Guidance
利用classifier-free guidance来训练模型,消除了单独分类器的需要,获得了与分类器引导相似的结果
-
首先,联合训练一个条件模型和一个无条件模型
-
结合他们的分数估计进行预测(朝着guidance方向)
-
联合训练 条件模型和无条件模型中,replace with probability p the input conditioning with a null token ∅.
在生成过程中,用learned null token ∅ 替换image token不会影响模型性能,且表明 E c E_c Ec 只在训练过程起关键作用。若用空标记代替CISP embedding则无法生成和guide image一致的形状
ϵ ^ θ ( x t , t ∣ y ) = ϵ θ ( x t , t ∣ ∅ ) + w ⋅ ( ϵ θ ( x t , t ∣ y ) − ϵ θ ( x t , t ∣ ∅ ) ) \hat{\epsilon}_{\theta}\left(x_{t}, t \mid y\right)=\epsilon_{\theta}\left(x_{t}, t \mid \emptyset\right)+w \cdot\left(\epsilon_{\theta}\left(x_{t}, t \mid y\right)-\epsilon_{\theta}\left(x_{t}, t \mid \emptyset\right)\right) ϵ^θ(xt,t∣y)=ϵθ(xt,t∣∅)+w⋅(ϵθ(xt,t∣y)−ϵθ(xt,t∣∅))
y: guidance token
w≥1:guidance scale
在image token和CISP embeddings中应用p=0.1的classifier-free-guidance
-
Experiments(part)
-
sketch-to-shape generation
-
Interpolations
在两个对象的CISP embedding之间进行插值来遍历它们之间的概念空间,下图是利用Slerp(球面线性插值),它比标准版的线性插值好(因为linear interpolation很难有效混合两张shapes)
与此同时,对于下图可以清晰的知道,CISP的泛化能力允许我们生成连贯的形状。
另外,CISP概念空间也允许IC3D生成一致的形状,即使在两个不相关的嵌入进行插值
Limitations
- IC3D的采样速度低,同DDPM一样存在相同的问题
Conclusion
-
提出了利用对比训练学习image-shape联合嵌入空间的CISP模型,利用其结构来在embedding space中引导从IC3D生成query image.
-
IC3D比SOTA 3D重建有更高质量shape的真实感,并且保持了图像一致性
-
模型的生成性强化了必要的归纳偏差
-
作者推测:模型的生成特性使学习训练数据分布的结构语义,从而能够生成多样化但一致的样本
-
Future work:
-
目前该模型只在ShapeNet上进行训练,若在更大的数据集上训练CISP可以有更强的泛化能力,有机会成为zero-shot model 的可能性
-
利用CISP embedding 将我们的single-view pipeline 拓展到能获取multi-view guidanc
-
可以去看看:Pix2vox++从Auto-encoder去提取shape latent对DDPM进行条件指导生成 ↩︎