
本文将介绍讲解常见的图像感知质量评价,LPIPS,相信做图像处理相关任务的读者不会陌生,在很多论文客观指标对比中会选择它,它主要是用于评估图像的感知质量,与前面讲到的PSNR和SSIM不同,它更关注人眼主观感知的感受。参考资料如下,其中代码实现的部分,博主准备参考一个GitHub开源的IQA集合实现,IQA-pytorch,大家也可以尝试安装IQA-pytorch库,调用IQA算法起来会更简单方便些:
[1]. LPIPS论文地址
[2]. LPIPS讲解
[3]. IQA-pytorch代码路径
专题介绍
图像质量评价(Image Quality Assessment, IQA)是图像处理、计算机视觉和多媒体通信等领域的关键技术之一。IQA不仅被用于学术研究,更在影像相关行业内实现了完整的商业化应用,涉及影视、智能手机、专业相机、安防监控、工业质检、医疗影像等。IQA与图像如影随形,其重要程度可见一斑。
但随着算法侧的能力不断突破,AIGC技术发展火热,早期的IQA或已无法准确评估新技术的能力。另一方面,千行百业中各类应用对图像质量的需求也存在差异和变化,旧标准也面临着适应性不足的挑战。
本专题旨在梳理和跟进IQA技术发展内容和趋势,为读者分享有价值、有意思的IQA。希望能够为底层视觉领域内的研究者和从业者提供一些参考和思路。
系列文章如下:
【1】IQA综述
【2】PSNR&SSIM
【3】Q-Insight
一、研究背景
LPIPS的研究背景是当时IQA领域缺乏一个全参考、跟人类视觉体验更相近的距离评价指标,类似的距离评价指标在其他任务上非常简单,例如利用Hamming距离来比较二进制模式,使用edit距离来比较文本文件,欧几里得距离比较向量等。
但当我们需要使用一个指标来对比视觉效果时,问题就变得比较复杂了,因为视觉效果通常主观,需要符合人类的视觉感知。这里作者举了一个例子,在图像压缩领域,我们需要的并不是图像完全不变化,而是图像的效果变化不易于被人类察觉,自然这两个图像不是等价的。
因此很多时候我们真正想要的是“两幅图像之间的感知距离或者说感知相似性”,用于衡量两幅图像在某种程度上跟人类判断的相似程度,一些已有的指标并不能很好的表征这个目标,包含我们前面提到的PSNR和SSIM,原因在于PSNR是一个逐像素的评价指标,专注于像素的差异,对于评估图像结构来说并不合理,一个典型的例子是模糊导致很大的感知变化,但PSNR变化不大。SSIM仅对比了三种类型的特征,也不能很好的完成模拟视觉感知的任务。
讲完了动机,后续作者分析了下为啥设计这个指标这么难,有3个点:
- 感知相似性依赖高阶的图像结构,这意味着需要大的感受野。
- 感知相似性依赖上下文的信息,这里作者举了一个例子,作为人类来说,我们可以轻易记住一些相似点,比如说一个红色的圆圈和一个红色的正方形是颜色上更相近,一个红色的圆圈和一个蓝色的圆圈是形状上更相近,但如果要在红色正方形和蓝色圆圈中选出一个更相近的就很难,因此说依赖判断的上下文和配对性质,是更看重什么。
- 感知相似性这个概念难以进行量化和模拟,直接用函数去拟合是不可行的,作者做了实验,在包含多种不同退化的大规模LQ图像上进行了训练,发现泛化能力比较差。
因此,直接设计此类指标是比较困难的。但作者后续想到,VGG等网络提取图像的特征在多种任务上,例如神经风格迁移、图像超分辨率和条件图像生成上有很多的应用,所以说会不会VGG等网络天生就能够提取图像的感知特征,从而作为一个感知相似性的评价工具,作者就沿着这个路线做进一步思考,这种利用感知特征评价感知相似性的方法,跟传统指标的对比如何、用什么深度网络对结果是否有影响、网络是否需要ImageNet训练、除分类的其他任务是否可以、自监督和无监督是否也可以使用等,作者后续的实验就是为了验证这些问题,并提出了LPIPS指标。
对LPIPS这篇文章的贡献点总结就是:
- 其整理了一个感知相似度数据集,包含大量传统的退化(模糊、噪声、JPEG等)和CNN复原模型(基于某种退化训练的模型)的输出,以及真实算法(超分、去模糊、插帧等)的输出用于评估感知相似度,从而来证实本文提出的LPIPS指标与人类认知更一致,相比较一些其他现有的IQA方法。
- 其系统地评估了不同的网络架构和任务的深度特征,并将其跟经验指标进行比较,发现在其提出的数据集上利用网络提取的特征(无论是什么网络架构或是什么任务或是有监督和无监督等)比其他方法都要好。
- 作者还可以基于这个深度模型提取的特征进行训练,在该论文构建的数据集上训练后,可以将感知相似性判别的更精准,更符合人类的判断。
如图所示,可以看到LPIPS指标跟人类判断更符合,相比较PSNR和SSIM来说,其对于一些存在明显退化的图判断不准确。

