解纠缠也对应于属性编辑,比如人脸的属性编辑,将人脸变微笑、变衰老,其中每一个属性变化也对应了一种有意义的latent direction 。想要应用这种direction可以分为两种方式:有监督的linear-probe(线性探针)和无监督的PCA方式。
总结来讲,它们都是通过找到某种属性变化对应的语义方向,然后让给定的图像向这个方向偏移,从而得到该属性变化。
To infer them, we explore two techniques: supervised, by normalizing the linear-probe’s weight matrix, and unsupervised, through PCA decomposition [100] (details at Appendix E.3).
cite:【2023 】 + SODA Bottleneck Diffusion Models for Representation Learning
1、有监督的linear-probe(线性探针)
线性探针(linear probe)是一种简单的线性分类器,需要预先知道图像对应的标签,通常用于评估神经网络的表示学习效果。在这里,线性探针用于识别潜在空间中的语义方向
-
训练一个线性分类器:
- 先在潜在空间中训练一个线性分类器(线性探针),该分类器的任务是区分不同的语义属性。例如,“微笑”与“无微笑”,“变老”与“未变老”等。
- 线性探针的输入是潜在空间的表示,输出是这些表示的语义标签。
-
获取权重矩阵(有点类似于nn.Embedding()):
训练好的线性探针会有一个权重矩阵,这个权重矩阵表示了每个潜在表示与分类标签之间的关系。权重矩阵中的每一行对应一个分类标签,每一列对应输入特征的一个维度。 -
标准化权重矩阵:
对线性探针的权重矩阵进行标准化,得到每个语义属性对应的方向向量。
标准化的过程通常是将每列向量除以其范数,以确保每个方向向量的长度相同,从而在潜在空间中保持一致的尺度。
2、无监督的PCA方式
训练:
- 采样1000-10000个图像
- encoder为latent z
- 然后通过PCA得到最大的变化方向
- 沿着最大变化方向进行移动可以得到一系列的latent code z,变化的方向为 z + s_j * t,其中 ,是特征值、是沿着s_j方向的标准差
- 然后decoder这些z得到一系列图像
- 通过肉眼观察这些图像是什么属性发生了变化,这样就会知道这种direction对应的是哪种属性变化
推理:
这样在采样过程中就可以通过给定一个图像,然后得到要被改变的属性的一系列图像。
cite:【2023 】 + SODA Bottleneck Diffusion Models for Representation Learning
人脸属性编辑的属性怎么做的?_stylegan2的人脸属性编辑-CSDN博客