图像质量评估-NIMA(Neural Image Assessment)「建议收藏」

1.背景图像质量和美学的量化一直是图像处理和计算机视觉长期存在的问题。技术质量评估测量的是图像在像素级别的损坏,例如噪声、模糊、人为压缩等等,而对艺术的评估是为了捕捉图像中的情感和美丽在语义级别的特征。通常情况下,图像的质量评估一般分为两种:有参照(Full-Reference,FR):PSNR(峰值信噪比)、SSIM(标准-结构相似度)等图像质量评分系统无参照(No-Referen…

大家好,又见面了,我是你们的朋友全栈君。

图像质量评估-NIMA(Neural Image Assessment)「建议收藏」

1. 背景

图像质量和美学的量化一直是图像处理和计算机视觉长期存在的问题。技术质量评估测量的是图像在像素级别的损坏,例如噪声、模糊、人为压缩等等,而对艺术的评估是为了捕捉图像中的情感和美丽在语义级别的特征。

通常情况下,图像的质量评估一般分为两种:

  • 有参照(Full-Reference,FR):PSNR(峰值信噪比)、SSIM(标准-结构相似度)等图像质量评分系统
  • 无参照(No-Reference,NR):需要依靠模型来进行评估

但无论是哪种方式,都是为了得到的评分结果接近人类评分。

传统的基于深度卷积神经网络的图像质量评价方法中,一般都是先用一套经典图像数据库(如ImageNet等)训练系统,初始化权重,然后利用人工分类后的不同质量图像进行微调,进一步训练系统。然而,这些方法通常简单地将图像分为低质量和高质量的两类,范围有些狭窄。为了得到更准确的图像质量预测,我们提出的方法可以得不出同的预测评级,更接近于真实的评级,更适用于一般图像。

2. NIMA

NIMA基于最新的深度物体识别(object detection)神经网络,能够从直接观感(技术角度)和吸引程度(美学角度)预测人类对图像的评估意见的分布。文中提出的神经网络的打分具有与人类主观打分很相近的优点,因此可以用于图像质量评估工作。

在训练数据集中,每张图像都与人类直方图相连接,但是传统的美感评分系统还是只能将图像质量分为好或者不好两种。NIMA算法没有采用这种分类方法,也没有使用回归平均分的方法,而是对任意图像都生成评分直方图–即对图像进行1-10分的打分,并直接比较同一主题的图像。 这种设计跟人类评分系统产生的直方图在形式上吻合,且评估效果更接近人类评估的结果。

3. 论文贡献

论文的主要目的是通过CNN预测图像质量得分的分布,将分数的分布作为直方图来预测。同时根据人类对图像的评价概率分布,计算出EMD-based loss,进行反向传播。之所以这样做的原因是,EMD在有序分类上有很好的表现,因此将其作为损失。不用回归而用分类是因为根据相关文献指出,基于分类的做法的效果更好些而这个分类也不是纯粹的相互独立地分类,因为类与类之间也有比较关系,而EMD-based loss可以做到这点。

4. 本文方法

本文方法基于图像分类架构,试过VGG16,Inception-v2(Rethinking那篇,不是BN),MobileNet。
在这里插入图片描述
baseline网络用ImageNet预训练权重。训练时图像首先被缩放到256×256,然后随机裁剪224×224。值得注意的是,本文也试过不缩放直接随机裁剪的训练方法,不过结果不行。还有个数据增强方法是水平翻转crop。

本文的目的是预测图片评分的分布。简单来说,最后一层 FC 层的10个 unit 分别输出该图片获得 1 ~ 10 分的概率。然后平均值和标准差这么计算:

在这里插入图片描述
在这里插入图片描述

5. 损失函数

在这里插入图片描述
其中, C D F p ( k ) CDF_p(k) CDFp(k),【也就是预测评分的概率的累加值,而不是独立的预测获得每一个评分的概率。以此代替分布。在 label 中,评分越高,累计概率越大。在 predictions 中,因为用了 softmax 确保每个独立概率都大于零 (且和为1),因此 predictions 的累加概率也能随评分单调递增。】

在本文中 r 取值为 2. 作者表示这样可以使梯度下降收敛的更快。

5. 数据集

5.1 AVA dataset

25万张图,美感分数由业余摄影师给出。每张图平均有200个人打分。分数范围从1到10。
在这里插入图片描述
平均分在5.5分左右。平均标准差在1.4。越靠近中间的分数分歧越小,越靠近两边的分数分歧越大。
在这里插入图片描述

5.2 Tampere(TID2013)数据集

属于全参考这种。以柯达提供的25张图作为参考,每张图有5个级别,24种类型(噪声,模糊,颜色扰动。。)共120个扰动,最后得到3000张图。分数范围从0-9。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 LIVE IN the Wild Image Quality Challenge Database

包含1162张由移动设备捕获的照片,每张照片的平均从175个不同的主题来打分,分数范围是1-10.不像AVA数据集,每张图都有分数分布,TID2013和LIVE只提供平均分和标准差
在这里插入图片描述
在这里插入图片描述
不像AVA数据集,每张图都有分数分布,TID2013和LIVE只提供平均分和标准差。

6. 实验

6.1 照片排序

评估的时候按类别分别排序,而不是全部统一排序。 下图说明除了图像本身的内容外,其他如色调,对比度和照片组成物也是美学质量的重要因素。
在这里插入图片描述
下图说明除了图像语义,框架和调色板也是关键因素。
在这里插入图片描述

6.2 图像增强

以最大化NIMA得分作为先验,可以增加似然度,它是增强感知质量的似然度。通常通过在各种摄影条件下的大量实验来选择增强算子的参数,例如图像去噪和对比度增强,需要耗费大量的人力物力。本文提出的模型用来增强的更多细节可见作者发表的另一篇文章『Learned perceptual image enhancement』NIMA模型可以指导多层拉普拉斯滤波器找到其参数在美学上接近最佳的设置。

在这里插入图片描述
在这里插入图片描述

7. 论文复现

在 Github 上找到了本文方法的非官方复现代码:https://github.com/titu1994/neural-image-assessment/

这位小哥不仅提供了复现代码,复现结果,还很友好地把训练完成的模型上传了。

下面先展示下复现小哥的复现结果:
在这里插入图片描述
看起来挺棒的对不对?我和模型得出了一样的结论——第二行中间的图片最好看。然后我就很开心地拿自己的图片上来做测试了。用的是复现小哥最为推荐的 Nasnet Mobile 结构 + 小哥提供的训练好的 weights

结果如下。在下图中,最右上角的是我的原始图片,然后通过修正对比度得到一系列的图片(按对比度从小到大进行排序,即对比度越小越倾向于黑白)。然后模型就炸了…… 从黑白照到高对比度的彩照,模型得出的分数都是差不多的。
在这里插入图片描述
我认为本文的方法在我的对比度测试中表现较差的原因可能有2个:

  • 审美有很多层面,比如构图,色彩等。本文提出的方法是对照片整体进行评分,因此当照片的某个特定层面 (或细节) 被改变时,模型不能正确工作。
  • 我的这张图片与训练模型所用的数据集(AVA Dataset)的分布相去甚远。

8. 最后

图像质量评估-NIMA(Neural Image Assessment)「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125571.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python正则匹配数字和小数

    Python正则匹配数字和小数正则匹配数字,\为转义字符,d+为匹配一次或多次如下所示:返回的结果为列表  2.正则匹配小数如下所示,返回的结果125.6为字符串 

    2022年6月17日
    38
  • BYTE 和 COleVariant 相互转换

    BYTE 和 COleVariant 相互转换#include     BOOL GetBinaryFromVariant(COleVariant & ovData, BYTE ** ppBuf, unsigned long * pcBufLen)  {    BOOL fRetVal = FALSE;      //Binary data is stored in the variant as an array of

    2022年7月18日
    12
  • java标记符_java标识符的书写规则

    java标记符_java标识符的书写规则标识符就是给java中的类,方法,变量起名字的符号。规则:1.可以由字母,数字,下划线,美元符号组成,但是不能包含@,%,空格等其它特殊字符,不能以数字开头。2.不能是java的关键字,比如static,import,float,int,abstract还有好多这里就不一一例举了,需要的可以自己百度。3.对大小写是敏感的,比如一些包名和类名以及变量名我们虽然大小写不会报错,但是我们需要尽可能的规范…

    2022年7月8日
    15
  • traceroute和tracert原理

    traceroute和tracert原理一、Traceroutetraceroute命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。路由器收到TTL为1的包文减1后直接丢弃,然后回复ICMP(type=11,code=0,TTLequals0duringtransit——传输期间生存时间为0)。目标主机收到traceroute的UDP探测包回复ICMP(type=3,code=3,端口不可达)。Linux上称之为traceroute,Windos类似的功能为trace

    2022年9月24日
    0
  • win7系统的IIS服务器如何解除上传200k限制

    win7系统的IIS服务器如何解除上传200k限制

    2021年8月20日
    62
  • Java入门基础知识点总结(详细篇)

    Java入门基础知识点总结(详细篇)Java入门基础知识点总结(详细篇)~~~~~目录1.1图解1.1.1Java基础知识点1.1.2Java基础语法的相关内容1.2关键字1.3标识符1.3.1标识符概念1.3.2定义标识符的合法规则1.3.3Java中的一些命名规范1.4变量1.4.1变量的分类1.4.2整数类型1.4.3浮点类型1.4.4字符类型char1.4.5布尔类型boolean1.5ASci…

    2022年7月7日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号