FlowMo:Transformer 通过 flow 重建图像
交互教程
FlowMo 是由压缩图像编码提供条件、使用 Transformer flow 解码器重建的直接例子。
之前已经能做什么
Section titled “之前已经能做什么”TiTok 证明全局 slots 可替代空间瓶颈;DiTo 证明迭代去噪可训练图像 tokenizer。FlowMo 结合 Transformer 离散瓶颈与 flow 解码器,并通过后训练改善采样重建。这是理解设计的对照,不表示架构相同。
改变了什么,为什么
Section titled “改变了什么,为什么”双流 Transformer 在图像 patch 与 latent queries 间交换信息。无查表量化 LFQ 将编码输出转为二进制码。另一个双流 Transformer 根据带噪图像、编码和时间预测像素空间速度。重建需要采样条件分布,不是一次调用直接得到 RGB。
阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。
双流编码器
queries 汇聚图像信息,LFQ 将取值转为 bit。
z = encoder(image_patches,latent_queries)
c = lfq(z)条件 flow 解码器
图像坐标与 slot 身份采用不同位置约定。
v = decoder(noisy_image,c,t)
x_estimate = noisy_image - t*v迭代重建
每个积分步都调用 Transformer。
state = noise
for t,t_next in schedule:
state += (t_next-t)*decoder(state,c,t)逐步理解机制
Section titled “逐步理解机制”固定代码定义 xₜ=(1−t)x+tε、目标 ε−x,以及单步干净估计 xₜ−t v。采样向更小 t 移动。演示完整采用这套约定。论文部分公式采用不同符号写法,不能与代码更新混抄。
code 数必须说明单位。FlowMo-Hi 内部有 256 个 slot,每个 56 bit;结果表将其计为 1024 个 14-bit code。两种描述均为 14336 名义 bit,在 256² 像素上是 0.21875 bpp,尚未考虑熵编码或封装。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
直线路径速度已知;学习模型需要估计速度,本演示不衡量其误差。
| 量 | 值 |
|---|---|
| t | 0.500 |
| x_t = (1 − t) × 2 + t × (−1) | 0.500 |
| v = ε − x | -3 |
| Δt = −t / steps | -0.100 |
| 一次反向更新 | 0.800 |
训练与采样的区别
Section titled “训练与采样的区别”阶段 1A 联合训练 tokenizer,使用 flow loss、单步 LPIPS-VGG 项及 LFQ 项。阶段 1B 冻结编码器,通过八步重建链反向传播,结合 ResNet 感知目标与 flow loss。后续独立 MaskGIT 建模 codes。因此,无 GAN 不等于只有 diffusion L2;八步后训练链也不自动等于评估步数。
论文证据(并非本地复现)
Section titled “论文证据(并非本地复现)”| 条件 | 指标 | 数值 | 解释 |
|---|---|---|---|
| ImageNet-256,Lo,256 × 18 bit | rFID ↓ / PSNR ↑ | 0.95 / 22.07 | 5 万验证图像;论文主表 |
| ImageNet-256,Hi,1024 × 14 bit | rFID ↓ / PSNR ↑ | 0.56 / 24.93 | code 单位不同于内部 slot 数 |
这些结果不能证明什么
Section titled “这些结果不能证明什么”报告的 Lo/Hi 编码器加解码器约 945M 参数,规模较大。质量比较须计入采样调用、随机种子和后训练。重建保真度不能证明文字对齐。代码使用多轴 RoPE,但广播 latent 索引代表 slot 身份,并非物理三维点。
重建采样时 flow 解码器能看到原始干净图像吗?
它收到压缩编码和带噪状态;干净图像是训练目标,不是采样输入。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。