图像质量评估-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)「建议收藏」

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 9.7 StringTokenizer类

    9.7 StringTokenizer类StringTokenizer类:解析字符串单词和split方法不同的是,StringTokenizer对象不使用正则表达式做分隔标记有时候要分析字符串并将字符串分解成可独立使用的单词,这些单词称为语言符号。对于字符串“Iamstudent”,如果把空格作为该字符串的标记,那么该字符串有三个单词(语言符号)。对于字符串“I,am,student”,如果把逗号作为该字符串的标…

  • Springboot activiti 整合Demo

    Springboot activiti 整合Demo

  • 如何通过 OIDC 协议实现单点登录?[通俗易懂]

    如何通过 OIDC 协议实现单点登录?[通俗易懂]什么是单点登录我们通过一个例子来说明,假设有一所大学,内部有两个系统,一个是邮箱系统,一个是课表查询系统。现在想实现这样的效果:在邮箱系统中登录一遍,然后此时进入课表系统的网站,无需再次登录,课表网站系统直接跳转到个人课表页面,反之亦然。比较专业的定义如下:单点登录(SingleSignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中…

    2022年10月21日
  • 微信第三方开发者答网友问 微信创业靠谱吗

    微信第三方开发者答网友问 微信创业靠谱吗一、基础常识1、所谓的第三方开发,就是腾讯公众平台内开放的开发者模式。用户可以根据个人不同的需求开发不同的功能。2、开发模式后,有两个需要我们去填写的东西:一个是ur,一个是token;简单的解释一下就是:url地址,第三方平台的地址;token是通往地址的接口。3、第三方的开发什么?就是一些功能模块。第三方是一个平台,微信公众平台管理也是一个平台。而url就是一个一条链接

  • c语言 背包算法,c语言背包问题(背包最大容量c语言算法)[通俗易懂]

    c语言 背包算法,c语言背包问题(背包最大容量c语言算法)[通俗易懂]求旅行者能获得的最大总价值。请用C语言编程下面是核心的代码(递归函数的代码)别的由你自己搞掂啦(在main函数中的实现,输入,输出的格式)s为一个背包可以放入的物品总重量.n为物品数,w[n]为物品重量.背包问题#includeintmax(intx,inty){if(x>=y)returnx;elsereturny;}intf(int*m,。1在代码风格上…

  • notifyDataSetChanged无效[通俗易懂]

    notifyDataSetChanged无效[通俗易懂]一、前言相信很多人都曾经被这个问题困扰,当然我也是这样过来的,原来以为只要数据变了,调用adapter的notifyDataSetChanged就会更新列表,然而结果却没有实现,其实是在一些细节上没有注意造成的,所以现在对这个问题进行下总结希望可以帮助到有需要的人。二、原因分析有以下三个原因:1、数据源没有更新,调用notifyDataSetChanged无效。2、数据源更新了,但是它指向新的引用,

发表回复

您的电子邮箱地址不会被公开。

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