论文阅读笔记 | MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment

文章目录

文章链接:https://doi.org/10.48550/arXiv.2004.05508

文章题目

MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment

发表年限

2020

期刊/会议名称

Published in: 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

论文简要

  • 本文提出了一种基于深度元学习的 NR-IQA 指标。其基本思想是学习人类在评估具有各种失真的图像质量时所共享的元知识,然后可以轻松地适应未知的失真。
  • 首先作者收集了针对不同失真的多个 NR-IQA 任务,然后采用元学习来学习不同失真共享的先验知识。
  • 最后,在目标 NR-IQA 任务上对质量先验模型进行微调,以快速获得质量模型。
  • 广泛的实验证明,所提出的指标在很大程度上优于现有技术水平。此外,从合成失真中学习的元模型也可以轻松推广到真实失真,这在IQA指标的实际应用中是非常理想的。

动机

  • 训练 DCNNs 严重依赖于大量带注释的数据。由于通过人工标注图像质量非常昂贵且耗时,因此收集大规模的图像质量数据来训练 DCNNs 的 IQA 模型是困难的。IQA 是一个典型的小样本问题。现有注释的 IQA 数据库的规模通常是有限的,因此直接使用这些数据库来训练深度 IQA 模型很容易导致过拟合问题。
  • 大多数现有的基于深度卷积神经网络 DCNNs 的 IQA 指标都是基于预训练的网络运行的。这些预训练的网络不是为 IQA 任务设计的,会导致模型在评估不同类型的图像退化时出现泛化问题。预训练模型并不是为 IQA 任务设计的,因此它们无法轻松适应新类型的失真。
  • 在现实世界的情况下,人类可以轻松从具有各种失真的图像中获得质量先验知识并快速适应对未知失真图像的质量评估,因此对于 NR-IQA 方法来说,学习人类在评估具有各种失真的图像质量时的共享先验知识至关重要。

