IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> [2021-ICCV] MUSIQ Multi-scale Image Quality Transformer -> 正文阅读

[人工智能][2021-ICCV] MUSIQ Multi-scale Image Quality Transformer

[2021-ICCV] MUSIQ: Multi-scale Image Quality Transformer

论文:https://arxiv.org/abs/2108.05997

代码:https://github.com/google-research/google-research/tree/master/musiq

概述

当前SOTA的IQA(图像质量评估)模型都是基于CNN的,基于CNN的模型通常受到在一个批次内,图像尺寸必须固定的限制,所以其输入图像通常会进行缩放或者裁剪,当然这会导致图像质量的下降。为了解决这个问题,本文设计了一个多尺度的图像质量transformer(multi-scale image quality transformer)来处理不同尺寸、不同长宽比的原分辨率图像。通过多尺度的图像表示,本文的模型可以捕捉到不同粒度(granularity)的图像质量。另外,本文提出了一种新型的基于哈希的(hash-based)二维空间嵌入方法和一种尺度嵌入,来作为多尺度表示中的位置嵌入。

在这里插入图片描述

上图中右侧(b)图是传统的CNN模型的做法,必须要缩放或者裁剪来固定输入图像尺寸,而这无疑会影响原图的图像质量;而左侧(a)图则是本文的多尺度图像质量transformer,基于图像块可以以多尺度的形式直接处理原图。

另外,由于MUSIQ只改变输入编码,因此它可以适应任何transformer变体,也就是说,本文提出的创新点是在编码阶段的处理方法,得到输入编码之后可以放到Swin、CvT之类的新型transformer里都是可以的。

本文的创新点总结如下:

  1. 本文提出一种基于图像块的多尺度图像质量transformer(multi-scale image quality transformer MUSIQ),可以处理不同尺寸、不同长宽比的全尺寸输入图像,并且可以提取多尺度的特征。
  2. 本文提出了一种新型的基于哈希的(hash-based)二维空间嵌入方法和一种尺度嵌入,来帮助transformer捕获空间间和尺度间的信息。
  3. 本文提出的MUSIQ在四个大规模IQA数据集上取得SOTA性能。

方法

模型框架

在这里插入图片描述

MUSIQ的整体结构如上图所示,首先得到输入图像的多尺度表示,包括原图和固定长宽比缩放(ARP(aspect ratio preserved) resized)的变体。不同尺度的图像被分成固定大小的图像块,然后被送入到模型中,由于图像块是来自不同的空间分辨率的图像,我们需要高效地将这些多种长宽比、多种尺度的输入编码为一个token序列,捕获像素、空间和尺度信息。

为此,本文设计了三个编码模块:

  1. 图像块编码模块
  2. 基于哈希的空间嵌入模块
  3. 可学习的尺度嵌入

分别对来自多尺度图像的图像块本身、每个图像块的二维空间位置、不同的尺度进行编码。

在将多尺度的图像输入编码为一个token序列之后,我们先准备一个额外的可学习的分类头classification head(CLS)。transformer encoder输出中的CLS token将作为最终的图像表示。然后在最后加一个全连接层来预测图像质量分。由于MUSIQ只改变输入编码,因此它可以适应任何transformer变体,也就是说,本文提出的创新点是在编码阶段的处理方法,得到输入编码之后可以放到Swin、CvT之类的新型transformer里都是可以的。

多尺度图像块嵌入

ARP resize = aspect ratio preserved resize 即固定长宽比缩放,后面不在赘述,直接简称ARP resize。

为了同时捕获局部信息和全局信息(各种多尺度方法的老说辞了^^),本文提出对图像的多尺度表示进行建模。

记全尺寸原图的高、宽、通道书分别为 H , W , C H,W,C H,W,C, 使用高斯核对全尺寸原图进行ARP resize(保持长宽比的缩放)之后的多尺度图像的高、宽、通道数分别为 h k , w k , C h_k,w_k,C hk?,wk?,C ,其中 k = 1 , … , K k=1,\dots,K k=1,,K K K K是每个输入的ARP resize变体的个数。为了将多尺度输入对齐,从而有一致的全局视角,将每个多尺度辩题的长边固定为 L k L_k Lk? ,从而:
α k = L k / m a x ( H , W ) , ??? h k = α k H , ??? w k = α k W \alpha_k=L_k/max(H,W),\ \ \ h_k=\alpha_kH, \ \ \ w_k=\alpha_kW αk?=Lk?/max(H,W),???hk?=αk?H,???wk?=αk?W
α k \alpha_k αk? 即为每个尺度的缩放因子。

