ICCV 2017 · 论文精读答辩

Pixel Recursive
Super Resolution

像素递归超分辨率 · 给“马赛克”般的超低清图脳补出清晰细节
Ryan Dahl · Mohammad Norouzi · Jonathon Shlens
Google Brain
FUN FACT 第一作者 Ryan Dahl 正是 Node.js / Deno 的作者
背景 · 多模态难题 方法 · 条件网络 + 先验网络 实验 · 人类感知评估
CORE TASK · 巨幅放大
8×832×32
边长放大 4×,像素增至 16 倍 — 细节已不存在,必须凭先验“画”出来
CORE INSIGHT · 关键洞察
逐像素递归采样 替代 回归平均
超分是多模态问题;MSE 把所有可能糊成一团,自回归则每次给出一个清晰答案
RESULT · 人类感知评估
27.9% 被当成真照片
(满分 50%)
远超 GAN 8.5% 与 ResNet 回归 2–4%
PART 01 / 04

研究背景

高倍超分为什么这么难 · 一张小图对应无数张大图
03

问题定义 · 把马赛克般的 8×8 小图还原成清晰大图

通俗讲,这就是「去马赛克」:把 8×8 人脸放大到 32×32。低倍放大已成熟,难点在极小输入 + 极大放大比
输入
8 × 8 px
头发、皮肤纹理等细节已彻底丢失
输出
32 × 32 px
模型须凭先验合成出全新的真实细节
关键认知:模型并非「恢复」原始信息,而是像你画我猜—— 先猜「这是一张脸」,再凭经验把五官想象着画出来。本质是合理的脳补,而非还原真相。
Figure 1 · CelebA 人脸 · 8×8 输入 / 模型采样 / 真实图(最下排原图的嘴型、眼妆已与采样不同)
Figure 1 人脸超分辨率示例
04

相关工作 · 超分从插值走向概率生成

01 · 插值 / 线性模型
双三次等插值易实现、速度快,但表达能力弱,难以预测高频纹理,结果天然偏糊。
02 · 手工先验与 patch
稀疏先验、GMM、边缘梯度、patch 检索与字典滤波能补细节,但依赖人工设计与近邻匹配。
03 · CNN 回归路线
SRCNN、VDSR、SRResNet 用深层 CNN 提升 pSNR / SSIM;但 MSE 目标仍倾向输出条件均值。
04 · 感知损失 / GAN
perceptual loss 能减轻逐像素损失的模糊;论文主要质疑 GAN:训练不稳、易 mode collapse、概率解释弱。
05 · PixelRNN / PixelCNN
把图像看成按顺序生成的像素序列,用对数似然训练;如果训练样本有多种合理答案,模型必须给每一种都分配概率。
本文切入点:高倍超分不是找一个平均答案,而是从条件分布里采样一个可信答案。
为什么选择 PixelCNN
likelihood
可用验证集 log probability 比较模型。
diversity
不会只学会骗判别器,而是覆盖训练数据里的多种模式。
conditioning
再接上低清输入 x,得到“有条件的”像素递归生成。
脉络来自论文 Related Work:interpolation / priors / patch dictionary / CNN / perceptual & GAN / PixelCNN。
05

文献定位 · 前人解决了什么,本文补了什么

插值 / 先验 / patch
bicubic · sparsity / GMM · patch dictionary
速度快、可解释;但高频细节依赖手工假设或近邻检索。
CNN 回归
SRCNN · VDSR · SRResNet
pSNR / SSIM 持续提升;但 MSE 倾向学习“平均脸”。
感知 / GAN
perceptual loss · adversarial loss
感知损失是有效改进;GAN 更锐利但不稳,且难给概率解释。
自回归生成
PixelRNN · PixelCNN
能用 likelihood 覆盖多种样本;关键是接入低清条件 x。
本文定位:保留 CNN 条件信息 + PixelCNN 像素先验
p(y_i | x, y_<i) · 把高倍超分改成可采样的条件分布
研究缺口:条件分布
是否强依赖低清输入 x 是否覆盖多种合理答案 单一 多样 插值 / patch 利用 x,但偏确定 CNN 回归 指标高,易平均 perceptual loss 减轻模糊 GAN 锐利但不稳 PixelRNN PixelCNN 概率图像先验 本文要补的缺口 既看低清图,也能采样多解 目标:条件化的概率超分模型
06

PixelRNN / PixelCNN 是什么 · 把图像当成一串像素来生成