主要思想或方法架构

  • 作者通过一些已知失真类型的 NR-IQA 任务来学习一个共享的质量先验模型,然后针对未知失真的 NR-IQA 任务进行微调。方法的整体框架如图所示,包括两个步骤,即质量先验模型的元训练和未知失真的 NR-IQA 的微调。
  • 在第一步中,作者利用一些特定失真的 NR-IQA 任务建立一个元训练集,进一步将其分为支持集和查询集两个子集。然后使用从支持集到查询集的双层梯度下降方法来学习质量先验模型。
  • 深度回归网络由卷积层和全连接层组成。卷积层来自于一个常用的深度网络,作者采用全局平均池化(GAP)操作来生成全连接层。然后,作者添加另一个全连接层来生成作者深度回归网络的输出。
  • 特别地,对于输入图像 x x x,作者将其输入深度网络,生成图像的预测质量分数 y ~ \tilde{y} y~,定义为:
  • 其中 θ θ θ 为初始化后的模型参数。作者使用欧氏距离的平方作为损失函数,其形式如下
  • 其中 y y y 为输入图像 x x x 的 g r o u n d − t r u t h ground-truth ground−truth 质量分数。
  • 从许多特定失真的 NR-IQA 任务中获得元训练集 。
  • 其中, D s P ( τ ) {D_s}^{P(τ)} DsP(τ) 和 D q P ( τ ) {D_q}^{P(τ)} DqP(τ) 分别是每个任务的支持集和查询集, N N N 是总任务数。
  • 为了捕捉不同 NR-IQA 任务之间的通用模型,作者从元训练集中随机抽取 k k k 个任务作为一个小批次( 1 1 1 < k k k ≤ N N N)。
  • 对于小批次中第 i i i 个支持集 ,可通过欧氏距离的平方 L \mathcal{L} L 计算损失,并表示为 L τ i {\mathcal{L}}_{τi} Lτi( i i i ∈ \in ∈ { 1 , 2 , . . . , k 1,2,...,k 1,2,...,k})。
  • 作者利用更高效的随机梯度下降 S G D SGD SGD 方法来优化模型。
  • 首先计算与所有模型参数相关的损失函数 L τ i \mathcal{L}_{τi} Lτi 的一阶梯度,并定义为:
  • 接下来,作者使用 A d a m Adam Adam 优化器在支持集 D s τ i {D_s}^{τi} Dsτi ( i i i = = = 1 , 2 , . . . , k 1,2,...,k 1,2,...,k)上对模型参数进行 S S S 步更新。
  • A d a m Adam Adam 优化器的定义如下:
  • ε = 1 e − 8 ε = 1e−8 ε=1e−8
  • α α α 是内部学习率。
  • m θ ( s ) m_{θ(s)} mθ(s) 和 v θ ( s ) v_{θ(s)} vθ(s) 分别表示梯度的一阶和二阶原始矩,定义如下:
  • 其中 m θ ( s ) = 0 m_{θ(s)} = 0 mθ(s)=0 且 v θ ( s ) = 0 v_{θ(s)} = 0 vθ(s)=0
  • μ 1 μ_1 μ1 和 μ 2 μ_2 μ2 是 m θ ( s ) m_{θ(s)} mθ(s) 和 v θ ( s ) v_{θ(s)} vθ(s) 的指数衰减率。
  • g θ ( s ) g_{θ(s)} gθ(s) 表示第 s s s 步中更新后的梯度 。
  • 模型参数 θ ′ i {θ^{'}}_i θ′i 可以通过 A d a m Adam Adam 优化器在查询集 D q τ i {D_q}^{τi} Dqτi ( i i i = = = 1 , 2 , . . . , k 1,2,...,k 1,2,...,k)上进行 S S S 步更新,具体形式如下:
  • 这里的 m θ ′ ( s ) m_{{θ^{'}}(s)} mθ′(s) 和 v θ ′ ( s ) v_{{θ^{'}}(s)} vθ′(s) 分别表示梯度的一阶和二阶原始矩。
  • 对于 k k k 个任务的小批次处理,所有任务的梯度被整合以更新最终的模型参数,定义如下:
  • 其中 β β β 是外部学习率。
  • 通过这种方法,作者在元训练集 D p ( τ ) m e t a {D^{p(τ)}}_{meta} Dp(τ)meta 上迭代地对 k k k 个 NR-IQA 任务进行采样来训练深度回归网络 f θ f_θ fθ。
  • 最终,通过双层梯度优化的元学习可以获得适用于各种图像失真的质量先验模型。
  • 在第二步中,作者在目标 NR-IQA 任务上对质量先验模型进行微调,以获得质量模型。
  • 在对于未知失真的微调中,在从若干特定失真的 NR-IQA 任务中训练质量先验模型后,作者将使用该模型作为先验知识,在具有未知失真的 NR-IQA 任务上进行微调。
  • 对于来自目标 NR-IQA 任务的 M M M 张训练图像,并带有注释的质量分数,作者对于第 i i i 张图像的预测分数和真实分数使用欧氏距离的平方作为损失函数,其定义如下:
  • 然后,作者利用 A d a m Adam Adam 优化器在 NR-IQA 任务上对质量先验模型进行 P P P 步的更新,定义如下:
  • 其中 α f α_f αf 是微调的学习率。 m θ ( p ) m_{θ(p)} mθ(p) 和 v θ ( p ) v_{θ(p)} vθ(p) 分别表示梯度的一阶和二阶原始矩。

  • 最终,可以获得用于评估具有未知失真图像质量的质量模型。

  • 值得注意的是作者提到他所提出的方法的微调过程不需要学习额外的参数,这极大地提高了学习效率,并增强了模型的泛化能力。

实验结果

  • 为了验证作者提出的元模型对未知失真的泛化性能,作者通过在 T I D 2013 TID2013 TID2013 和 K A D I D KADID KADID- 10 K 10K 10K 数据库上使用留一失真交叉验证,将所提出的方法与六种最先进的通用 NR-IQA 方法进行了比较。
  • 表中列出了所提出的方法和最先进的 NR-IQA 方法的测试 S R O C C SROCC SROCC 值,每种失真类型的最佳结果以粗体标记。
  • 可以看到,作者提出的方法在两个数据库上的总体性能(平均结果)都大大优于其他方法。
  • 在TID2013数据库中,作者提出的方法对超过一半的失真类型的SROCC值大于 0.9 0.9 0.9,这表明提出的基于元学习的 NR-IQA 方法可以有效地学习共享质量先验模型,并快速适应未知失真类型的 NR-IQA 任务。
  • 为了进一步研究所提出的方法的有效性是否来源于元学习,作者进行了消融实验。
  • 基线方法是首先直接使用 A d a m Adam Adam 优化器在特定畸变的图像上训练网络模型,然后在真实畸变图像的训练集上对模型进行微调。
  • 与基线方法相比, M e t a I Q A MetaIQA MetaIQA 具有更好的泛化性能,可以在不改变网络结构的情况下提高 NR-IQA 模型的性能。
相关推荐
Sammyyyyy20 分钟前
结构化决策模型 Jev 实战笔记,3 个原语、4 个限制、5 个落地场景
人工智能·笔记·开发工具·编程语言
东方芷兰21 分钟前
Agent 技术摘要 05 —— BP、SaaS、B2B、C2B、B2C
java·笔记·python·语言模型·自然语言处理
数聚天成DeepSData27 分钟前
公开数据怎么找才可用?DeepSData 从需求到验收的实操流程
人工智能·深度学习·机器学习·数据集·deepsdata
Chen—LSN31 分钟前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
ai小陈35 分钟前
深度学习CUDA异步报错定位:从错误堆栈到最小复现
运维·人工智能·深度学习·ai·gpu算力
HwJack2038 分钟前
【共创稿事节】HarmonyOS 7手势识别交互:空中手势的语义与容错设计
人工智能·深度学习·华为·交互·harmonyos
Rocky Ding*41 分钟前
GPT-6.1 Sol大模型深度解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·gpt-6.1 sol
星恒随风1 小时前
Linux开发工具详解(一):软件包管理、Vim、GCC/G++、Makefile与进度条实战
linux·运维·笔记·学习·vim
小小、码农1 小时前
Ubuntu / Linux 软件安装完整笔记
linux·笔记·ubuntu
奋进的LY1 小时前
spacy的安装和使用教程
人工智能·python·深度学习·github