
<a id="n28-title"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-title)


# 编辑之前，先分清哪里改坏了

王德泉 · Coding with AI · Lecture 04


<a id="n28-7896bc781f9c"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-7896bc781f9c)

上一页强调随机输入应当带来有意义的变化。StyleGAN 把不同控制入口放进生成器：样式变量与随机噪声承担不同角色。在原版论文的受控对照里，改变样式与只改变噪声可以影响不同层次的外观；比较时必须说明哪些输入固定、哪些改变。不能看两张不同图，就把所有差异归因于其中一个旋钮。课堂这一组来自原版 StyleGAN 论文结果，其余桌面编辑图则是机制示例。


<a id="n28-a7320823e97e"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-a7320823e97e)

对一张已有照片作编辑，还要先解决“怎样把它送进生成器”。反演寻找能够重建该照片的潜在表示。有的协议只优化表示，有的还调整生成器参数；这两种情况对后续比较意味着不同的条件，不能混写成同一过程。原版 StyleGAN 的 W 空间、样式调制及截断等设计也有具体版本范围，不能自动套到所有后来版本。


<a id="n28-53673357e451"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-53673357e451)

现在看桌面上的杯子。左边是输入，中间是反演重建，右边才是把杯色改变后的结果。杯沿在中间图已经变形，说明这一项误差在编辑前就存在；书角只在右图改变，才是这次改色带来的新增副作用。**先比较输入→重建，再比较重建→编辑，才能把两个阶段的误差分开。** 只把最终图与输入比较，会把所有问题都怪到最后一次改色。


[课程图解] 杯沿误差在反演时已出现，书角变化才由这次编辑新增。；图中标签与关系：输入照片 反演重建 编辑结果 杯沿：反演时已改变 书角：编辑新增副作用
杯沿误差在反演时已出现，书角变化才由这次编辑新增。


<a id="n28-d42fb3fafb27"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-d42fb3fafb27)

**“沿一个潜在方向就能让人变老，说明模型找到了年龄的真实因果变量吗？”** 这至多先表明该表示中存在可用于编辑的相关结构。InterFaceGAN 等研究探索潜在方向与语义属性的关系；线性方向在某些范围可用，仍可能牵动其他属性。生成图中的可控相关性，不等于现实中独立改变年龄而保持所有其他原因不变。范围外泛化与因果主张需要另收证据。


<a id="n28-77c48f9ba68a"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-77c48f9ba68a)

这一章的部件也不会随 GAN 名称退场而消失。对抗反馈可以与像素、感知重建一起训练图像压缩器；压缩器给出表示，另一套生成过程学习如何产生这些表示，最后再解码。表示怎样取得、用什么目标训练、如何采样，是能够分别继承和组合的决定。系统用了对抗目标，不必意味着最终由传统 GAN 一次出图；用了某个解码器，也不能由它单独判断整套模型属于哪一类。


<a id="n28-24d637f63c59"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-24d637f63c59)

接下来转向扩散。我们会保留“输入、目标、更新和证据分开看”的习惯，研究另一种过程：从受扰动的状态出发，反复更新成一个完整候选。首先需要分清，训练的已知照片与生成的新随机起点是什么关系。


<a id="n28-states"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-states)


## 画面怎样推进


<a id="n28-b0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-b0)

原版StyleGAN对照分别改变样式或噪声，两个控制协议不能混为一谈。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N28.html?step=b0)


<a id="n28-b1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-b1)

输入与反演重建的对照先定位杯沿误差；它发生在编辑之前。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N28.html?step=b1)


<a id="n28-b2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-b2)

重建与改色结果的对照再定位新增书角变化，区分反演误差和编辑副作用。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N28.html?step=b2)


<a id="n28-materials"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-materials)


## 继续阅读与实验


<a id="n28-learning-unit-001"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-learning-unit-001)


## 最终图变坏了，怎样判断是哪一步造成？


<a id="n28-learning-unit-002"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-learning-unit-002)

用三张图逐项比较：原图x、未编辑重建G(z)、编辑结果G(z+αn)。若杯沿在第二张已经变形，误差在找到表示或重建时就出现；若书角只在第三张移动，才是沿编辑方向新增的副作用。先完成这两次比较，再评价最终结果。


<a id="n28-learning-unit-003"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-learning-unit-003)

反演寻找的是能让G尽量重建输入的表示，不是恢复照片自带的“真实潜变量”。固定G只改z，与同时调整G参数是不同协议；步长α变大也可能离开熟悉区域。能控制某种相关变化，还不能据此声称找到了独立的现实因果变量。


<a id="n28-learning-unit-004"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-learning-unit-004)

接着读：[反演与编辑的误差分离](https://codingai-lec04.pages.dev/lecture.html#ch04-inversion)与[表示更新的简化式](https://codingai-lec04.pages.dev/lecture.html#ch04-inversion-formula)。


<a id="n28-chapter-reading"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-chapter-reading)


### [CLS 04 · 对抗反馈与图像翻译](https://codingai-lec04.pages.dev/lecture.html#ch04)

按连续正文理解这条方法的训练信号、使用过程与算例；数学与实践在相关问题旁展开。

先看：第4章，从对象和问题开始


<a id="n28-lab08-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-lab08-practice)


### [LAB 08 · 生成器与判别器的真实反馈](https://codingai-lec04.pages.dev/course/notebooks/f16324b960a446e2aa03168c17e9fc0b.html)

固定生成起点比较训练前中后；改变 D:G 更新比，分别读近模式比例与模式覆盖。

先看：先看保存结果与读图解释


<a id="n28-lab03-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-lab03-practice)


### [LAB 03 · CycleGAN：可逆不等于语义正确](https://codingai-lec04.pages.dev/course/notebooks/caf19cffbd744fafb371912863a03e30.html)

先读本册保存结果，再按实现顺序核对一个算例；最后只改一个变量。

先看：先看保存结果与读图解释


<a id="n28-material-1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-material-1)


### [A Style-Based Generator Architecture for Generative Adversarial Networks](https://openaccess.thecvf.com/content_CVPR_2019/papers/Karras_A_Style-Based_Generator_Architecture_for_Generative_Adversarial_Networks_CVPR_2019_paper.pdf)

按原版论文的控制协议分别观察样式与噪声；不要把不同版本机制混在一起。

先看：图3、图4与方法部分


<a id="n28-material-2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N28.html#n28-material-2)


### [Interpreting the Latent Space of GANs for Semantic Face Editing](https://openaccess.thecvf.com/content_CVPR_2020/papers/Shen_Interpreting_the_Latent_Space_of_GANs_for_Semantic_Face_Editing_CVPR_2020_paper.pdf)

阅读潜在方向如何得到，并观察属性纠缠；用输入—重建—编辑三阶段定位误差。

先看：第3节与编辑实验

