图像质量评价指标全解析:PSNR、SSIM、NIQE、LPIPS 从原理到代码一网打尽
一、前言为啥我们需要图像质量评价指标不管是图像生成、超分、去模糊、去噪、修复……只要你改了图就必须回答一个问题改得好不好画质有没有下降有没有失真靠人眼太慢、不准、不客观。靠网络没法落地。所以业界搞出了一堆图像质量评价 IQA 指标PSNRSSIMNIQELPIPS今天咱们一次性吃透原理、公式、代码、区别、用法、坑点。二、第一类全参考评价指标有GT图2.1 PSNR峰值信噪比最经典、最常用、最简单。公式先算 MSEMSE1HWC∑i,j,k(I(i,j,k)−K(i,j,k))2MSE\frac{1}{HWC}\sum_{i,j,k}(I(i,j,k)-K(i,j,k))^2MSEHWC1i,j,k∑(I(i,j,k)−K(i,j,k))2再算 PSNRPSNR10⋅log10(MAXI2MSE)PSNR10\cdot log_{10}(\frac{MAX_I^2}{MSE})PSNR10⋅log10(MSEMAXI2)符号解释H,W,CH,W,CH,W,C高、宽、通道III预测图KKK真值图MAXIMAX_IMAXI像素最大值一般255通俗解释算两张图“像素差的平方和”再转成分贝。数值越大越好。优点快简单可导缺点完全不贴合人眼感知有时候图糊得一批PSNR 还很高。核心代码importtorchimporttorch.nn.functionalasFdefpsnr(img1,img2,data_range1.0):msetorch.mean((img1-img2)**2)ifmse0:returntorch.tensor(100.0)return10*torch.log10((data_range**2)/mse)2.2 SSIM结构相似性专门解决 PSNR “不感知”问题。公式SSIM(x,y)(2μxμyC1)(2σxyC2)(μx2μy2C1)(σx2σy2C2)SSIM(x,y)\frac{(2\mu_x\mu_yC_1)(2\sigma_{xy}C_2)}{(\mu_x^2\mu_y^2C_1)(\sigma_x^2\sigma_y^2C_2)}SSIM(x,y)(μx2μy2C1)(σx2σy2C2)(2μxμyC1)(2σxyC2)符号解释μx\mu_xμx均值σx\sigma_xσx方差σxy\sigma_{xy}σxy协方差C1,C2C_1,C_2C1,C2常数防止除0通俗解释对比两张图的亮度、对比度、结构三项相似度。输出-1 ~ 1越大越好。优点比 PSNR 更像人眼超分、去噪标配缺点仍然是手工设计不够完美。核心代码defssim(img1,img2,window_size11,data_range1.0):C1(0.01*data_range)**2C2(0.03*data_range)**2mu1F.avg_pool2d(img1,window_size)mu2F.avg_pool2d(img2,window_size)sigma1F.avg_pool2d(img1**2,window_size)-mu1**2sigma2F.avg_pool2d(img2**2,window_size)-mu2**2sigma12F.avg_pool2d(img1*img2,window_size)-mu1*mu2 numerator(2*mu1*mu2C1)*(2*sigma12C2)denominator(mu1**2mu2**2C1)*(sigma1sigma2C2)returnnumerator/denominator三、第二类无参考评价指标没有GT图3.1 NIQE无参考自然图像质量评价完全不需要真值图只靠统计特征判断画质。核心思想自然清晰的图某些统计量分布是固定的模糊、噪声、伪影会让分布偏移。用自然场景统计模型 多元高斯计算距离。通俗解释给图像算一套“自然度特征”偏离自然统计越远 → 质量越差 →分数越低越好。优点无参考生成模型、修复、超分神器缺点计算慢对某些场景不友好。核心代码调用现成库fromskimageimportio,colorfromskimage.metricsimportnormalized_root_mseimportnumpyasnpdefniqe(image):# 输入必须是灰度图 [0,1]iflen(image.shape)3:imagecolor.rgb2gray(image)# 调用 skimage 实现returnniqe_score(image)四、第三类深度感知评价指标4.1 LPIPS深度感知图像相似度用训练好的CNN如AlexNet/VGG提取特征计算特征距离。公式LPIPS1C∑∣∣ϕ(I)−ϕ(K)∣∣22H,WLPIPS\frac{1}{C}\sum\frac{||\phi(I)-\phi(K)||_2^2}{H,W}LPIPSC1∑H,W∣∣ϕ(I)−ϕ(K)∣∣22符号解释ϕ\phiϕ预训练网络提取的特征逐通道计算L2距离通俗解释让神经网络帮你看“像不像”比人眼还准比SSIM强一大截。越小越好。优点目前最贴合感知生成类任务必用超分、修复、GAN 标配缺点需要GPU速度不快。核心代码importlpips# 加载模型loss_fnlpips.LPIPS(netalex)# 计算defcalculate_lpips(img1,img2):# img1, img2: [-1,1]returnloss_fn(img1,img2)五、四大指标终极对比表格1四大指标对比指标类型是否需要GT分值趋势速度感知友好PSNR全参考是越大越好极快差SSIM全参考是越大越好快中NIQE无参考否越小越好慢良LPIPS深度全参考是越小越好中极强表格2任务选型推荐任务推荐指标超分辨率PSNR SSIM LPIPS图像去噪PSNR SSIM图像修复LPIPS NIQE图像生成FID LPIPS NIQE压缩/增强PSNR SSIM六、全文总结最精炼PSNR最快但最不准只管像素差。SSIM比PSNR像人眼传统任务标配。NIQE无参考神器没有GT也能打分。LPIPS目前最感知、最靠谱深度模型必用。一句话记住传统任务看PSNR/SSIM生成任务看LPIPS/NIQE。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2563989.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!