二、使用的数据集和评估方法
数据集名字叫Berkeley-Adobe Perceptual Patch Similarity(BAPPS) Dataset,其包含三部分,前面也提到了,分别是:
-
传统的退化,如下图所示,有20种,大家可以对照着看看。

-
CNN造成的退化,如下图所示。

这批LQ数据是由神经网络产生的,包含自编码器任务、去噪、着色和超分辨率,所有这些CNN模型都是由对应的退化训练来的,训练了总共有96个,都是在Imagenet上训练了1个epoch,每个网络本身并不是为了解决任务本身,只是用于产生退化。 -
真实算法的效果:因为评价指标最后肯定还是要应用于真实的情况,因此作者采集了一批真实算法的数据,包含超分、插帧、着色、去模糊。其中超分等出现瑕疵可能是结构发生改变,着色发生瑕疵可能就是颜色出现变化。
退化数据讲解完毕,下面讲一下作者怎么进行的评价,以及怎么利用人类构建GT,评判有2个方法:
- two-alternative forced choice(2AFC)相似性判断:x是HQ,x0和x1是两个LQ的patch,在3s内给定一个x0或是x1与x更相近的结果。
- Just Noticeable Distortion(JND),最小可察觉误差:2AFC的一个潜在缺点是存在主观判断的问题,每个人关注的点不尽相同,为了反应客观和有意义的内容,需要收集JND的判断,此时只给出一个图像对,即只有一个x和x0,询问这两张图像是相同的还是不同的,在1s内回答,两张图片间隔250ms。
通过以上的方式即可构建一批基于人类评判的具有各种退化类型的图像数据集。
三、LPIPS指标
终于到了论文的核心部分,即作者是怎么去量化的感知相似性指标。作者通过计算深度网络中不同图像的特征距离来评估感知相似性指标,首先会选定一个特定的DNN网络,然后选定这个网络中的一些中间层,接着对这些计算的特征进行通道维度上的L2范数的归一化,最后进行空间维度的均值求取,得到的多层标准化值进行差值的计算就得到了LPIPS结果,如下左图所示。

右图是作者基于左图的距离,进行一个FC层的微调(相当于自己训练了一个分类器,而不是直接用特征直接判别),得到一个最后的结果,根据上图的数据集进行调整,得到最后的一个感知相似度的判断,注意,此步骤是非必须的。
左图的过程还可以用以下公式表示:
d
(
x
,
x
0
)
=
∑
l
1
H
l
W
l
∑
h
,
w
∥
w
l
⊙
(
y
^
h
w
l
−
y
^
0
h
w
l
)
∥
2
2
d\left(x, x_{0}\right)=\sum_{l} \frac{1}{H_{l} W_{l}} \sum_{h, w}\left\|w_{l} \odot\left(\hat{y}_{h w}^{l}-\hat{y}_{0 h w}^{l}\right)\right\|_{2}^{2}
d(x,x0)=l∑HlWl1h,w∑
wl⊙(y^hwl−y^0hwl)
22
其中,
l
l
l是选定网络的某一层,
H
l
H_l
Hl和
W
l
W_l
Wl是当前层的特征高度和高度,
w
l
w_l
wl是特征的通道上用于进行归一化的权重,
y
^
h
w
l
\hat{y}_{h w}^{l}
y^hwl和
y
^
0
h
w
\hat{y}_{0 h w}
y^0hw分别是该层两幅图像的特征输出。
四、实验
LPIPS的实验结论比较多,主要的结论都通过下面这个图得出。

- Low-level固定的metric在感知相似性判断的准确性上不如该轮文基于分类网络计算的LPIPS指标,这里可以看左图的红色部分的L2、SSIM等是少于本文用VGG等计算的LPIPS指标的。
- 网络不一定要在分类任务上进行训练,看绿色的部分,是自监督训练的网络,一样有高于传统指标的性能。
- 更大的网络代表着更好的性能,例如VGG就比AlexNet和SqueezeNet好。
- 在常规的退化和CNN-based退化上,网络直接学习metric(LPIPS)相比较直接用预训练模型(蓝色)的效果好。
- Real-algorithms上,跟上面是同样的结论,LPIPS性能表现更好。值得注意的是,针对LPIPS的三种实现方式(linear版本通过添加全连接层进行分类,scratch版本采用随机初始化的网络,tune版本则微调整个网络)的比较中,tune版本的表现意外最差。这一现象与常规退化模型和CNN-based方法的典型表现存在差异,表明在真实图像场景下,网络微调反而降低了模型的泛化能力。
五、总结与思考
作者发现优秀的特征提取对于获取图像的语义信息至关重要。因此,那些在分类、检测以及自监督和无监督学习任务中表现出色的模型,同样在感知相似性判断方面也显示出了更好的效果。
这里插一句题外话,作者和一些研究发现ResNet虽然作为比VGG更强的分类模型,却不适合应用于LPIPS计算,原因可能是因为ResNet网络更关注一些高频的细节用于分类。
代码讲解会在下篇文章中更新,感兴趣的读者可以关注。
感谢阅读,欢迎留言或私信,一起探讨和交流,如果对你有帮助的话,也希望可以给博主点一个关注,谢谢。
2943

被折叠的 条评论
为什么被折叠?