从每个多尺度图像中切分出尺寸为 P P P 的正方形图像块。对于高、宽不是 P P P 的整数倍的图像,用零填充(这里笔者有个问题:既然都padding 0了,那不就相当于也将输入的尺寸固定了吗,既然可以padding,那什么网络都能处理原尺寸图像啊,没搞懂这样设计还有什么意义)。每个图像块被图像块编码器模块patch encoder module编码为 D D D 维的嵌入, D D D? 即为transformer中的隐层token尺寸。本文的patch encoder module使用了5层的ResNet而非线性映射。将patch encoder module输出的图像块嵌入拼接起来就得到输入图像的多尺度映射序列,来自原尺寸图像和ARP resize的多尺度图像的图像块个数就分别为: N = H W / P 2 N=HW/P^2 N=HW/P2 n k = h k w k / P 2 n_k=h_kw_k/P^2 nk?=hk?wk?/P2

对于输入图像尺寸不同导致的 N , n k N,n_k N,nk? 不同,从而序列长度不同的问题。本文采用了NLP中常用的pad+mask的方式来得到固定长度的输入,从而进行训练。前面提到过ARP resize图像的长边固定在 L k L_k Lk?? ,因此有 n k < = L k 2 / P 2 = m k n_k<=L_k^2/P^2=m_k nk?<=Lk2?/P2=mk? ,所以直接pad到 m k m_k mk? 即可。

基于哈希的二维空间嵌入

传统的固定长度的位置嵌入无法适应可变分辨率的输入,并且也无法对齐来自不同尺度但空间位置接近的图像块。

本文认为一个有效地适合MUSIQ的位置嵌入应当满足以下条件:

  1. 可以在不同长宽比、不同分辨率下有效地为图像块的空间信息进行编码;
  2. 不同尺度下空间位置接近的图像块应当有相近的空间嵌入
  3. 便于实现,不会干扰到transformer attention

据此,本文提出了一种基于哈希的二维空间嵌入(HSE),记某个图像块的位置在第 i i i 行,第 j j j 列,被哈希到 G × G G\times G G×G 的网格中的相应的元素。该网格中的每一个元素是一个 D D D 维的嵌入向量。即有一个可学习的矩阵 T ∈ R G × G × D T\in \mathbb{R}^{G\times G\times D} TRG×G×D ,输入尺寸为 H , W H,W H,W ,对于位置在 ( i , ? j ) (i, \ j) (i,?j) 的图像块,其空间嵌入被定义为 T T T 中的 ( t i , t j ) (t_i,t_j) (ti?,tj?) 位置的元素:
t i = i × G H / P , ??? t j = j × G W / P t_i=\frac{i\times G}{H/P},\ \ \ t_j=\frac{j\times G}{W/P} ti?=H/Pi×G?,???tj?=W/Pj×G?
D D D 维的空间嵌入 T t i , t j T_{t_i,t_j} Tti?,tj?? 逐元素地加到patch embedding上。为了快速查找,将 ( t i , t j ) (t_i,t_j) (ti?tj?)四舍五入到最接近的整数。

为了在不同尺度之间对齐图像块,来自不同尺度的图像块都映射到一个同样的表格 T T T。这样,在空间上位置接近但是来自不同的尺度的图像块也会被映射到 T T T中接近的嵌入上。因为 i i i H H H以及 j j j W W W与尺寸调整因子 α α α成比例变化。

T T T 的尺寸 G G G 存在一个trade-off, G G G? 过小会导致过多的哈希碰撞,从而使得模型无法分辨空间位置接近的图像块;过大则会导致浪费内存并且需要更多的分辨率来进行训练。

尺度嵌入

由于本文对所用的图像复用一个相同的哈希矩阵,HSE是无法分别来自不同尺度的图像块的,因此本文引入一个额外的尺度嵌入SCE来帮助模型分辨来自不同尺度的图像块。

本文将SCE定义为一个可学习的嵌入 Q ∈ R ( K + 1 ) × D Q\in \mathbb{R}^{(K+1)\times D} QR(K+1)×D ,因为输入有 K K K 个尺度的变体。 Q 0 ∈ R D Q_0\in \mathbb{R}^{D} Q0?RD 逐元素地加到所有的 D D D 维的原分辨率图像的pathch embedding上, Q k ∈ R D Q_k\in \mathbb{R}^{D} Qk?RD 分别逐元素地加到所有 k k k 尺度的patch embedding上。

预训练和微调

本文预训练还是在ImageNet上做的,预训练阶段会使用各种数据增广的方法来提升性能。

微调则是在图像质量和美学质量数据集上进行,在微调阶段,保持原尺寸图像作为输入,数据增广只采用对图像质量无影响的水平翻转。

本文的概述和方法就简单地介绍到这里,已经囊括方法思路和大部分细节,对实验有兴趣的话请到原文中自行查看。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:42:30  更:2021-08-18 12:45:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 19:50:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码