2、图像质量评估指标:PSNR、SSIM、MS-SSIM、LPIPS、NIQE等客观指标详解

做图像质量调优,第一件事就是搞清楚:怎么才算「好」?

你调了半天参数,眼睛都快看花了,总得有个数字说话吧?

客观指标就是干这个的。它们把「人眼觉得好不好」这件事,尽量量化成几个数值。但说实话,每个指标都有脾气,用不对反而会坑你。

我刚开始做超分模型时,PSNR 刷得老高,结果一放大看,纹理全糊了。嗯,从那以后我就明白——指标是拐杖,不是终点。

核心观点: 没有完美的指标,只有合适的场景。全参考指标(PSNR/SSIM)适合实验室调优,无参考指标(NIQE)适合实际落地监控。
图像质量客观评估指标体系 客观评估指标 全参考 (FR) 无参考 (NR) PSNR SSIM MS-SSIM NIQE BRISQUE 感知参考 (PR) LPIPS 💡 选择建议 • 有原始参考图 → PSNR + SSIM + LPIPS 组合使用 • 无参考图(实际业务) → NIQE 或 BRISQUE • 追求感知真实感 → LPIPS 比 PSNR 更贴近人眼

2.1 PSNR(峰值信噪比)—— 最老牌,也最「老实」

PSNR 是图像质量评估的「元老」。它的逻辑很简单:算像素误差。

你把两张图逐像素相减,求个均方误差(MSE),再换算成 dB 值。值越高,说明像素越接近。

# PSNR 计算核心逻辑
import numpy as np

def psnr(img1, img2, max_val=255.0):
    mse = np.mean((img1 - img2) ** 2)
    if mse == 0:
        return float('inf')
    return 20 * np.log10(max_val / np.sqrt(mse))

但这里有个坑——PSNR 不关心「结构」。

我记得有一次做去噪实验,PSNR 涨了 0.5dB,我挺高兴。结果一看图,细节全磨平了,变成一块塑料。PSNR 觉得「像素接近就是好」,但人眼不这么认为。

⚠️ 避坑指南: 我曾经在超分模型调优时只盯着 PSNR,结果模型学会了「平均化」——输出模糊但像素误差小的图。后来加了 SSIM 和 LPIPS 才拉回来。PSNR 适合做快速筛选,别用它做最终决策。

2.2 SSIM(结构相似性)—— 更像人眼了

SSIM 比 PSNR 聪明一点。它不光看像素,还看亮度、对比度、结构三个维度。

公式长这样:

SSIM(x, y) = [l(x,y)]^α · [c(x,y)]^β · [s(x,y)]^γ

其中:

  • l(x,y) —— 亮度对比
  • c(x,y) —— 对比度对比
  • s(x,y) —— 结构对比

取值范围是 [0, 1],1 表示两图完全一样。

我个人习惯用 SSIM 做第一道质量门禁。比如模型训练时,每 1000 步算一次 SSIM,低于 0.85 的直接报警。

💡 实用技巧: SSIM 对模糊敏感,但对轻微平移不敏感。如果你做视频去抖,SSIM 可能比 PSNR 更靠谱。

2.3 MS-SSIM(多尺度 SSIM)—— SSIM 的升级版

SSIM 有个毛病:它只在单一尺度上比较。但人眼看图是多尺度的——先看整体,再看细节。

MS-SSIM 就是解决这个问题的。它把图像下采样成多个尺度(一般是 5 层),每层算一次 SSIM,最后加权合并。

尺度层级 下采样倍数 关注内容
Scale 1 1x(原图) 精细纹理、边缘
Scale 2 2x 局部结构
Scale 3 4x 中等尺度物体
Scale 4 8x 大尺度轮廓
Scale 5 16x 全局布局

我在做图像压缩质量评估时,发现 MS-SSIM 比单尺度 SSIM 更稳定。压缩带来的块效应,在低尺度上会被放大,MS-SSIM 能抓到这些细节。

2.4 LPIPS(学习感知图像块相似度)—— 让神经网络来打分

前面几个指标都是手工设计的。LPIPS 换了个思路:用预训练网络(如 VGG)提取特征,在特征空间里算距离。

说白了,它问的是:「神经网络觉得这两张图像不像?」

# LPIPS 使用示例(伪代码)
import lpips

loss_fn = lpips.LPIPS(net='alex')  # 可选 alex/vgg/squeeze
dist = loss_fn(img1, img2)  # 值越小越相似

LPIPS 的值越低越好。一般范围在 0~1 之间。

说实话,LPIPS 是我目前在感知质量上最信任的指标。它跟人眼的相关性比 PSNR 高出一大截。但代价是计算量大——跑一次 LPIPS 够跑十次 PSNR。

我的经验: 在实验或模型选型时,我会用 LPIPS 做最终排名。日常训练监控还是用 SSIM,省时间。

2.5 NIQE(自然图像质量评估器)—— 没有参考图怎么办?

前面几个指标都需要一张「完美」的参考图。但实际业务中,你上哪找参考图?

比如用户上传的老照片修复,原始清晰图早没了。这时候就需要无参考指标。

NIQE 的核心思想是:统计自然图像的「正常」特征分布。它从大量高质量自然图像中提取出均值、方差等统计量,然后拿待测图像的特征去跟这个「标准分布」比。偏离越大,质量越差。

NIQE 值越低越好。一般低于 5 算不错,高于 8 就比较差了。

⚠️ 注意: NIQE 对图像内容敏感。一张「故意模糊的艺术照」可能被 NIQE 判为低分,但人眼觉得有美感。无参考指标只能做参考,不能替代人工审核。

2.6 指标对比速查表

指标 类型 范围 好坏方向 计算速度 与人眼相关性
PSNR 全参考 0~∞ dB 越高越好 ⚡ 极快 ⭐⭐
SSIM 全参考 0~1 越高越好 ⚡ 快 ⭐⭐⭐
MS-SSIM 全参考 0~1 越高越好 ⚡⚡ 中等 ⭐⭐⭐⭐
LPIPS 感知参考 0~1 越低越好 ⚡⚡⚡ 慢 ⭐⭐⭐⭐⭐
NIQE 无参考 0~∞ 越低越好 ⚡ 快 ⭐⭐⭐

2.7 我的调优组合拳

说了这么多,实际干活时怎么用?我分享一套自己常用的流程:

  1. 训练监控:每轮算 PSNR + SSIM,快速看趋势。PSNR 涨但 SSIM 跌?大概率过拟合了。
  2. 模型选型:候选模型跑 LPIPS,排名靠前的再人工看。LPIPS 能筛掉很多「PSNR 高但糊」的模型。
  3. 上线前:用 NIQE 扫一批真实业务数据,确保分布正常。NIQE 突然飙升?可能是数据预处理出了问题。
  4. 最终把关:找 3~5 个人做主观评测。指标再漂亮,人眼说不行就是不行。
💡 小建议: 别只盯着一个指标。我习惯在实验报告里同时列出 PSNR、SSIM、LPIPS 三个值。审稿人或老板问起来,你也能有理有据。