概述
- 我有两个数据集:1)FFHQ 真实人脸数据集,只包含单张真实图 x(没有 GT 的 latent 和 pose);2)合成数据集:随机采样一个身份 latent w,再采样多个视角 p1…p10,用冻结的预训练 EG3D 渲染得到
,因此这套合成数据天然带标签 ,它和 FFHQ 无关。训练时的主路径用 FFHQ:先把真实图 x 送入 pose 提取器得到 ,然后初始化 ,接着做 n 轮迭代残差反演:每一轮把 x 与当前重建图 拼成 6 通道输入给 residual encoder,得到残差 ,更新 ,再用冻结的 EG3D 在同一个 下渲染出新的重建图 ——所以你问的 就是“上一轮由 EG3D 渲染出来的当前重建结果”,初始是平均图。用最终(或每步)的 原图 x 计算重建损失来训练 residual encoder(EG3D 始终冻结)。另外每隔 个 step,会从合成 multi-view 数据里取同一身份的不同视角样本做几何/多视角正则:一方面让合成图预测的 latent 回归到它的 GT latent w(feature/latent 回归),另一方面让同一身份不同视角得到的预测 latent 相互接近(view-invariant),从而促使 encoder 对同一人脸不同角度输出一致的 latent;这一步通常不做“预测 pose vs GT pose”的损失,合成数据的 GT pose 主要用来先训练/对齐 pose 提取器里的 mapper,使其输出能适配 EG3D。