自回归图像模型的直觉
1 · 先规定像素顺序 123456 789101112 2 · 预测当前像素时只能看过去 i 蓝色可见,灰色不可偷看 3 · 两种实现 PixelRNN RNN 隐状态传递上下文 按行 / 列扫过图像 表达强,但速度较慢 PixelCNN masked convolution 只看已生成像素 训练并行,采样逐像素
一句话:PixelRNN / PixelCNN 都是在学“下一个像素的概率分布”。
为什么叫自回归
先生成前面的像素,再把它们作为条件预测下一个像素。
为什么能生成多样性
每一步输出的是概率,不是唯一数值;不同采样路径会形成不同高清结果。
和超分的关系
原始 PixelCNN 是图像先验;本文把低清图 x 加进条件里,变成条件生成。
07

高倍放大的本质困境 · 信息不足,答案不止一个

高倍放大时,许多细节在输入里根本不存在。任务从「恢复」变成合成可信细节:一张小图对应无数张大图。
8×8 马赛克输入
可能 A
浓眉 · 直发 · 偏瘦脸型
可能 B
淡眉 · 卷发 · 圆润脸型
可能 C
不同肤质 · 不同光照
↑ 三张高清结果降采样回去都得到同一张马赛克 —— 它们同样「正确」,构成多个分立的解(多模态)。
结论:好的超分模型必须能对多种可能性建模、每次给出清晰的一个,而不是把它们平均成一团模糊。
08

像素独立模型为何会糊 · 逐点损失把可能平均掉

像素独立模型把整张图拆成许多小问题:每个像素只看低清输入 $x$,不看邻居。
$$\log p(y\mid x)=\sum_{i=1}^{3M}\log p(y_i\mid x)$$
核心问题:每个像素各自投票,没人负责让边缘、鼻梁、阴影对齐。
独立像素模型的直觉
1 低清输入 2 每个像素单独预测 3 结构被平均 x p(y1 | x) p(y2 | x) p(y3 | x) 像素之间互不参考 多条边缘被平均 结构变成模糊纹理
高斯 / L2 回归
固定方差时,最大似然等价于最小化 MSE,多种可能会被压成均值。
$$\log p(y_i\mid x)=-\tfrac{1}{2\sigma^2}\lVert y_i-C_i(x)\rVert_2^2 + \text{const}$$
多项式 / 交叉熵
单点 softmax 能表达多峰,但不知道邻近像素选择了哪条结构线。
$$p(y_i{=}k\mid x)=\frac{\exp\{C_{ik}(x)\}}{\sum_{v}\exp\{C_{iv}(x)\}}$$
09

一个玩具实验讲清问题 · MNIST 角落数据集

把一个 MNIST 数字随机放到左上或右下角(各 50%)。数据集中从不同时出现两个数字。
L2 / 交叉熵
预测出两个角各一半的混合 — 训练集里不存在的“鬼影”。
PixelCNN
建模像素依赖,随机但互斥地把数字放进某一个角。
Figure 2 · MNIST 角落 · 数据构造(上)与各模型样本(下)
Figure 2 MNIST corners 多模态实验
PART 02 / 04

方法

条件网络 + 先验网络 · 一个看全局、一个管细节,logits 相加
11

动态演示 · 让任何人都看懂逐像素递归生成

INTERACTIVE DEMO · 占位区
交互式动态演示
将嵌入此处
由 Claude Code 完成后,把演示 HTML 以 <iframe> 嵌入本页,或直接替换本 section 内容。
放在方法开头 —— 先建立直觉,再讲公式:高清像素是一个接一个、按顺序“摇骰子”采样出来的;每落一个新像素,都同时参考已画好的像素那张马赛克输入
建议演示要素
① 一个空网格按 Z 字顺序逐格点亮
② 当前像素弹出概率条 → 抽样落子
③ 切换温度 τ,看分布变尖/变平
④ 同输入多次运行 → 不同结果(多样性)
就像「你画我猜」:先猜出大概是张脸,再顺着已画好的笔触一点点补细节 —— 没有 ML 背景也能秒懂为什么这样能避免“模糊平均”
12

核心思路 · 用链式法则把联合分布拆成逐像素条件

链式法则给生成过程排队:当前像素不仅看 $x$,也看已经画好的 $y_{\lt i}$。
$$\log p(y\mid x)=\sum_{i=1}^{M}\log p(y_i\mid x,\,y_{\lt i})$$
读公式
$y_{\lt i}$ 是已生成像素;下一步就在这些条件下抽样。
为什么不糊
前面一旦选定一条边缘,后续像素就沿着它继续生成。
链式展开:从整图分布到逐像素决策
按固定顺序生成 每一步的条件会变多 PixelCNN 实现 y1, y2, ..., yi p(y1 | x) p(y2 | x, y1) p(yi | x, y<i) masked CNN 只看 前面像素 关键变化:当前像素会参考已经生成的像素 一旦前面选定一条边缘,后面的像素就沿着同一条边缘继续生成
13

