备注:2021年,有代码
1、摘要:
目前存在的方法都有哪些问题:缺乏大量有label的数据集,尤其是对于真实失真图像没有参考图像,label也很匮乏。
我们的方法:以一种自监督的方式获得图像质量表示,最大的特点就是不需要lable。使用失真类型和失真程度作为辅助任务来从未标记的数据集中学习特征。这个数据集中既有合成失真,也有真实失真。因为从NRIQA的角度来看,我们希望获得一个对合成和真实失真都有效的模型,所以我们训练一个CNN模型来解决辅助任务。方法简称CONTRIOUE。同时在评估期间,CNN权重被冻结并且线性回归映射学习到的特征到质量分数。
2、主要方法
我们的目标是学习辅助任务,输入一张失真图像,我们希望模型可以区分图像所属的失真类型和失真程度,同时对它进行正确的归类。所以我们将图像质量评价从一个回归问题转化为分类问题。然后在推理阶段,根据原任务(图像质量评价)对在辅助任务中训练得到的模型进行评估,获得最终的质量分数。
网络框架:
(1)辅助任务
推导过程:假设对于合成失真图像一共有D种类型的失真,每种失真类型下有L种失真程度。所以一共有(包含原始图像)。
主要由一个编码器f(.)和投影头g(.)组成。(但是论文中给出的网络结构图似乎并没有标出“投影头”部分)输入一张图像x(∈R 3*H*W)
h是编码器的一个D维输出,z是投影头的输出。请注意,整个模型z的输出是一个K维向量(其中K是本设计中的超参数)。其目标是获得属于同一类的图像的相似表示z。衡量两张图像之间的相似度:
合成图像的损失函数:
P(i)是包含与xi(但不包括索引i)和jP(i)j属于同一类的图像索引的集合,|P(i)|是它的基数
对于真实失真例如UGC图像,由于失真类型和程度的复杂性,我们假设每一张真实失真图像单独属于一个类别,除了它的缩放和转换版本。
损失函数:
总损失:
N是一个batch中的图像数量,l是判断输入图像是合成还是真实失真的一个函数。在训练过程中,为了避免偏置,每一个batch,Iteration中合成与真实失真图像取等量。
(2)之前的文章有使用多尺度特征来获得显著的视觉质量。
所以我们使用两种尺度,一个是全尺度和一个经过下采样的半尺度,在半尺度之前使用抗混叠滤波器避免混叠。 过程中保留图像的长宽比,改变比例会影响图像质量。
对图像进行随机裁剪为M*M,若小于M*M,则进行补零操作。假设裁剪不影响图像的失真类型,裁剪后的图像依旧继承了原图像的失真类型。
(3)质量保持转换增强
不改变图像质量的操作称之为图像质量变换。使用水平翻转、颜色空间转换和带通变换。使用不同的颜色空间动机是为了提取跨不同领域呈现的互补质量信息,使用了4种:RGB,LAB,HSV,灰度。网络框架中,对输入图像进行裁剪后随机选择颜色空间。不使用积极的增强技术,比如颜色抖动,高数模糊,随机调整大小,MixUp,AutoAugment等等,因为它这些方法会修改失真信息,不能保持图像质量。
(4)图像裁剪是P*P大小不重叠的图像块。假设不论是合成还是真实失真裁剪的图像块都继承了原图像的失真类型,不需要继承它的感知质量。
(5)使用辅助任务学习到的模型进行原任务的质量评估。
在辅助任务训练完成后,丢弃掉“投影头”网络g(.),使用编码器网络h=f(.)的输出作为图像表示。使用在冻结的编码器网络上训练的正则化线性回归器(ridge regression)。回归权重是在包含GroundTruth真值的合适的IQA数据集上训练的。ridge regression可以表示为:
W是一个与h具有相同维数的可训练向量,λ是正则化参数,M是h的维数,N是训练集中出现的图像数。与训练类似,我们遵循多尺度约定,并在两种分辨率下计算特征:全尺度和半尺度,最终表示是两种尺度的串联。在计算期间,所有表示都是按照输入图像的原始分辨率计算的,不执行额外的数据增强。
疑问:为什么要对图像使用质量不变的操作?为什么结构图中没有“投影头”部分?对合成失真图像和真实失真图像之间求损失,是因为我们希望模型既能学习到合成图像的特征,也能学习到失真图像之间的特征,所以两者之间的差别应该越小越好吗?
还是有很多细节没有看懂,对文章的结构也不清晰明了。科研之路道阻且长呀.........
参考文章:图解SimCLR框架,用对比学习得到一个好的视觉预训练模型_ronghuaiyang的博客-CSDN博客
[论文阅读](Image Quality Assessment using Contrastive Learning)_我的昵称怎么改不了啊的博客-CSDN博客