论文笔记 -- RankIQA: Learning from Rankings for No-Reference Image Quality
I.介绍
由于收集、传输、储存的过程以及外部条件如摄像机的移动,图像经常会被失真。
IQA是一项自动预测图像质量的技术。IQA预估的结果必须与MOS值高度相关。MOS即平均主观意见分数,是由许多人评估出来的分数。
IQA已经被广泛地应用到了图像质量很重要的场景,像图像修复,高清图像,图像检索。
RankIQA:对于任何对图像我们都知道哪张的质量更高些,并由此产生按质量好坏排好序的数据集的一种方法称为RankIQA
我们通过使用孪生网络,来学习根据质量对图片排序,然后我们把从排好序的图片集学习到的信息,传递到一个传统的CNN网络。为了提高IQA的精确度,这个CNN还经过了fine-tuned
从已经失真的参考图像学习IQA特征的想法来自于Zhang et al.[44]
II.相关研究
传统的NR-IQA方法:分为自然场景统计(NSS)和基于学习的方法
在NSS中,作出了这样的假设:不同质量的图片对特定的过滤器有不同的统计响应。
Wavelets【20】,DCT【23】,Curvelets[18] 都是从不同的子带中提取特征。这些特征分布是参数化的,如广义高斯分布
这些方法的目的都是估计分布参数,从而推断出质量评估分数。
【19】从空域提取出NSS特征得到了显著的提升。
在基于学习的方法中,局部特征被提取出来并映射,用于进行MOS测试,例如支持机器回归或者神经网络。
codebook算法不是直接利用局部特征,而是结合不同特征。 没有MOS值的数据集可以通过无监督学习用于建立codebook。由于现有的数据集很小,所以无监督学习尤为重要。Saliency maps(显著性映射?)用于对人类视觉系统建模,可以提高这些方法的精确度
关于NR-IQA的深度学习:
相关论文:
【1】S. Bianco, L. Celona, P. Napoletano, and R. Schettini. On
the use of deep learning for blind image quality assessment.
arXiv preprint arXiv:1602.05531, 2016. 2, 6
【11】L. Kang, P. Ye, Y. Li, and D. Doermann. Convolutional
neural networks for no-reference image quality assessment.
In Proceedings of the IEEE Conference on Computer Vision
and Pattern Recognition, pages 1733–1740, 2014. 2, 8
【12】L. Kang, P. Ye, Y. Li, and D. Doermann. Simultaneous estimation of image quality and distortion via multi-task convolutional neural networks. In Image Processing (ICIP), 2015
IEEE International Conference on, pages 2791–2795. IEEE,
2015. 2, 3
目前主要难题是,需要大型已上标签的数据集
【11】:对32X32大小的图像块进行考量,增大了可用于训练的数据。
【12】:设计了一个多任务的CNN,同时识别失真类型和进行图像评估
【1】:提出了利用一个预先训练好的网络来缓和缺少训练数据的缺陷。
从一个预先训练好的模型中提取的特征在一个IQA数据集上fine-tuned。然后这些特征被用于训练一个SVR模型,来把特征映射为IQA分数
在本论文中,我们提出了一个截然不同的方法来解决数据集不足的问题:
我们利用大量的根据质量排好序的自动生成的图像来训练深度神经网络。
学习排序:
这些方法通过减小排序损失,从真实排序中学习排序函数。然后这个函数就能应用在对测试物体进行排序。
【25】中用SGD方法进行双行排序学习。
【5】结合排序学习和CNNs, 孪生网络在人脸识别问题上取得了很大的成功
【41】中进行图像块的比较也受益
【6】中结合不同的人工提取特征,去代表IQA数据集中的图像对
本论文中,目的不在于学习排序,而是将学习排序作为一种增大数据集的技术
Hard-negative mining for Siamese network training(为孪生网络创建负样本)
hard negative mining
众所周知,对训练孪生网络的配对进行抽样的一种朴素的方法是次优的。
【29】:提出了一个正样本和负样本策略来前向传播一对图片,并用反向传播来采样最高损失的数据对。然而,hard mining带来的是高计算代价。
【24】:提出semi-hard pair selection,并认为 认为选择最差的一对会导致糟糕的局部极小值。batch size是1800个样本左右
【33】:作者取了1 batch的数据对,并在mini-batch中选择4个差的负样本。为了解决差的局部优化,优化一个光滑的上界损失函数,以利用所有可能的在小批量的数据对的。
在本论文中,我们提出了有效的孪生网络反向传播,这一方法不依赖于负样本的选择。相反地,它考虑所有在mini-batch中可能的数据对。
这样做的好处是,深度网络训练的主要计算瓶颈,即图像在网络中的正向传播,得到了最优的利用
III. NR-IQA 中的排序学习(本论文的理论知识)
3.1 overview
我们可以对一个小型未加标签的数据集加上不同大小的退化因子,从而知道他们质量的好坏。
要注意的是,在这样一个排好序的图像集中,对于任意的图片我们是没有完整的IQA分数的,但我们知道每张图片之间哪张的质量更高。
从这些排好序的图片学习好后,为了解决IQA问题,我们对小型图像质量数据集进行fine-tune。
The overall pipeline of our approach is:
A.综合排序的图片
我们综合生成这些图像在一定的失真强度范围内的变形。
B.训练用于排序的孪生网络
利用高效的孪生网络反向传播方法,并用一系列排好序的图片训练一个孪生网络
得到的结果就是一个可以根据图片质量对图片进行排序的孪生网络
C.Fine-tune
深度学习 Fine-tune 技巧总结
最后,我们提取出孪生网络中的单个分支,然后把它微调(fine-tune)到IQA数据上。(在这里我们注重的是在这个网络中学习到的参数,而不是排序本身)
这样就能高效地校准网络,最后输出IQA测量结果
3.2 用于排序的孪生网络
孪生网络的两个分支完全一致,有同一个损失模型,并在训练中共享权值。
网络的输入是一对图片以及对应的标签,产生的两个输出用于传递到一个损失模型。
损失函数关于模型所有参数的梯度用反向传播进行计算。并用随机梯度方法进行权重的更新。
特别地,给一个图片x 作为网络的输入,代表x的输出特征记作f(x, θ)。这个输出特征从最后一层的激活中获得。
这里θ是网络参数,然后我们会用y代表图像的真实值,即对于图像质量评估就是它的实际质量分数。
因此,在我们的孪生网络中,最后一层的输出总是一个代表着图片质量的标量。
由于我们的目的是排序图片,数据对的排序铰链损失函数是: 理解Hinge Loss (折页损失函数、铰链损失函数)
默认排名顺序是:分支x1的质量高于分支x2的,从上式可知: 当网络的结果与默认排名顺序一致时,梯度为零。
当网络的结果和默认排名顺序不一致时,我们降低排名较高的那个的梯度,增加排名较低的那个的梯度。
得出这个Loss对模型参数θ的梯度,可以用SGD训练孪生网络。
3.3 高效的孪生反向传播
孪生网络的一个缺点就是需要大量的计算。
考虑所有可能的由三个图片生成的图片对。在一个标准的实现中,所有的这三个图片需要通过这个网络两次,因为每一张图片分别出现在两个图片对中。
由于孪生网络的两个分支是完全一样的, 我们实际上做了两次必要的工作,因为任何图像只需要通过网络传递一次
正是利用了这个想法,我们使反向传播更有效。事实上,在没有任何附加计算的情况下,我们也可以将所有可能的数据对考虑进mini-batch。
我们为这个网络增加一个新层,这一新的层在网络的最后以及计算损失之前,用于在一个mini-batch中产生所有可能的数据对。
这一方法消除了数据对选择问题并提升了效率。
接下来要近似高效孪生反向传播的加速程度。
如果我们有一个参考图片,对它加上n个等级的失真放到我们的训练集中,那么在一个传统的实现过程中,我们将需要向网络传输n2-n个图片。
而在本论文中,我们提出每张图片只传输一次,并且只在损失计算层中考虑所有可能的数据对,这将使需要传输的图片减少为n个
所以加速程度是n-1。
最好的情况是当n=M, M是mini-batch中的图片数量。因此加速程度就取决于mini-batch大小。
由于在一个小批量中所有对的集合之间具有很高的相关性,我们期望最终的收敛速度会更低。
为了简化标记,令yi=f(xi;θ)
对于一对输入的损失是:
l
12
l_{12}
l12是一个标签,表示KaTeX parse error: Expected group after '_' at position 6: x_1和x_̲之间的关系,比如表示是否x1 顺序高于 x2。
是孪生网络的所有参数
为了简化,我们忽略了θ和g之间的映射关系。这个损失对模型的所有参数的梯度是:
由于孪生网络共享权重,所有以上的梯度是两个分支的梯度的和,并且计算y1,y2时用的是同一参数。
考虑mini-batch中的所有数据对的损失是:
L=g(y1, y2, l12)+g(y1, y3, l13)+……+g(y1, yM, l1M)+g(y2, y3, l23)+……+g(yM-1, yM, lM-1M)
对应的梯度是:
总
体
来
说
,
就
是
当
y
i
和
y
j
的
差
大
于
m
a
r
g
i
n
时
,
a
i
j
=
0
,
当
y
i
和
y
j
的
差
小
于
m
a
r
g
i
n
时
a
i
j
=
l
i
j
.
因
为
大
于
m
a
r
g
i
n
时
希
望
梯
度
为
0
,
而
小
于
m
a
r
g
i
n
时
才
要
调
整
,
比
如
l
i
j
=
1
时
,
y
i
大
于
y
j
,
此
时
需
要
调
小
关
于
y
i
的
梯
度
,
调
大
关
于
y
j
的
梯
度
。
总体来说,就是当y_i和y_j的差大于margin时,a_{ij}=0,当y_i和y_j的差小于margin时a_{ij}=l_{ij}.因为大于margin时希望梯度为0,而小于margin时才要调整,比如l_{ij}=1时,y_i大于y_j,此时需要调小关于y_i的梯度,调大关于y_j的梯度。
总体来说,就是当yi和yj的差大于margin时,aij=0,当yi和yj的差小于margin时aij=lij.因为大于margin时希望梯度为0,而小于margin时才要调整,比如lij=1时,yi大于yj,此时需要调小关于yi的梯度,调大关于yj的梯度。
以上是考虑一种失真的计算过程。当有D种失真类型时:
3.4 fine-tune for NR-IQA
IV.实验结果
数据集
产生排序图片的数据集 | 用于fine-tune的IQA数据集 |
---|---|
Waterloo | LIVE |
Places2(验证集) | TID2013 |
网络结构
网络结构 | Shallow | AlexNet | VGG-16 |
---|---|---|---|
结构 | 4个卷积层,1个全连接层 | 将输出改为1通道 | 将输出改为1通道 |
训练和测试的策略
从原来的高分辨率图像中随机采用出子图像,防止引入不必要的失真。
采样图片的大小取决于每一个网络
为了获得上下文信息,采样图片至少为原来图片的三分之一
在我们的实验中,我们采样了227X227和224X224像素的图片。
SGD
高效训练孪生网络的初始学习率=1e-4
fine-tune学习率:1e-6
在训练中,我们在每epoch中对每一张训练图片取样一个子图片
在测试时,我们如论文【1】中那样,随机从原始图片采样了30张子图片。所有子区域的输出的平均值就是每张图片的最后分数
评估 协议
4.3 从排序学习中进行NR-IQA
孪生网络和IQA辨别能力
为了验证排序网络辨别 图像质量进行实验:
网络结构 | 训练集 | 测试集 | 失真类型 |
---|---|---|---|
孪生网络 | Place2 的validation dataset(进行5个等级的失真处理) | Waterloo dataset(进行5个等级的失真处理) | JPEG失真 |
问题?横纵轴分别是什么?横轴为网络输出,纵轴是图片个数。我猜
同种颜色为同一失真等级。在同一失真等级中,获得不同分数的 图片个数分布。
从图中可以看出,网络的输出值对不同的失真等级有一定的区分度
高效的孪生反向传播
本实验的目的是评估我们提出的孪生网络反向传播方法的效率。
要进行对比的方法:
网络结构 | 标准随机对采样 | 负样本采样(hard-nagative mining) | 高效孪生反向传播方法 |
---|---|---|---|
AlexNet | 在每一mini-batch中从训练集随机采样36个样本对 | 先是在1mini-batch中取36个样本对,然后每5000回合逐渐增加样本对的数量 | 在每一mini-batch传输72个样本对失真 |
基于以上的设置,计算代价是一样的。
在JPEG失真下的收敛率如下图所示:
如上图可知,高效孪生反向传播方法不仅收敛得更快,而且可观地获得了更低的损失。
网络性能分析
网络结构 | 训练集 | 测试集 | 重复次数EXP |
---|---|---|---|
孪生网络 | 80% of LIVE | 20% of LIVE | 10次 |
为了得到好的性能,在接下来的实验中,我们都用带有预训练权重(ImageNet上训练)的VGG16网络来训练排序网络。
论文原文:
X. Liu, J. v. d. Weijer and A. D. Bagdanov, ”RankIQA: Learning from Rankings for No-Reference Image Quality Assessment,” 2017 IEEE International Conference on Computer Vision (ICCV), Venice, pp. 1040-1049, 2017.
论文代码:
Caffe.
Tensorflow(亲测可实现)