网络结构 · 条件网络 + 先验网络的后期融合

条件网络 · CNN
只看低清输入 $x$,负责全局结构:朝向、轮廓、场景布局。
先验网络 · PixelCNN
只看已生成像素 $y_{\lt i}$,负责局部一致性:纹理、边缘、阴影继续延续。
$$p(y_i\mid x,y_{\lt i})=\mathrm{softmax}\big(A_i(x)+B_i(y_{\lt i})\big)$$
公式怎么读
低清输入 x 已生成像素 y<i 条件 logits A_i(x) 先验 logits B_i(y<i) + soft p(yi)
Figure 3 · 条件网络(CNN)+ 先验网络(PixelCNN)→ logits 相加 → softmax
Figure 3 网络结构图
后期融合:两套 logits 在 softmax 前相加:全局结构与局部纹理先合并,再采样。
14

训练的坑 · 条件网络被忽略,补一项辅助损失

现象:已生成像素信号更强,低清输入 $x$ 容易被忽略。
朴素目标 $O_1$ · 两个网络一起交作业
$$O_1=\sum_i \mathbf{1}[y_i^*]^{\!\top}(A_i+B_i)-\mathrm{lse}(A_i+B_i)$$
只看 $A_i+B_i$。先验网络够强时,条件网络可以偷懒。
改进目标 $O_2$ · 给条件网络单独打分
$$O_2=O_1+\sum_i \mathbf{1}[y_i^*]^{\!\top}A_i-\mathrm{lse}(A_i)$$
新增项只考 $A_i(x)$,逼条件网络从低清输入里学结构。
辅助损失:把梯度重新拉回条件网络
朴素目标 O1 改进目标 O2 低清输入 x 已画像素 条件网络 A_i(x) 先验网络 B_i 只检查 A_i + B_i A 分支可能偷懒 低清输入 x 条件网络 A_i(x) 额外监督 A_i O2 = O1 + 单独考 A_i:梯度明确回到条件网络
一句话:给条件网络一个单独的作业,它就不会被强势的先验网络淹没。
15

采样与实现 · 逐像素生成、温度 τ 与架构参数

采样过程
逐像素循环:采一个 → 喂回网络 → 再采下一个
$$p_\tau=\frac{p^{1/\tau}}{\lVert p^{1/\tau}\rVert_1}$$
$\tau$ 控制采样保守程度;论文常用 $0.8\!\sim\!0.9$。
条件网络
SRResNet 风格 · 18–30 个 ResNet 块 · 输出 256 类 logits。
先验网络
20 个 gated PixelCNN 块 · 32 通道 · logits 相加后 softmax。
代价:32×32 采样约需 40 秒;训练用 TensorFlow + 8 GPU 同步 SGD。
温度 τ:控制“敢不敢选第二可能”
当前像素 输出离散概率 p = [0.42, 0.25, 0.18, 0.15] 候选值概率不同 τ = 0.5 尖锐 · 更像贪心 τ = 0.8 平衡 · 论文常用 τ = 1.2 更随机 · 细节更飘 温度是在保守与多样之间调采样策略
PART 03 / 04

实验与评估

画得像不像,让人来判断 · 传统指标在高倍超分下集体失灵
17

实验设置 · 两个数据集 + 三个对照基线

数据集 · CelebA
中心裁剪的名人人脸
双三次插值降采样为 8×8 输入、32×32 输出。
数据集 · LSUN Bedrooms
卧室室内场景
同样 8×8 → 32×32,验证方法不止适用于人脸。
三个对照基线
01 · Nearest N.
最近邻样例检索 — 在训练集里找最像的低清图,返回其高清版。
02 · ResNet L₂
SRResNet 风格深网,MSE 目标 — 代表“单峰、像素独立”的 SOTA 回归。
03 · GAN
对抗损失 + 一致性损失(srez 实现)— 仅在人脸上对比,卧室不具竞争力。
评估三件套:相似度一致性人类二选一(% Fooled)。
18

定性结果 · 8×8 还原出可信的人脸与卧室

Figure 1 · CelebA 人脸
人脸超分结果
Figure 4 · LSUN 卧室
卧室超分结果
模型合成出真实的发丝、皮肤与材质,而非模糊的平均脸。
中列为模型采样,右列为真实图 — 两者气质相近但并不相同,正是多模态该有的样子。
人脸与卧室共用同一套逻辑,说明方法不依赖特定领域先验。
19

