图片质量评估在现实中有着非常广泛的应用。例如, 对于用户上传的图片,选择比较美观并且清晰的图片作为相册封面或者缩略图,或是进入推荐系统推荐给其他用户。图片质量一般可分为像素级的技术质量(technical quality)和美学质量(aesthetic quality)。 前者跟照片的模糊程度、噪点及压缩块效应等各种因素有关(例如, 在摄影中, 这通常取决于器材和拍照的参数设置), 后者则与人类主观上的情绪和美学感受有关,取决于人们自身的审美角度、经验和审美能力。从方法上, 图片质量评估又可分为无参考的方法和有参考的方法, 这里的参考指的是是否存在一张标准的参考图片。在现实场景中, 通常并没有图片可以作为参考, 因此无参考的方法使用更加广泛。
在深度学习流行起来之后, 学术界快速将深度卷积网络使用到了图片质量评估上。通常的做法是,使用在大规模分类数据集(一般都是ImageNet)上的预训练模型(如AlexNet, VGG等), 再做fine tuning来预测图片的平均质量得分。
考虑到质量得分的主观性, 相同的图片不同的人打出的质量分可能差别很大(对应的是方差很大), 例如, 毕加索的画便有许多的人无法欣赏,这个现象是无法反应在平均值上的。因此,在论文《NIMA: Neural Image Assessment》中, Google Research的研究人员将预测的目标修改为了图片的质量得分的分布。具体来说, 将得分从低到高划分为N(N=10)个桶, 归一化后得到用户得分落在每个桶的概率。每个桶都可以看成是一个类别, 因此, 图片的质量预测成了一个多分类问题。网络结构如下:
由于这些类别之间存在序关系, 对于分类器而言, 将5错分为6和将5错分为10, 这两种情况下的错误程度差别是很大的。而通常的交叉熵损失函数无法反应这种情况。 在文中, 作者使用的是 Earth Mover’s Distance, 定义如下:
其中, CDF为累积概率分布, 定义为:
$$
CDF_p{k} = \sum_{i = 1}^{k}{p_{s_i}}
$$
在 Keras中, 其实现如下:
1 | from keras import backend as K |
在文中, 作者使用的是L2距离, 因为方便求导。
作者在3个图片质量相关的数据集, AVA, TID2013和LIVE数据集上分别进行了训练和测试, 同时对比了VGG, InceptionV2和MobileNet这3个流行的网络结构。在AVA数据集上的结果数据如图:
其中, LCC代表 linear correlation coefficient, SRCC代表 Spearman’s rank correlation coefficient, EMD代表Earth Mover Distance。
可以看出,Inception-v2 网络的准确度已经与当前的state of the art持平,并且NIMA由于只需要进行一次前身计算, 性能远远胜出。
TID2013上的结果如下:
与最高水平还有一点点差距, 不过贵在简单高效。
作者还给出了基于AVA数据集的模型在风景这个类别下的预测结果(平均分和方差):
可以看到, 整体上比较符合人类的感官认知。
在文中, 作者也提到, 通过对色调、对比度的调整可以提高图片的美学质量分。 由此可以指导自动化的图片编辑, 比如自动增强图片, 即寻找图片的最优对比度、色调等参数, 使得其美学质量分最大化。如果这个过程本身是可微分的(例如采用的是神经网络), 那么可以通过类似Actor-Critic的模型端到端地解决。
实现:
- idealo.de 公司的实现: https://github.com/idealo/image-quality-assessment
- 博客文章: Using Deep Learning to automatically rank millions of hotel images by idealo
Комментарии