RankIQA-论文笔记

RankIQA


        RankIQA是2017年的一篇应用于无参考图像质量评价领域的优秀论文,它发表于当年的ICCV。文章创新性地将Siamese网络的相关思想应用于图像质量评价模型的预训练中,并提出了一系列用于预训练IQA模型以及优化Siamese网络的实用方法。读完之后受益颇深,且引发了进一步思考。本文接下来将结合原论文并根据自身理解详细介绍RankIQA图像质量评价模型的训练全过程。

主要思想:

        近些年来由于深度神经网络在图像数据处理的各个领域均取得了显著成效获得可观成果,因此越来越多的学者开始尝试将深度神经网络应用于图像质量评价,但与其他图像处理识别任务不同,对图像质量的评定带有很强的主观因素且需要评定者有很强的专业素养,因此大多数的图像质量评价数据集均由相关专业的群体包含几百的专业人士根据给定的参考图像进行打分,这是一件十分耗费人力的工作同时也导致数据集的构建成本十分高昂,因此目前图像质量评价领域的相关数据集均为小型数据集,将其直接用于特大深度神经网络模型的训练极易引发过拟合,无法真正地表达出其他图像的质量水平。因此作者受到启发,虽然标注有明确质量信息的相关数据很难获得但通过给图像添加干扰获得一系列的受损图像却可以根据添加的干扰多少对其进行排序,通过这种排序好的数据集进行预训练就可以解决目前状态下质量评价数据集缺少的问题。
        首先本文中作者预训练时使用的Siamese网络为共享权重的孪生神经网络,在实际代码中用于对比的两个失真图像实际上也是经过同一个网络进行正向传播获得输出并进行对比的,对于文中的Siamese网络而言它的两个分支完全相同且属于一个图像将获得一个对应的标量输出,这一标量就表示了模型对于输入图像质量分数的预测,在预训练阶段标注信息是图像的质量排名,而Siamese网络也将对比这一标量并对模型进行优化,而在最后的微调阶段这一标量将用于拟合图像的质量分数标注,并通过MSE损失计算相关误差。本文接下来的内容将详细介绍预训练阶段Siamese网络的训练实现。

Hinge Loss(折页损失函数,铰链损失)

        根据坐着的介绍,RankIQA的预训练任务目标是根据图像质量对图像进行排序因此引入了pairwise ranking hinge loss(图像对之间的铰链损失函数):
        为了更好地理解上述公式的含义本文接下来一段的内容将简单介绍一下Hinge Loss。Hinge Loss是机器学习领域中的一种损失函数,其最著名的应用是作为SVM在二分类情况下,公式如下:

L(y) = max(0 , 1 – t⋅y)

其中,y是预测值(-1到1之间),t为目标值(1或 -1)。其含义为,y的值在 -1到1之间即可,并不鼓励 |y|>1,即让某个样本能够正确分类就可以了,不鼓励分类器过度自信,当样本与分割线的距离超过1时并不会有任何奖励。目的在于使分类器更专注于整体的分类误差。在实际应用中,一方面,预测值y并不总是属于[-1,1],也可能属于其他的取值范围;另一方面,很多时候我们希望训练的是两个元素之间的相似关系,而非样本的类别得分。所以下面的公式可能会更加常用:

L( y, y′) = max( 0, margin – (y–y′) )

= max( 0, margin + (y′–y) )

= max( 0, margin + y′ – y)

其中,y是正确预测的得分,y′是错误预测的得分,两者的差值可用来表示两种预测结果的相似关系,margin是一个由自己指定的安全系数。我们希望正确预测的得分高于错误预测的得分,且高出一个边界值 margin,换句话说,y越高越好,y′ 越低越好,(y–y′)越大越好,(y′–y)越小越好,但二者得分之差最多为margin就足够了,差距更大并不会有任何奖励。这样设计的目的在于,对单个样本正确分类只要有margin的把握就足够了,更大的把握则不必要,过分注重单个样本的分类效果反而有可能使整体的分类效果变坏。分类器应该更加专注于整体的分类误差。

举个栗子,假设有3个类cat、car、frog

img

第一列表示样本真实类别为cat,分类器判断样本为cat的分数为3.2,判断为car的分数为5.1,判断为frog的分数为 -1.7。那这里的 hinge loss 怎么计算呢?

这里是让其他两类的分数去减去真实类别的分数,这相当于计算其他类与真实类之间的误差。因为我们希望错误类别的评分低于正确类别的评分,所以这个误差值越小越好。另外,还使用了一个边界值margin,取值为1,为了使训练出的分类器有更大的把握进行正确分类。

有多种 hinge loss 的变化形式,比如,Crammerand Singer提出的一种针对线性分类器的损失函数:

img

Weston and Watkins提出了一种相似定义,只不过用相加取代了求最大值

img

        本文中所使用的Hinge损失即为上述中包含maigin的公式。
        上图即为原始Hinge损失的求导公式,为了方便计算作者为其增加了标志位(0,1,-1)用于表示两图片之间的排序关系。

Efficient Siamese backpropagation:

在反向传播阶段,对于模型参数的更新作者并未采用随机梯度下降算法而是采用了批梯度下降算法,这样一来假如我们所设置的batch-size为n那我们就可以先进行n次的正向传播完成这一batch中所有图像的处理之后再根据他们的处理结果计算hinge损失并求得均值进行反向传播。这样一来一个batch中的图片每张都只需要进行1次正向处理就可以与其余的n-1张图片完成对比,极大地降低了计算成本同时也有效保证了更新的有效性。此外在进行梯度计算时,作者采用了矩阵计算,利用GPU也极大地提升了运算效率。



评论

此博客中的热门博文

An overview of gradient descent optimization algorithms.

Visual Mechanisms Inspired Efficient Transformers for Image and Video Quality Assessment

SROCC, KROCC, PLCC, RMSE