Generating Past and Future in Digital Painting Processes
Stanford University
Generating Past and Future in Digital Painting Processes
一句话总结
提出 PaintsAlter 框架:给定用户上传的一张画布图像,用重新利用(repurpose)的视频扩散模型生成这张画”之前(past)”与”之后(future)”的绘画过程帧,把绘画过程建模成一个”集合到集合(set-to-set)”的映射问题,支持一对一、多对多以及非连续帧的任意查询。
研究背景
记录、可视化并操纵创作过程一直是数字创作的核心需求,从撤销/重做、历史面板到脚本宏,学界和工业界积累了大量”过程编辑”手段。把创作过程录成视频是另一种通用做法,艺术家常把”设计备选方案”视为创作的有机组成部分:绘制时会回到早期阶段、重新想象或重画局部来尝试不同设计。
在大规模预训练模型时代,作者提出一个问题:能否构建一个系统,既能生成绘画过程的”未来”,也能生成”过去”?这样用户不仅能探索可能的结果,还能通过可视化替代过程来激发创意方向。
要回答这个问题,作者观察到这类系统必须应对多种查询类型(见下方分类)。用户查询往往是一对一或多对多的帧映射,且很多时候涉及非连续(non-contiguous)帧。例如从成品重建草图是典型的”一对一非连续”查询;从半成品可视化多个未来帧则是”一对多”。这要求后端能处理任意数量、任意组合的源帧与查询帧,同时保持全局一致性。
查询类型可归纳为:
- 源帧/查询帧数量:one-to-one、one-to-many、many-to-one、many-to-many
- 帧的连续性:contiguous(连续)与 non-contiguous(非连续)
方法
核心思路是把绘画过程”帧化”,再重新利用视频扩散模型学习”集合到集合”的映射。
帧化表示
将一段有 \(s_{max}\) 步的绘画过程中,第 \(s\) 步的画布记作 RGB 图像 \(X_s\)。约定 \(X_0\) 是纯空白图、\(X_{s_{max}}\) 是成品。每一步 \(s\) 称为一个 operation step,每张画布 \(X_s\) 称为一帧。
关键设计是固定最大步数 \(s_{max}=1000\):从位置编码(PE)角度看,这样保证所有成品都对应确定的 PE 向量。实际步数少于 1000 时取最近邻采样;多于 1000 时用随机跳步采样出 1000 步作为数据增强。
绘画过程被统一形式化为一个集合到集合映射 \(F\):
\[F : \{X_{s_1}, \dots, X_{s_n},\ s_1, \dots, s_n,\ q_1, \dots, q_m\} \mapsto \{X_{q_1}, \dots, X_{q_m}\}\]
即根据给定的源帧 \(\{X_{s_1}, \dots, X_{s_n}\}\) 及其源步索引 \(\{s_1, \dots, s_n\}\),估计查询步 \(\{q_1, \dots, q_m\}\) 对应的查询帧。源/查询步以及数量 \(m, n\) 都是任意的。
flowchart LR
A["源帧 Xs + 源步索引 s"] --> C["Partitioned 3D VAE 编码"]
B["查询步索引 q"] --> D["Causal projection 步索引投影"]
C --> E["拼接潜变量 (源部分 timestep 置零)"]
D --> E
F["文本 prompt (WD14 tagger)"] --> G["Diffusion Transformer<br/>(CogVideoX / LTXVideo)"]
E --> G
G --> H["只对 query 部分去噪 (flow match)"]
H --> I["Partitioned VAE 解码"]
I --> J["估计的查询帧 X̃q"]
重新利用视频扩散模型
基础是 Diffusion Transformer(DiT)+ rectified-flow 调度。噪声潜变量为:
\[z_{t_i} = (1-t_i) z_0 + t_i \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)\]
VAE 压缩:\(z_0 = E(X)\),\(\hat{X} = D(z_0)\)。以 LTXVideo 为例,图像序列 \(X \in \mathbb{R}^{f \times h \times w \times 3}\) 被压缩为 \(z_0 \in \mathbb{R}^{\frac{f}{8} \times \frac{h}{32} \times \frac{w}{32} \times 128}\)。
关键设计一:Partitioned 3D VAE(分区 3D VAE)
视频扩散一般用带因果卷积的 3D VAE 把多帧一起编码,能保持时序一致,但编码”非连续帧”时会引入鬼影伪影(ghosting)。作者的做法是:当帧索引 \(s_{1\dots n}\) 含非连续子序列时,先切分成若干连续段 \(\Omega_{1\dots k}\),各段独立编码后再拼接:
\[z = [E(X_{\Omega_1}) \ \dots \ E(X_{\Omega_k})]\]
若某段只有一帧(或少于 VAE 因果卷积最小帧数),用因果卷积做前缀复制填充,\(n\) 帧编码成 \(\lfloor 1 + \frac{n-1}{8} \rfloor\) 个潜变量。
关键设计二:Causal projection 条件化操作步
每帧 \(X_s\) 配一个步索引 \(s\);多帧经 3D VAE 编码成潜变量立方体后,步索引需投影以匹配潜变量的时间维度。作者用一组因果 2D 卷积层,其填充配置与 3D VAE 完全一致(对每个核大小 \(k_s\),因果填充总是把首元素填充 \(k_s-1\) 次),保证无论 \(n\) 多大,第一个向量始终只编码首个输入的特征。投影层用零初始化的线性层门控,再加到 DiT 的 timestep embedding 上。
源帧与查询帧的条件化
源帧与查询帧始终被视为分区 VAE 里的”非连续段”,各占独立的潜变量时间条目。训练时把源帧部分的扩散时间步 \(t_i\) 用掩码 \(M(t_i)\) 置零,使模型只对查询帧去噪、把源帧当参考。联合学习目标:
\[\mathbb{E}_{z, c, s, t_i, \epsilon} \left\| (\epsilon - z) - G_\theta\left(z_{M(t_i)}, M(t_i), c, s\right) \right\|_2^2\]
关键设计三:额外图像模型变体与高效推理调度
虽然视频扩散模型已能处理所有查询,但”单源帧→单查询帧”这类高频查询(如从草图直接查成品、从成品查草图)可用专门的图像扩散模型提高质量、降低开销。作者训练了独立的 SDXL 图像模型:给 SDXL 输入卷积加 4 个零初始化通道以接收源帧潜变量,并扩展 timestep embedding 接收源步 \(s\) 和查询步 \(q\) 两个标量。
默认推理调度:(1) 源与查询都是单帧 → 用图像模型;(2) 源为单帧、查询是大于 500 帧的大集合 → 先用图像模型每 200 步生成一个中间帧,再用视频模型补齐区间内其余帧;(3) 其余所有查询 → 只用视频模型。
数据与实现
数据于 2018 冬至 2020 秋收集,逐一征得约 19 位艺术家同意(半数以上为艺术学校学生,其余为职业艺术家)。内容涵盖人物、非人(动物/机器人)、场景、植物、玩具、奇幻元素,风格以商业数字绘画为主,兼有水彩、涂鸦、超现实等。用 LTX 的准则检测长视频中的突变以切镜头,过滤变化不显著的镜头。默认上下文长度取 145 帧,长于 145 帧的镜头用随机跳步采样(每镜头最多采样 32 次),最终得到 2 万个视频片段。
训练用 Adafactor 优化器、学习率 1e-5、bf16 精度,设备为 8×H100 80G。训练了 LTXVideo(约 4 天)、CogVideoX 1.5(约 9 天,上下文长度改为 145 帧)两个视频模型及 SDXL 图像模型(约 3 天)。视频模型用 512px 分辨率桶,SDXL 用 1024px。梯度裁剪范数 0.5,不用 EMA。prompt 一律用 WD14 tagger 从最大步索引的输入帧生成。
实验结果
定量重建指标(Table 1)
在训练时未见过的 5% 留出子集上评测:
| 方法 | PSNR ↑ | SSIM ↑ | LPIPS ↓ |
|---|---|---|---|
| Zhao et al. 2020 | 12.27 | 0.4847 | 0.6851 |
| Song et al. 2024 | 13.52 | 0.4901 | 0.6143 |
| Ours (LTXVideo) | 16.31 | 0.6510 | 0.4259 |
| Ours (CogVideo) | 17.04 | 0.6712 | 0.4022 |
| Ours (image model, SDXL) | 15.98 | 0.5995 | 0.4515 |
CogVideo 骨干在三项指标上全面最优;三个变体都超过此前方法。InversePainting 因基于分割式方法、与本数据集不兼容而被排除。
用户研究(Table 2)
选 50 张野外数字绘画(模型未见过),13 名参与者(1 名学生、8 名众包工人、4 名有经验的助理艺术家)用各配置生成过程序列,用平均偏好率作指标(重复 5 轮取均值):
| 候选 | 质量 ↑ | 响应性 ↑ |
|---|---|---|
| Zhao et al. 2020 | 1.20±0.0% | / |
| Song et al. 2024 | 3.61±1.21% | / |
| Ours (LTXVideo) | 18.07±4.3% | 27.49±9.7% |
| Ours (CogVideo) | 20.48±5.2% | 8.46±6.5% |
| Ours (LTXVideo + image model) | 26.51±6.1% | 47.43±9.1% |
| Ours (CogVideo + image model) | 30.12±5.8% | 16.62±5.2% |
CogVideo 骨干感知质量最高但速度较慢;响应性上用户更偏好速度更快的 LTXVideo;所有加了”+ image model”调度的配置在质量与响应性上都优于其余。
消融与运行时
- Partitioned VAE:去掉该设计后,非连续帧编码会因潜空间时间压缩产生模糊/鬼影;启用后各段独立编码,重建干净。
- 运行时(Nvidia L40S,无高级优化,单位秒,Table 3):
| 模型 | 1 帧 | 65 帧 | 129 帧 |
|---|---|---|---|
| CogVideoX 1.5 | 7.2 | 193.1 | 327.4 |
| LTXVideo | 4.8 | 8.4 | 41.3 |
| SDXL (图像模型) | 3.9 | 251.2 | 495.1 |
LTXVideo 在多帧场景效率显著更优(65 帧约 0.13s/帧),SDXL 只适合单帧。
- 突变行为统计(Table 4,每作品平均次数,人工计数 50 样本):模型生成过程与真人在”元素可见性变化、缩放变形、导入/删除、色彩曲线调整、图层顺序变化”等突变行为上频率接近(真人总计 13.1±0.7,本方法 11.4±0.8),说明模型学到了绘画的过程性行为。
附加应用
- 草图生成:把目标步设为低值(如 \(s=50\))并改随机种子,可生成带不同艺术决策的草图,比传统边缘检测更贴近真实绘画的结构抽象。
- 风格泛化:对梵高、莫奈等非数字绘画,模型也能重建过程,呈现”先铺色块、后加细笔触”的模式。
亮点与局限
亮点:
- 把”生成过去与未来”统一形式化为 set-to-set 映射,覆盖一对一/多对多、连续/非连续的任意查询,问题定义清晰。
- Partitioned 3D VAE 巧妙解决非连续帧编码鬼影;causal projection 让步索引精确对齐潜变量时间维度,训练更稳。
- 多模型变体 + 分层推理调度,在质量与交互响应性之间取得平衡,落地为可交互前端。
局限:
- 对与训练数据风格差异过大的输入(真实照片、UI 设计布局)会出现风格漂移、文字/结构渲染错误。
- 为真实照片重建绘画过程属于本质病态问题,最优映射分布可能不存在;扩数据集只能部分缓解。
延伸思考
- 该工作把”时间轴生成”从自然视频迁移到”抽象的创作步索引轴”,\(s_{max}=1000\) 的固定步长归一化是一个很实用的技巧,值得在其他”过程/历史生成”任务(3D 建模历史、文档编辑历史)借鉴。
- 集合到集合 + 掩码 timestep 的条件化方式,本质上把源帧当”零噪声参考”,与图像编辑里的 inpainting 条件化思路相通,可推广到”任意子集已知、补全其余”的更一般序列补全问题。
- 数据依赖真人录屏且规模有限(2 万片段),泛化边界明显;若能结合合成绘画过程或程序化笔触数据,或可拓宽风格覆盖并缓解病态输入问题。