多样性 · 同一张低清图采样出不同的高清结果

左列是同一个低清输入,右侧四列是 τ = 0.8 下的多次采样
这正是目标
每次采样都给出一个清晰、可信但彼此不同的解 — 模型覆盖了多模态分布,而不是塌缩到单一答案。
与 GAN 的区别
对数似然训练不会模式崩溃,因此多样性来得自然、可控。
Figure 5 · 左:低清输入 · 右四列:τ=0.8 的多次采样
Figure 5 采样多样性
20

模型横向对比 · “指标好”与“看着好”的反直觉错位

Figure 6 · 各方法对比(图下数字为负对数概率 NLL,越小=模型认为概率越高)
Figure 6 各超分方法对比
反直觉:NLL 最低(模型最“自信”)的恰是 bicubic 与贪心解码 — 画质却最差、最模糊。可见似然/常规指标并不等于感知质量
21

定量指标 · pSNR / SSIM 与人眼判断脱节

Table 1 (上) · CelebA 人脸
CelebApSNRSSIMMS-SSIM一致性% Fooled
Bicubic28.920.840.760.006
Nearest N.28.180.730.660.024
ResNet L₂29.160.900.900.0044.0
GAN28.190.720.670.0298.5
本文 τ=1.029.090.840.860.00811.0
本文 τ=0.929.080.840.850.00810.4
本文 τ=0.829.080.840.860.00810.2
Table 1 (下) · LSUN 卧室
LSUNpSNRSSIMMS-SSIM一致性% Fooled
Bicubic28.940.700.700.002
Nearest N.28.150.490.450.040
ResNet L₂28.870.740.750.0032.1
本文 τ=1.028.920.580.600.01617.7
本文 τ=0.928.920.590.590.01722.4
本文 τ=0.828.930.590.580.01827.9
pSNR/SSIM:回归与 bicubic 最高。% Fooled:本文最好,说明传统指标不等于感知质量。
22

人类感知评估 · 最高骗过 27.9% 的观察者

评估协议
众包被试看到一张真图和一张模型输出,限时 1 秒回答“哪张是相机拍的”。若模型足够真实,被试只能随机猜,理论上 50% 会被模型骗过。
WORKERS
283
名众包工人
RANDOM
50%
完全分不清的上限
这页的重点不是“27.9% 已经完美”,而是 感知质量排序与 pSNR/SSIM 排序明显不同:传统指标高的回归模型,骗不过人眼。
% Fooled · 被误认为真实照片的比例
条形越长,代表样本越接近人眼真实感;虚线为 50% 随机猜测上限。
27.9%
本文 LSUN · τ=0.8
50% 随机猜测 0 20 40 50 ResNet L2 GAN 本文 · CelebA 本文 · LSUN 2-4% 8.5% 11.0% 27.9% 约为 GAN 的 3.3 倍
PART 04 / 04

总结

贡献 · 局限 · 留给后来者的思想遗产
24

批判性讨论 · 来自 Hacker News 与同行的质疑

质疑一 · 脑补 ≠ 取证
它是在合成细节,不是提取真相;绝不能用于身份识别 / 取证
质疑二 · 结果仍是「玩具」
输出仅 32×32;与后续 GAN 路线相比,画质并不惊艳。
质疑三 · 对比不够强
GAN 基线较弱;还需要与 SRGAN 等强基线正面对比。
质疑四 · 说服力与细节
合成信息的有效性论证仍弱,细节经不起严格审视。
我的判断:价值在于把超分表述为概率多模态问题,并提醒我们反思传统指标。
25

贡献 · 局限 · 思想遗产

贡献
  • 把高倍超分刻画为多模态预测
  • 像素递归生成清晰、多样样本
  • 辅助损失防止条件被忽略
  • 证明 pSNR/SSIM 与感知质量脱节
局限
  • 采样 — 朴素实现一张 32×32 约 40 秒(二次复杂度)
  • 分辨率仍很低(32×32),距实用尚远
  • 骗过率最高 27.9%,离 50% 的“完全可信”仍有距离
  • 本质是「脳补」而非恢复 — 生成的是合理猜测,不能用于取证 / 身份识别
思想遗产
  • 自回归 + 条件融合成为条件生成的通用范式
  • “别在像素上求平均,对分布采样”影响后续生成模型
  • 对评估指标的反思,呼应了 感知度量与人类评估的兴起
一句话总结:超分不是“恢复”,而是合成可信的一种可能
Dahl, Norouzi & Shlens · Pixel Recursive Super Resolution · ICCV 2017 · 谢谢聆听