
极市导读
本文为详细解读Vision Transformer的第十一篇,本文介绍了两个视觉Transformer在图像质量评价 (Image Quality Assessment) 中应用的工作:IQT、TRIP。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
本文目录
1.IQT:基于 Transformer 的感知图像质量评价
(来自LG,NTIRE 2021冠军方案)
1.1 IQT原理分析2.Transformer+图像质量评价:TRIP
(来自NORCE Norwegian Research Centre,深圳大学)
2.1 TRIP原理分析
Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer。Transformer 模型使用了 Self-Attention 机制,不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。
本文介绍的两个工作是视觉Transformer在图像质量评价 (Image Quality Assessment) 中的应用。TRIP这个论文是第一个把Transformer用在IQA上的工作,而IQT这个论文是NTIRE 2021比赛 (对应CVPR Workshop 2021) IQA赛道的第1名,使用的也是视觉Transformer模型,它的思路值得拿出来单独讨论。
IQT:基于 Transformer 的感知图像质量评价 (CVPRW 2021)
论文名称:Perceptual Image Quality Assessment with Transformers
论文地址:
https://arxiv.org/pdf/2104.14730.pdf
-
1.1 IQT原理分析:
对于图像处理领域来讲,一个首要的目标是去提升处理后的图像的质量,而这个质量应该更符合人类的感知,即:如何去评判一个算法所得到的图像是好是坏?这不应该单单是靠着某个指标来决定的,而是应该依赖于人类的观感。 简而言之,这个图像处理算法 A 所得到的结果图片,只有人类看上去感觉更"好看",我们才说 A 是一个好算法。
那接下来得问题是:不能总是靠人来帮助我们构建好的算法,因为人力资源是很昂贵的,因此我们就需要 图像质量评价 (IQA)算法。
我们希望:一个好的图像质量评价 (IQA) 算法,它可以像人一样给出这个结果图是好是坏。 对于一张结果图来说,人感觉它又美又好看,我们的IQA算法就应该给它高分;人感觉它又丑又难看,我们的IQA算法就应该给它低分。这两段话概括得专业一点就是:
One of the goals of the image processing is to improve the quality of the content to an acceptable level for the human viewers.
举个例子,我们常用GAN网络来做一些Image Restoration的任务,那么GAN模型的一个优势是它得到的这些图片尽管一些常用的指标 (PSNR, SSIM) 上不占优势,但是却更"好看",或者说更符合人的主观感受。但是GAN模型生成的图片也会产生一些不现实的伪影 (unrealistic artifacts)。但总而言之,它得到的这些图片给人的感受是更"好看"的。这就说明了一个问题,即:一些经典而常用的指标 (如 PSNR, SSIM 等) 其实是不足以准确评价一幅图片的好坏的。
所以本文给出的模型 IQT 就是一个基于CNN和Transformer的,能够评判GAN生成的图像是好是坏的IQA模型,它的特点是:
-
为数不多的基于Transformer的IQA模型。 -
侧重于Perceptual Image Quality Assessment,即:模型的输出结果更接近人类的感知结果。 -
获得了NTIRE 2021 IQA赛道的1st Place。
1.1.1 常见的IQA算法
讲到这里我们先简单地认识一下 IQA 任务和它的一些指标。常见的IQA算法可以分为3种:
全参考IQA:Full-Reference IQA
输入有2张图: 一张是要评价的图,它可能是某个图像复原GAN模型生成的图片等等,我们叫它失真图;另一张是真值,它是这张图片对应的Ground Truth,比如在图像复原任务中就是对应的清晰的图片,我们叫它参考图。在FR问题中,除了给出失真图像,还给出了无失真的参考图像,难度较低,核心是对比两幅图像的信息量或特征相似度,是研究比较成熟的方向。
半参考IQA:Reduced-Reference IQA
输入有1张图: 就是要评价的图,它可能是某个图像复原GAN模型生成的图片等等,我们叫它失真图。 在RR问题中给出了失真图像,没有参考图像,但是给了参考图像的部分信息。比如只有原始图像的部分信息或从参考图像中提取的部分特征,此类方法介于FR-IQA和NR-IQA之间,且任何FR-IQA和NR-IQA方法经过适当加工都可以转换成RR-IQA方法。进一步,NR-IQA类算法还可以细分成两类,一类研究特定类型的图像质量,比如估计模糊、块效应、噪声的严重程度,另一类估计非特定类型的图像质量,也就是一个通用的失真评估。一般在实际应用中无法提供参考图像,所以NR-IQA最有实用价值,也有着广泛的应用,使用起来也非常方便,同时,由于图像内容的千变万化并且无参考,也使得NR-IQA成为较难的研究对象。
无参考IQA:No-Reference IQA
输入有1张图: 就是要评价的图,它可能是某个图像复原GAN模型生成的图片等等,我们叫它失真图。 在NR问题中仅给出了失真图像。NR是最难的图像质量评价方法,是近些年的研究热点,也是IQA中最有挑战的问题。
1.1.2 常见的IQA数据集
具有广泛认可的IQA数据集有:LIVE,TID2008,TID2013,CSIQ,IVC 和 Toyama。给定这些数据集,然后就可以计算人类平均主观评分和客观IQA模型预测值之间的差异和相关性, 更高的相关性表明更好的模型性能。
1.1.3 常见的IQA指标
衡量图像质量评估结果的指标有很多,每种指标都有自己的特点,通常比较模型客观值与观测的主观值之间的差异和相关性。常见的2种评估指标是Spearman秩相关系数 (Spearman's Rank Order Correlation Coefficient, SROCC) 和线性相关系数 (Linear Correlation Coefficient, LCC) 。LCC也叫Pearson相关系数 (PLCC) ,描述了主、客观评估之间的线性相关性,定义如下:
其中 表示失真图像数, 、 分别表示第 幅图像真实值和测试分数, 、 分别表示真实平均值和预测平均值。
PLCC衡量的其实是 和 这两个向量之间的相似性。这两个向量越相似则PLCC的值越接近1,代表人类平均主观评分和客观IQA模型预测值之间的相关性越高,即我们的IQA模型越好。
SROCC衡量算法预测的单调性,计算公式为:
其中 、 分别表示 、 在真实值和预测值序列中的排序位置。
这个指标我们可以这样来理解:假设现在有 张图片,IQA算法为它们打分,排名分别是 。而与此同时人类也为它们来打分,排名分别是 。
假设现在如果这个IQA算法很完美,则IQA算法的排名应该是与真人的排名一致,即有:
此时带入公式计算得SROCC=1。
假设现在如果这个IQA算法很差劲,则IQA算法的排名应该是与真人的排名刚好完全相反,即人类认为好的图片,IQA算法认为很差,即有:
此时带入公式计算得SROCC=-1。
你可能有疑问了这个-1是咋算出来的,接下来我推导一波,会的童鞋请自觉跳过。
推导:
此时的
初中时候学过公式:
所以有:
将25.3代入25.4有:
再代入 有:
所以 。
除此之外,还有Kendall秩相关系数(Kendall Rank Order Correlation Coefficient, KROCC),均方根误差(Root Mean Square Error, RMSE)等评估指标。KROCC的性质和SROCC一样,也衡量了算法预测的单调性。RMSE计算MOS与算法预测值之间的绝对误差,衡量算法预测的准确性。
1.1.4 IQT具体方法
IQT的做法如上图1所示,主要由3部分构成:1个特征提取的backbone,1个Transformer的Encoder-Decoder,和一个预测头 Prediction head。
1 特征提取的backbone
特征提取的backbone使用了CNN,作者首先把失真图 (Distorted Image) 和参考图 (Reference Image) 都通过了CNN的backbone提取它们的特征,得到一个固定长度的特征向量。具体使用的backbone是Inception-Resnet-V2,权重是继承ImageNet的Pretrained weights并固定。使用的特征来自:mixed_5b,block35_2,block35_4,block35_6,block35_8,block35_10。这些特征都有相同的shape: ,把它们在channel的维度上concatenate在一起得到最后的提取特征: 。
把失真图得到的特征向量取名为 ,参考图得到的特征向量取名为 。接下来要输入给Transformer的是两个特征,其一是参考图的特征向量 ,其二是二者的差值 。
2 Transformer的Encoder
根据上面的描述,Transformer的Encoder输入的是 这个 的张量。
把它们提供1×1卷积,将channel变成Transformer的Embedding dimension ,再把它使用Flatten操作展平得到 的张量。同时,模仿ViT使用class token的做法,作者在这里也加了一个quality token,与输入张量concat在一起。这样输入张量的维度就变成了 。
对于位置编码而言,IQT没有使用ViT中的正弦位置编码,而使用了可学习的位置编码,其维度为: 。
所以Encoder的流程写成公式就是:
注意这里Layer Normalization的位置是在Add以后的,而不是先做LN,如下图2所示。再通过MHSA或者FFN。Encoder输出张量的维度是 。

3 Transformer的Decoder
与ViT不同的是作者还是用了Decoder的结构。Transformer的Decoder输入的是 这个 的张量。也是通过相同的Conv 1×1和Flatten操作变成了 的张量。同时,和Encoder里面的做法保持一致,作者在这里也加了一个quality token,与输入张量concat在一起。这样输入张量的维度就变成了 。同时,根据Decoder的性质,Encoder的输出张量 也会输入给Decoder的Multi-head Self-attention中的Key和Value。Decoder的流程写成公式就是:
注意这里Layer Normalization的位置是在Add以后的,而不是先做LN,再通过MHSA或者FFN。Decoder输出张量的维度是 。
4 预测头Prediction Head
最后一步是把Transformer Decoder的输出取出quality token对应的那一个patch的张量,其维度是 ,通过MLP层得到一个标量 (channel=1,代表这张失真图片的得分),这就是一个标准的回归问题。
Experiments:
数据集: LIVE Image Quality Assessment Database (LIVE),Categorical Subjective Image Quality (CSIQ),TID2013,KADID-10k,PIPAL
值得一提的是最后这个PIPAL数据集就是NTIRE 2021比赛中主办方给出的数据集,其中包含许多GAN生成的失真图像,其label就是人类给出的打分。现有的度量方法很难准确预测感知质量,下图3是这些数据集的特点:
超参数设置:
Transformer超参数:
| 参数 | 值 |
|---|---|
| Encoder层数 | 2 |
| Decoder层数 | 2 |
| head | 4 |
| Embedding dimension | 256 |
| MHSA中的MLP Expansion ratio | 4 |
| 预测头中的MLP Expansion ratio | 2 |
| 输入图片大小 | 256×256×3 |
| Patch数量N | 891 |
这里Patch设置的比较大,是因为作者将图片进行裁切 (crop),裁成了256×256×3的patch,patch之间是有重叠的。测试时随机选取M个patch得到的结果求加权和作为该图片的得分。
网络训练超参数:
| 参数 | 值 |
|---|---|
| 优化器 | Adam |
| 初始学习率 | 2×e-4 |
| 学习率衰减策略 | cosine learning rate decay |
| batch size | 16 |
| 损失函数 | MSE |
作者在KADID-10k数据集上训练模型并在LIVE,CSIQ,TID2013上进行测试,结果如下图4所示。
IQT的SROCC和KRCC指标的值是最有优势的。对于LIVE和TID2013数据集,作者提出的IQT在SROCC方面表现最佳。此外,在所有的测试中,IQT在SROCC和KRCC中都排名前三。
如下图5所示是一组图像,来自PIPAL validation dataset。其中最左侧的是真值,其它的是各种的失真图像。下面的一堆数字是使用各种IQA算法得到的结果,分别有:PSNR, SSIM, MS-SSIM, LPIPS, 和本文提出的 IQT。MOS代表平均主观得分(Mean opinion score, MOS) ,可以认为是人类的主观感受来打分,失真图从左至右MOS值越来越低,代表我们人类认为从左到右的图越来越丑。那么哪一个IQA算法更好,它的输出也应该是从左到右越来越差的。
结果发现, IQT预测的质量分数非常类似于MOS,表示在主观质量评价这一块,IQT方法是最好的。
IQT模型在PIPAL上进行测试,再次强调IQT模型是在KADID-10k数据集上训练的,测试结果如下图6所示。结果表明,IQT方法在验证集和测试集的性能都是最优的。
下图7所示是几个数据集上IQT预测得分和ground-truth MOS对应的散点图,我们可以看到在不同的数据集上IQT方法的预测结果和真值MOS相比都展现出了很强的相关关系,证明IQT是一种很不错的方法。
下图8为图5显示了IQT模型的attention map。可视化的方法是把不同层的attention map取平均,得到大小是 的attention map。再把第一行,即quality token对应的 个归一化权值resize成image的大小,作为输入图像的mask,与输入图像叠加在一起得到的结果。它指的是模型在预测感知质量时更关注的区域。结果显示,失真类型不同,注意力所在的区域也不同;而且,人类评价一个图片质量好坏时,看到整个图像很重要,然后也会集中在局部区域。而这个具体集中的位置可以由attention机制学习到。
IQT这个模型获得了NTIRE 2021 Perceptual IQA Challenge的冠军。对于这个比赛来讲,作者在NTIRE 2021 challenge提供的训练集上进行训练,采用了相同的模型结构以及训练和测试策略,超参数的设置如下:
Transformer超参数:
| 参数 | 值 |
|---|---|
| Encoder层数 | 1 |
| Decoder层数 | 1 |
| head | 4 |
| Embedding dimension | 128 |
| MHSA中的MLP Expansion ratio | 4 |
| 预测头中的MLP Expansion ratio | 1 |
| 输入图片大小 | 192×192×3 |
| Patch数量N | 441 |
作者将图片进行裁切 (crop),裁成了192×192×3的patch,patch之间是有重叠的。测试时随机选取M个patch得到的结果求加权和作为该图片的得分。
在PIPAL验证集上的散点图如下图9所示,可以发现模型的输出和真值MOS也具有极强的相关性。
NTIRE 2021 Perceptual IQA Challenge的冠军这个模型命名为IQT-C。但是,IQT-C是专门针对这个比赛而训练的,其在其他数据集LIVE,CSIQ,TID2013上的表现不如IQT (使用 KADID-10k数据集训练)。
小结:
本文给出2个模型:IQT和IQT-C,分别是在KADID-10k和PIPAL数据集上训练得到的,其中IQT-C是专门针对NTIRE 2021 challenge而训练的,二者结构相同但超参数设置上有差别。它们都是基于CNN和Transformer的,能够评判GAN生成的图像是好是坏的IQA模型,它的特点是一个为数不多的基于Transformer的IQA模型。而且侧重于Perceptual Image Quality Assessment,即:模型的输出结果更接近人类的感知结果。
Transformer+图像质量评价:TRIP
论文名称:Transformer for Image Quality Assessment
论文地址:
https://arxiv.org/ftp/arxiv/papers/2101/2101.01097.pdf
1 TRIP原理分析:
TRIP是第1个将Transformer应用于IQA任务的工作,其中的很多思想被后来的IQT得以借鉴。图像质量评估 (Image quality assessment, IQA) 实质上是一种识别任务,即识别图像的质量水平。作者第1个尝试研究如何在IQA任务中应用Transformer。现有的深度学习驱动的IQA模型主要基于CNN架构。一个典型的例子是使用CNN作为特征提取器,并在顶部的MLP来预测图像质量。与其他CV任务 (如目标检测或图像识别) 相比,IQA有一个特殊的特点:分辨率对图像质量有显著影响。 换句话说,图像质量可能会受到调整图像的大小的潜在影响,例如,降采样图像可能会降低其感知质量 (perceptual quality)。尽管图像 resize 的操作在深度学习模型中被广泛用于其他CV任务,但在IQA模型中应该避免。 一般情况下,Transformer可以接受不同长度的输入 (例如,包含不同数量单词的句子)。因此,还可以使Transformer编码器适应不同分辨率的图像,以构建通用的IQA模型。
作为第1个将Transformer应用于IQA任务的工作,TRIP的结构简洁明了,如上图10所示。
首先通过ResNet-50作为特征提取器,那么ResNet-50的中间层C2-C5的输出维度大小依次是:
将输出特征C5再经过1×1卷积得到 的特征,式中 为Transformer模型的Embedding dimension。
一个需要注意的问题是:如上文所述,Transformer模型不能像图像分类任务那样对图片进行resize操作,因为resize操作会影响图片的质量。再ViT模型中,图片都是被resize成相同的224×224×3的大小输入给模型,但是TRIP不能进行resize操作,所以在进行位置编码时就必须 定义了具有足够长度的位置编码以覆盖数据集中具有最大分辨率的图片。对于分辨率较小的图片,可以通过截断的方式来控制对应的位置编码长度。
此外,当输入图像具有较大的分辨率时,图像patch的数量 ( <

