第五章:感知失真度量与率失真感知权衡
本章讨论超越MSE的失真度量,特别是与人类感知相关的失真度量。我们将探索率失真感知(Rate-Distortion-Perception, RDP)三角权衡理论,这是理解现代生成模型和图像压缩的关键。
学习目标:
- 理解MSE的局限性和感知失真的必要性
- 掌握SSIM、LPIPS等感知度量
- 了解率失真感知(RDP)不可能三角
- 建立感知质量与失真、码率之间的权衡直觉
5.1 传统失真度量的局限性
5.1.1 MSE的问题
均方误差(MSE)是最常用的失真度量:
$$\text{MSE} = \frac{1}{N} \sum_{i=1}^N (x_i - \hat{x}_i)^2$$ 优点:
- 数学性质好(可微、凸)
- 计算简单
- 有清晰的率失真理论(高斯源)
致命缺陷:与人类感知质量相关性差
示例:
- 图像整体平移1像素:MSE可能很大,但视觉上几乎无差别
- 高斯模糊 vs 高频噪声:相同MSE,但感知质量差异巨大
- 颜色轻微失真 vs 结构严重失真:MSE相同,但后者感知上更差
根本原因:MSE对所有像素一视同仁,忽略了人类视觉系统(HVS)的特性:
- 对高频细节不敏感
- 对边缘和结构很敏感
- 具有掩蔽效应(亮区的噪声不易察觉)
详细分析MSE的缺陷:
-
空间不变性假设: - MSE假设所有位置的误差同等重要 - 实际上:面部区域的失真 > 背景的失真;边缘的失真 > 平坦区域的失真 - 人眼注意力集中在语义重要区域(人脸、文字、主体),MSE无法区分
-
频率不变性假设: - MSE在空域计算,对所有频率一视同仁 - 人类视觉系统的对比敏感度函数(CSF)表明:对中频最敏感,对极低和极高频不敏感 - 示例:天空中的高频噪声 vs 人脸上的低频模糊,MSE相同但后者更严重
-
像素独立性假设: - MSE逐像素计算,忽略像素间关系 - 人眼感知结构信息:边缘、纹理、几何形状的改变比像素值改变更显著 - 示例:将图像所有像素随机微调 vs 破坏一条重要边缘,MSE可能相同但后者感知更差
-
忽略上下文和掩蔽效应: - 亮度掩蔽:亮区域的噪声不易察觉 - 对比度掩蔽:高对比度区域的失真不易察觉 - 纹理掩蔽:复杂纹理可以"隐藏"噪声 - MSE无法捕捉这些心理物理现象
具体数值例子:
考虑256×256灰度图像(值域[0, 255]):
| 失真类型 | MSE | PSNR (dB) | 感知质量 |
| 失真类型 | MSE | PSNR (dB) | 感知质量 |
|---|---|---|---|
| 整体+1灰度值 | 1 | 48.1 | 完全察觉不到 |
| 高斯模糊(σ=1) | ~50 | 31.1 | 轻微模糊,可接受 |
| 块效应(8×8) | ~50 | 31.1 | 明显压缩伪影,难以接受 |
| 随机噪声(σ=7) | ~50 | 31.1 | 颗粒感,但结构清晰,尚可 |
| 破坏所有边缘 | ~50 | 31.1 | 严重失真,完全不可接受 |
观察:相同MSE(~50)的5种失真,感知质量从"完全察觉不到"到"完全不可接受"跨越巨大范围!
MSE与感知的相关性研究:
在大规模图像质量评估数据库(如TID2013、LIVE)上:
- MSE/PSNR与人类主观评分(MOS)的Spearman相关性:约0.6-0.7
- SSIM的相关性:约0.8-0.85
- LPIPS的相关性:约0.85-0.9
MSE的相关性显著低于现代感知度量。
为什么MSE仍然广泛使用?
尽管缺陷明显,MSE仍在实践中大量使用,原因包括:
- 历史惯性:几十年的标准和基准都基于PSNR
- 计算简单:无需深度网络,可以实时计算
- 理论完善:率失真理论主要围绕MSE建立
- 可优化性:凸函数,易于优化,收敛性好
- 无歧义性:不同实现结果一致,可重复
但在现代压缩和生成模型中,感知度量正在逐步替代MSE。
Rule of thumb:MSE适合作为"保真度"的粗略下界(确保不出现大误差),但不应作为唯一优化目标。实际系统应结合感知度量(SSIM、LPIPS)或人类评分。
5.1.2 PSNR的同样问题
峰值信噪比(PSNR)定义为: $$\text{PSNR} = 10 \log_{10} \frac{\text{MAX}^2}{\text{MSE}}$$ 其中MAX是像素最大值(如8位图像MAX=255)。
PSNR本质上是MSE的对数变换,具有同样的局限性。虽然在压缩领域广泛使用(因为历史和简单性),但作为感知质量指标并不理想。
Rule of thumb:PSNR > 40 dB通常视觉上很好,30-40 dB可接受,< 30 dB质量差。但这只是粗略估计,具体取决于内容。
5.2 感知失真度量
5.2.1 SSIM(结构相似性)
SSIM(Structural Similarity Index)考虑图像的亮度、对比度、结构三个成分: $$\text{SSIM}(x, y) = \frac{(2\mu_x\mu_y + C_1)(2\sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1)(\sigma_x^2 + \sigma_y^2 + C_2)}$$ 其中:
- $\mu_x, \mu_y$:局部均值(亮度)
- $\sigma_x^2, \sigma_y^2$:局部方差(对比度)
- $\sigma_{xy}$:局部协方差(结构)
- $C_1, C_2$:稳定性常数
值域:SSIM $\in [-1, 1]$,完全相同时SSIM = 1
失真形式:$D_{\text{SSIM}} = 1 - \text{SSIM} \in [0, 2]$
优势:
- 与人类感知相关性更好(比MSE提升显著)
- 对平移、旋转等几何变换不敏感
- 关注结构信息
局限:
- 仍是手工设计的度量
- 对某些失真类型(如纹理丢失)不够敏感
SSIM的三个成分分解:
SSIM可以分解为三个独立比较函数的乘积: $$\text{SSIM}(x, y) = l(x,y)^\alpha \cdot c(x,y)^\beta \cdot s(x,y)^\gamma$$ 其中:
- 亮度比较:$l(x,y) = \frac{2\mu_x\mu_y + C_1}{\mu_x^2 + \mu_y^2 + C_1}$
- 对比度比较:$c(x,y) = \frac{2\sigma_x\sigma_y + C_2}{\sigma_x^2 + \sigma_y^2 + C_2}$
- 结构比较:$s(x,y) = \frac{\sigma_{xy} + C_3}{\sigma_x\sigma_y + C_3}$
标准SSIM取 $\alpha = \beta = \gamma = 1$, $C_3 = C_2/2$。
各成分的物理意义:
-
亮度成分 $l(x,y)$: - 衡量平均灰度的相似性 - 对整体明暗变化敏感 - 例子:图像过曝或欠曝会降低 $l$
-
对比度成分 $c(x,y)$: - 衡量标准差(对比度)的相似性 - 对整体对比度拉伸/压缩敏感 - 例子:去雾算法通常增加对比度
-
结构成分 $s(x,y)$: - 衡量归一化后的相关性 - 去除了亮度和对比度影响,只看"形状" - 这是SSIM最核心的创新,捕捉结构信息
计算细节:
实际应用中,SSIM在局部窗口(patch)上计算,然后平均: $$\text{MSSIM}(X, Y) = \frac{1}{M} \sum_{i=1}^M \text{SSIM}(x_i, y_i)$$ 其中 $x_i, y_i$ 是第 $i$ 个窗口(通常 11×11,使用高斯窗)。
稳定性常数的选择:
- $C_1 = (K_1 L)^2$,$K_1 = 0.01$
- $C_2 = (K_2 L)^2$,$K_2 = 0.03$
- $L$ 是动态范围(8位图像为255)
这些常数避免分母接近0时的数值不稳定。
SSIM vs MSE的对比:
| 特性 | MSE | SSIM |
| 特性 | MSE | SSIM |
|---|---|---|
| 计算复杂度 | O(N) | O(N·W²) (W=窗口大小) |
| 值域 | [0, ∞) | [-1, 1] |
| 完美匹配 | MSE=0 | SSIM=1 |
| 亮度不变性 | 否 | 近似 |
| 对比度不变性 | 否 | 近似 |
| 与感知相关性 | 0.6-0.7 | 0.8-0.85 |
SSIM的应用实例:
- 图像压缩评估:JPEG、WebP质量评估时,SSIM比PSNR更接近主观感受
- 视频质量监控:Netflix等流媒体使用SSIM的变体(如VMAF)评估视频质量
- 超分辨率:SR算法常用SSIM作为优化目标或评估指标
- 去噪:图像去噪算法的质量评估
SSIM的局限性案例:
尽管SSIM优于MSE,仍有局限:
- 纹理损失:去除细小纹理但保留结构,SSIM可能仍然很高
- 颜色失真:SSIM通常只在亮度通道计算,忽略色彩信息
- GAN生成图像:GAN生成的图像可能SSIM不高(逐点不准确),但感知质量好
Rule of thumb:
- SSIM > 0.95:几乎无法察觉的失真
- SSIM 0.90-0.95:轻微失真,高质量
- SSIM 0.80-0.90:可察觉失真,中等质量
- SSIM < 0.80:明显失真
SSIM适合评估传统压缩(JPEG、H.264)但对GAN-based方法仍有不足。
5.2.2 MS-SSIM(多尺度SSIM)
MS-SSIM在多个尺度(通过下采样)计算SSIM并加权平均: $$\text{MS-SSIM} = L_M^\alpha \cdot \prod_{j=1}^M C_j^{\beta_j} S_j^{\gamma_j}$$ 其中 $L, C, S$ 分别是亮度、对比度、结构分量,$M$ 是尺度数。
优势:捕捉不同尺度的结构信息,更接近人类多尺度视觉处理。
多尺度的动机:
人类视觉系统在多个空间尺度上处理图像:
- 粗尺度:识别整体结构、物体轮廓、场景布局
- 中尺度:识别纹理模式、局部对比度
- 细尺度:识别精细细节、边缘锐度
单尺度SSIM只能捕捉固定分辨率下的信息,MS-SSIM通过多尺度分析更全面地评估质量。
计算过程:
- 从原始分辨率开始(尺度1)
- 迭代下采样 $M-1$ 次(每次 2×2 下采样)
- 在每个尺度 $j$ 计算对比度 $C_j$ 和结构 $S_j$
- 仅在最粗尺度 $M$ 计算亮度 $L_M$
- 加权组合所有成分
标准参数设置:
- $M = 5$ 个尺度
- 权重:$\beta_1=\gamma_1=0.0448$, $\beta_2=\gamma_2=0.2856$, ..., $\alpha=\beta_5=\gamma_5=0.3046$
- 这些权重通过主观实验优化得到
MS-SSIM vs SSIM:
| 特性 | SSIM | MS-SSIM |
| 特性 | SSIM | MS-SSIM |
|---|---|---|
| 计算复杂度 | 低 | 中等 |
| 与感知相关性 | 0.80-0.85 | 0.85-0.88 |
| 对分辨率敏感性 | 高 | 低 |
| 对多尺度失真 | 弱 | 强 |
应用场景:
MS-SSIM特别适合评估:
- 不同分辨率的压缩:如自适应流媒体中切换分辨率
- 超分辨率:SR算法改变分辨率,需要多尺度评估
- 抗锯齿/滤波:这些操作在多尺度上有影响
Rule of thumb:如果计算资源允许,MS-SSIM优于SSIM。对于快速评估(实时应用),SSIM足够;对于离线质量分析,使用MS-SSIM。
5.2.3 LPIPS(学习的感知度量)
LPIPS(Learned Perceptual Image Patch Similarity)使用深度网络学习感知度量: $$d_{\text{LPIPS}}(x, \hat{x}) = \sum_l w_l |\phi_l(x) - \phi_l(\hat{x})|^2$$ 其中 $\phi_l$ 是预训练深度网络(如VGG、AlexNet)第 $l$ 层的特征,$w_l$ 是权重。
思想:深度网络的中间层特征编码了人类视觉感知,特征空间的距离对应感知距离。
优势:
- 与人类判断高度相关(目前最好的感知度量之一)
- 自动从数据学习,无需手工设计
局限:
- 计算复杂(需要深度网络前向传播)
- 依赖特定网络架构
LPIPS的详细机制:
-
特征提取: - 使用预训练网络(如VGG16)作为特征提取器 - 提取多层特征:conv1_2, conv2_2, conv3_3, conv4_3, conv5_3 - 这些层从低级特征(边缘、纹理)到高级特征(物体、语义)
-
归一化: - 对每层特征进行L2归一化:$\hat{\phi}_l = \phi_l / |\phi_l|$ - 避免高激活值主导距离
-
逐层距离: - 计算每层的L2距离:$d_l = |\hat{\phi}_l(x) - \hat{\phi}_l(\hat{x})|^2$ - 空间上求和(对所有位置)
-
加权聚合: - 学习权重 $w_l$(通过2AFC实验数据训练) - 最终距离:$d = \sum_l w_l d_l$
为什么深度特征能反映感知?
核心洞察:在ImageNet等大规模数据集上训练的深度网络,其中间层特征捕捉了人类视觉系统关注的模式:
- 低层(conv1-2):边缘、角点、简单纹理
- 中层(conv3-4):复杂纹理、局部形状
- 高层(conv5):物体部件、语义结构
感知相似性很大程度上由这些模式的相似性决定,因此特征空间距离近似感知距离。
LPIPS的变体:
- LPIPS-VGG:使用VGG16(最常用)
- LPIPS-Alex:使用AlexNet(更快)
- LPIPS-Squeeze:使用SqueezeNet(轻量级)
不同backbone的性能略有差异,VGG通常最好但也最慢。
与其他度量的对比:
| 度量 | 计算时间 (256×256) | 与MOS相关性 | 可微性 | 适用场景 |
| 度量 | 计算时间 (256×256) | 与MOS相关性 | 可微性 | 适用场景 |
|---|---|---|---|---|
| PSNR | < 1ms | 0.6-0.7 | 是 | 快速评估 |
| SSIM | ~5ms | 0.8-0.85 | 近似 | 传统压缩 |
| MS-SSIM | ~20ms | 0.85-0.88 | 近似 | 多尺度评估 |
| LPIPS | ~50ms | 0.85-0.92 | 是 | 深度学习、GAN |
LPIPS在不同失真类型上的表现:
LPIPS对以下失真特别敏感(优于SSIM):
- 语义失真:物体形状改变、场景结构破坏
- 纹理伪影:GAN引入的幻觉纹理
- 颜色偏移:色彩失真
LPIPS不如SSIM的场景:
- 几何变换:平移、旋转(深度网络不是完全平移不变)
- 极简图像:纯色、简单几何图形(深度特征不适用)
在优化中使用LPIPS:
LPIPS作为损失函数的优势:
- 可微分,支持反向传播
- 引导网络生成感知上更真实的图像
- 广泛用于图像超分辨率、风格迁移、GAN训练
示例损失: $$\mathcal{L} = \lambda_1 |\mathbf{x} - \hat{\mathbf{x}}|^2 + \lambda_2 d_{\text{LPIPS}}(\mathbf{x}, \hat{\mathbf{x}})$$ Rule of thumb:
- 在图像质量评估中,LPIPS > MS-SSIM > SSIM > PSNR(相关性排序)
- 计算成本:LPIPS > MS-SSIM > SSIM > PSNR
- 实际应用选择:研究/离线评估用LPIPS,实时应用用SSIM,简单基准用PSNR
- LPIPS特别适合评估GAN/深度学习方法,这些方法可能PSNR/SSIM不高但感知质量好
5.3 感知约束下的率失真
5.3.1 用感知度量替换MSE
将率失真问题中的失真度量从MSE替换为感知度量 $d_p(x,\hat{x})$(如SSIM、LPIPS): $$R(D_p) = \min_{p(\hat{x}|x): \mathbb{E}[d_p(X,\hat{X})] \leq D_p} I(X; \hat{X})$$ 挑战:
- 感知度量通常非凸、不可微
- 没有闭式解
- Blahut-Arimoto算法仍可用,但收敛性不保证
实际策略:
- 用MSE率失真函数作为起点
- 在编码器设计中引入感知损失(加权MSE +感知损失)
- 端到端优化(深度学习方法,第八章)
理论与实践的差距:
理论(经典率失真理论):
- 基于MSE或汉明失真
- 有闭式解(高斯源、伯努利源)
- 凸优化问题,收敛性保证
- 测试信道 $p(\hat{x}|x)$ 通常是高斯或对称分布
实践(感知度量):
- SSIM、LPIPS等非凸、复杂度量
- 无闭式解,依赖数值优化
- 优化可能陷入局部最优
- "最优"编码器可能是深度神经网络
数值计算方法:
-
Blahut-Arimoto的推广: - 原算法假设失真度量可加且简单 - 对于SSIM等复杂度量,每次迭代需要数值积分或蒙特卡洛 - 计算成本显著增加
-
梯度下降: - 如果失真度量可微(如LPIPS),可以用梯度方法 - 参数化 $p(\hat{x}|x)$(如神经网络),直接优化: $$\min_\theta I(X; \hat{X}_\theta) \quad \text{s.t.} \quad \mathbb{E}[d_p(X,\hat{X}_\theta)] \leq D_p$$
- 使用拉格朗日松弛或投影梯度法
- 经验风险最小化: - 在数据集上直接最小化: $$\min_\theta \frac{1}{N}\sum_{i=1}^N \left[R_\theta(x_i) + \lambda d_p(x_i, \hat{x}_i)\right]$$
- $R_\theta$ 是编码器的率(通过熵估计)
与MSE率失真的对比:
| 特性 | MSE率失真 | 感知率失真 |
| 特性 | MSE率失真 | 感知率失真 |
|---|---|---|
| 理论基础 | 完善 | 发展中 |
| 闭式解 | 存在(特定信源) | 几乎不存在 |
| 计算难度 | 低 | 高 |
| 实用性 | 有限(与感知脱节) | 高(接近人类判断) |
| 应用 | 传统压缩理论基准 | 现代神经压缩、GAN |
为什么仍然重要?
尽管感知度量的率失真理论不完善,但框架思想仍然有价值:
- 指导我们思考率-质量权衡
- 提供性能上界(即使难以精确计算)
- 启发实际算法设计(如神经压缩的损失函数)
Rule of thumb:在理论分析中使用MSE率失真(可计算、有基准);在实际系统设计和评估中使用感知度量(SSIM、LPIPS)。两者结合可以兼顾理论洞察和实用性。
5.3.2 感知与失真的分离
关键观察:低失真(高PSNR)不一定等于高感知质量
例子(图像超分辨率):
- 高PSNR方法:重建平滑,细节模糊,失真小但感知质量一般
- 高感知质量方法(GAN):细节清晰,纹理真实,但可能引入幻觉细节(PSNR降低)
这提示失真和感知是两个不同的维度。
5.4 率失真感知(RDP)权衡
5.4.1 感知的定义
感知(Perception)衡量重建分布与真实分布的差异: $$P = d(P_X, P_{\hat{X}})$$ 常用度量:
- KL散度:$D_{KL}(P_X | P_{\hat{X}})$
- Wasserstein距离:$W_1(P_X, P_{\hat{X}})$
- 总变差距离:$d_{TV}(P_X, P_{\hat{X}})$
直觉:感知度量关心"重建看起来像真实数据吗",而非"重建与特定样本 $x$ 有多接近"。
5.4.2 RDP不可能三角
Blau-Michaeli定理(2019):对于给定码率 $R$,失真 $D$ 和感知 $P$ 存在基本权衡: $$D + \lambda P \geq D^*(R) + \lambda P^*(R)$$ 其中 $D^*(R), P^*(R)$ 是各自的最优曲线。更强的形式:
不可能三角:无法同时达到低码率、低失真、低感知距离。必须在三者中权衡:
率失真感知不可能三角:
低失真 (High PSNR)
/\
/ \
/ \
/ \
/ \
/ \
低感知距离──────────低码率
(High Perceptual (Low Rate)
Quality)
深入理解不可能三角:
这个三角形的每条边代表一个二元权衡:
-
底边:感知 vs 码率 - 保持低失真(PSNR高),在感知和码率之间权衡 - 传统率失真理论的领域 - 例如:JPEG质量因子从10到95
-
左边:失真 vs 感知 - 保持低码率,在失真和感知之间权衡 - 关键洞察:这是一个基本限制!给定码率,无法同时达到低失真和高感知 - Blau-Michaeli证明了:$P \geq f(D, R)$,即感知距离有下界
-
右边:失真 vs 码率 - 保持高感知质量(分布匹配),在失真和码率之间权衡 - 经典率失真理论,但约束变为感知而非失真
为什么存在这个三角形?核心原因:
失真(Distortion)和感知(Perception)测量不同的东西:
-
失真 $D$:测量重建 $\hat{X}$ 与原始 $X$ 的逐点差异 $$D = \mathbb{E}[d(X, \hat{X})]$$ 这是一个依赖于配对的度量:每个原始样本 $x$ 对应一个特定的重建 $\hat{x}$。
-
感知 $P$:测量重建分布 $P_{\hat{X}}$ 与真实分布 $P_X$ 的分布差异 $$P = d(P_X, P_{\hat{X}})$$ 这是一个边缘分布的度量:不关心哪个 $\hat{x}$ 对应哪个 $x$,只关心 $\hat{X}$ 的整体分布是否像 $X$。
矛盾的根源:
假设我们想同时达到低 $D$ 和低 $P$:
- 低 $D$:要求 $\hat{X} \approx X$(逐点接近)
- 这意味着 $\hat{X}$ 必须"跟随" $X$ 的具体值
-
重建是确定性或近确定性的:$\hat{X} = f(X) + \text{小噪声}$
-
低 $P$:要求 $P_{\hat{X}} \approx P_X$(分布匹配)
- 这意味着 $\hat{X}$ 的变化模式要和 $X$ 一样丰富
- 重建应该包含真实数据的所有统计特性(纹理、细节、边缘分布等)
冲突:如果 $\hat{X}$ 是 $X$ 的确定性(或低噪声)函数,则 $P_{\hat{X}}$ 比 $P_X$ 更"平滑"、更"模糊"。要让 $P_{\hat{X}} \approx P_X$,需要在重建中引入足够的随机性或细节,但这会增大与原始 $X$ 的距离(失真)。
数学表述(Blau-Michaeli的核心结果):
对于固定码率 $R$,存在感知-失真曲线: $$D(P, R) = \inf \{\mathbb{E}[d(X, \hat{X})] : I(X;\hat{X}) \leq R, \, d(P_X, P_{\hat{X}}) \leq P\}$$ 这个函数是凸的关于 $P$,并且满足: $$\frac{\partial D}{\partial P} < 0$$ 即:减少感知距离必然增加失真(在固定码率下)。
三种典型工作点的详细分析:
-
传统压缩(JPEG、H.264、HEVC): - 目标:$\min R$ subject to $D \leq D_0$(忽略 $P$) - 结果:低码率 + 低失真,但 $P$ 大(重建看起来模糊、过平滑) - 典型应用:需要高保真的场景(医疗、广播)
-
GAN-based压缩(例如 HiFiC、Taming Transformers): - 目标:$\min R$ subject to $P \leq P_0$(允许 $D$ 大) - 结果:低码率 + 高感知(看起来真实),但 $D$ 大(PSNR低,逐点不准确) - 典型应用:视觉展示优先的场景(社交媒体、游戏资产)
-
高质量重建(接近无损): - 目标:$D \to 0$ 且 $P \to 0$ - 结果:需要 $R \to H(X)$(高码率) - 典型应用:归档、专业摄影
实际意义:
- 不存在"完美"的压缩方法能在所有维度都最优
- 选择工作点是应用驱动的决策:
- 需要精确测量?优化失真(传统方法)
- 需要视觉吸引力?优化感知(GAN方法)
- 预算充足?两者兼顾(高码率)
- 现代神经压缩的优势:可以通过调节 $\lambda$ 灵活地在RDP曲面上移动
5.4.3 RDP曲面
在三维空间 $(R, D, P)$ 中,可达域的边界形成RDP曲面: $$\mathcal{S} = \\{(R, D, P): \text{存在编码方案达到}\\}$$ 性质:
- 曲面是凸的(某些条件下)
- 沿任意两维的投影是凸函数
- 实际系统的性能点应尽量接近曲面
Rule of thumb:选择工作点取决于应用:
- 医疗图像、卫星图像:高保真(低 $D$)优先,允许高码率
- 流媒体、社交网络:低码率优先,平衡 $D$ 和 $P$
- 生成式应用:高感知质量(低 $P$)优先,允许一定失真
5.5 实现感知优化的方法
5.5.1 加权失真度量
简单方法:MSE + 感知损失的加权 $$\mathcal{L} = \alpha \cdot \text{MSE} + \beta \cdot d_{\text{perceptual}}$$ 例如: $$\mathcal{L} = \alpha |\mathbf{x} - \hat{\mathbf{x}}|^2 + \beta |\phi(\mathbf{x}) - \phi(\mathbf{x})|^2$$ 其中 $\phi$ 是VGG等网络的特征提取器。
权重参数的选择:
- $\alpha$ 大,$\beta$ 小:偏向保真度,PSNR高,感知质量一般
- 适用场景:医疗图像、卫星图像、需要精确测量的应用
-
典型值:$\alpha=1, \beta=0.01$
-
$\alpha$ 小,$\beta$ 大:偏向感知,视觉质量好,PSNR可能较低
- 适用场景:社交媒体、游戏、艺术应用
-
典型值:$\alpha=0.1, \beta=1$
-
$\alpha \approx \beta$:平衡保真度和感知
- 适用场景:流媒体、视频会议、通用图像压缩
- 典型值:$\alpha=1, \beta=1$
实现示例:
在图像超分辨率中的常见损失: $$\mathcal{L} = \lambda_1 |\mathbf{x} - \hat{\mathbf{x}}|^2 + \lambda_2 |\phi_{\text{VGG}}(\mathbf{x}) - \phi_{\text{VGG}}(\hat{\mathbf{x}})|^2 + \lambda_3 \mathcal{L}_{\text{adv}}$$ 其中:
- 第一项:像素级MSE,确保基本保真度
- 第二项:VGG感知损失,提升纹理和结构
- 第三项:对抗损失(可选),进一步提升真实感
Rule of thumb:
- 从 $\alpha=1, \beta=0$ 开始(纯MSE)
- 逐步增加 $\beta$,观察感知质量vs PSNR的权衡
- 在验证集上通过人类评分选择最佳 $(\alpha, \beta)$
- 不同应用需要不同权衡,没有通用最优值
5.5.2 对抗训练(GAN)
使用判别器 $D$ 优化感知质量:
生成器(编码-解码): $$\min_G \mathbb{E}[\text{MSE}(x, G(x))] - \lambda \mathbb{E}[\log D(G(x))]$$ 判别器: $$\max_D \mathbb{E}[\log D(x)] + \mathbb{E}[\log(1 - D(G(x)))]$$ 效果:判别器强制重建看起来真实,提升感知质量。
挑战:训练不稳定、可能引入幻觉细节。
GAN如何优化感知质量?
判别器 $D$ 试图区分真实图像和重建图像。为了"欺骗"判别器,生成器 $G$ 必须让重建:
- 保留真实数据的统计特性(纹理、边缘分布)
- 避免压缩伪影(块效应、模糊)
- 生成细节即使逐点不准确,也在分布上真实
这正是优化感知质量(分布匹配)而非失真(逐点准确)。
对抗损失的变体:
-
Standard GAN: $$\mathcal{L}_{\text{adv}} = -\mathbb{E}[\log D(G(x))]$$
-
LSGAN(最小二乘GAN): $$\mathcal{L}_{\text{adv}} = \mathbb{E}[(D(G(x)) - 1)^2]$$ 更稳定,缓解梯度消失
-
WGAN-GP(Wasserstein GAN with Gradient Penalty): $$\mathcal{L}_{\text{adv}} = -\mathbb{E}[D(G(x))]$$ 使用Lipschitz约束,训练更稳定
-
Hinge Loss: $$\mathcal{L}_{\text{adv}} = -\mathbb{E}[\min(0, -1 + D(G(x)))]$$ 用于StyleGAN等现代架构
完整的训练损失:
实际应用中,通常组合多个损失: $$\mathcal{L}_G = \lambda_1 |\mathbf{x} - G(\mathbf{x})|^2 + \lambda_2 |\phi(\mathbf{x}) - \phi(G(\mathbf{x}))|^2 + \lambda_3 \mathcal{L}_{\text{adv}}$$
- $\lambda_1 \sim 1$:保证基本保真度,防止完全偏离原图
- $\lambda_2 \sim 10^{-2}$:感知损失,优化结构和纹理
- $\lambda_3 \sim 10^{-3}$:对抗损失,提升真实感
训练技巧:
- Two-timescale update:判别器更新更频繁(如D更新5次,G更新1次)
- Spectral normalization:稳定判别器训练
- Progressive growing:从低分辨率逐步训练到高分辨率
- Feature matching:让G匹配D中间层特征,而非直接对抗
GAN在压缩中的应用实例:
- HiFiC(High-Fidelity Generative Image Compression):极低码率下生成高感知质量图像
- ESRGAN(Enhanced SRGAN):图像超分辨率
- StyleGAN-based compression:学习隐编码空间,在StyleGAN隐空间中压缩
幻觉细节问题:
GAN可能生成不存在的细节(hallucinations):
- 人脸图像:生成不存在的皱纹、饰品
- 自然场景:生成不存在的树叶、纹理
- 这在艺术应用可接受,在科学/医疗应用不可接受
Rule of thumb:
- GAN适用于视觉质量优先的场景(流媒体、游戏)
- 需要逐点准确的场景(医疗、测量)应避免GAN
- $\lambda_3$ 控制GAN的影响强度,从小值开始逐步调整
5.5.3 Perceptual Loss的神经压缩
现代神经压缩(第八章详述)直接优化: $$\mathcal{L} = R + \lambda D_{\text{perceptual}}$$
其中 $R$ 是码率(通过熵估计),$D_{\text{perceptual}}$ 是感知损失(如LPIPS)。
通过端到端训练,同时学习编码器、解码器和概率模型,在RDP曲面上达到更好的工作点。
5.6 本章小结
核心概念:
-
MSE的局限性: - 与人类感知相关性差 - 忽略视觉系统特性 - 对所有像素一视同仁
-
感知失真度量: - SSIM:结构相似性,考虑亮度、对比度、结构 - LPIPS:学习的感知度量,基于深度特征 - 与人类判断相关性:LPIPS > SSIM > PSNR
-
率失真感知(RDP)权衡: - 失真 $D$:与原始样本的差异(点对点) - 感知 $P$:重建分布与真实分布的差异(分布对分布) - 不可能三角:无法同时低 $R$、低 $D$、低 $P$
-
工作点选择: - 传统压缩:优化 $R$-$D$ - GAN压缩:优化 $R$-$P$ - 取决于应用需求
关键公式:
- SSIM:$\text{SSIM} = \frac{(2\mu_x\mu_y + C_1)(2\sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1)(\sigma_x^2 + \sigma_y^2 + C_2)}$
- LPIPS:$d_{\text{LPIPS}} = \sum_l w_l |\phi_l(x) - \phi_l(\hat{x})|^2$
- 感知:$P = d(P_X, P_{\hat{X}})$(分布距离)
- 加权优化:$\mathcal{L} = \alpha D + \beta P$
5.7 常见陷阱与错误
Gotcha #1: 高PSNR = 高质量?
错误:认为PSNR越高,图像质量越好。
正解:PSNR只是MSE的变换,不反映感知质量。特别是在GAN-based方法中,PSNR可能降低但感知质量提升。应该使用感知度量(SSIM、LPIPS)或人类评分。
Gotcha #2: 混淆失真和感知
错误:认为低失真(高PSNR)自动意味着高感知质量。
正解:失真和感知是不同的:
- 失真:样本与样本的距离 $d(x, \hat{x})$
- 感知:分布与分布的距离 $d(P_X, P_{\hat{X}})$
可以构造反例:$\hat{x}$ 与 $x$ 失真大,但 $\hat{x}$ 的分布与 $X$ 的分布一致(感知好)。
Gotcha #3: SSIM/LPIPS的计算细节
错误:忽略SSIM/LPIPS的实现细节(如窗口大小、颜色空间)。
正解:
- SSIM:通常在YCbCr空间的Y通道计算,窗口大小 11×11
- LPIPS:需要指定网络(VGG、AlexNet等)和归一化
- 不同实现可能有显著差异,比较时应使用统一实现
Gotcha #4: 过度优化感知度量
错误:直接优化LPIPS作为损失函数,导致过拟合到VGG的特性。
正解:LPIPS等感知度量作为评估指标很好,但作为损失函数可能导致意外的伪影(如过度锐化、纹理伪影)。实际中常用加权组合(MSE + 感知损失 + 对抗损失)。
Gotcha #5: GAN的幻觉细节
错误:认为GAN生成的细节都是真实的。
正解:GAN为提高感知质量,可能"幻想"不存在的细节。这在某些应用(如艺术风格、人脸美化)可接受,但在其他应用(如医疗图像、科学数据)不可接受。需要根据应用选择。
Gotcha #6: RDP权衡的刚性
错误:认为RDP不可能三角意味着无法改进。
正解:不可能三角是理论极限,实际系统通常远未达到极限。通过更好的模型(如神经压缩)、更大的网络、更多数据,可以向极限接近,在RDP空间中获得更好的性能点。
Gotcha #7: 感知度量的主观性
错误:认为存在"唯一正确"的感知度量。
正解:感知是主观的,不同人对质量的判断可能不同。LPIPS等度量是在特定数据集上训练的,可能不适用于所有场景(如艺术画、医学图像)。最终的质量判断还是需要人类评分(MOS, Mean Opinion Score)。
下一章预告:第六章将探讨率失真理论在实际图像和视频压缩标准(JPEG、H.264、AV1)中的应用,理解理论如何指导实践。