Meta-SR: A Magnification-Arbitrary Network for Super-Resolution论文阅读笔记

1.论文要解决的问题

单一图像超分辨率旨在通过使用一副高分辨率图像降级后的低分辨率图像来重构这副高分辨率图像,即通过对一副低分辨率图像放大得到一副高分辨率图像,然而在现实生活中放大倍率或放大尺度不应当只是一个固定的正整数,任意尺度的放大有着极其重要的现实使用价值。例如,可以通过滑动鼠标滚轮来任意放大图像。然而,限于内存消耗等原因,我们不可能对于每一个尺度都训练一个模型并存储。因此,使用一个单一模型去解决任意尺度的放大是极其有必要的。

当前大多数研究只针对了单一尺度的放大,其upscale模块值针对单一的放大尺度,而对于任意尺度的放大研究很少。单一尺度的放大在现实场景中的应用是很局限的。为了构造单一模型能够放大任意尺度,upscale模块应当具备多组权重参数来应对不同的尺度因子。于是文章提出了一个模型,其upscale模块能够动态的为每一个尺度预测对应的权重参数。因此,不必要为每一个尺度因子去存储其对应的权重参数,只需要将upscale模块中的预测模型进行存储,每次只需要动态的预测对应尺度的权重参数即可,即使用模型去预测模型参数。

我们称这种方法为Meta-SR,其只包含两个模块:(1)特征学习模块;(2)Meta-Upscale模块。特征学习模块这里就不多说了,其实就是学习低分辨率图像特征的模块,而这里的Meta-Upscale模块这里先介绍一下。Meta-Upscale模块可以认为其内部存放了一个权重预测网络来预测一组卷积核,那么具体输出多少个卷积核呢,实际就是模型输出的高分辨率图像所具有的像素数目个,例如最终想要输出的高分辨率图像尺寸为H * W,则权重预测网络就预测输出H * W个卷积核,也就是高分辨率图片的每一个像素点有其对应的一个卷积核,这里不难想到,其实最终输出的高分辨率图像的每一个像素值实际就是其对应的卷积核在低分辨率特征图上对应位置进行卷积操作的结果。这个权重预测网络的输入为模型最终预测的高分辨率图像的每个像素点相对于原低分辨率图像像素点的位置偏移量信息以及所选取的放大尺度信息所组成的一个矩阵。

那么这样就可以使用一个模型去应对任意尺度的放大。只需要预测其对应的权重参数即可。

2.论文方法、模型结构、整体步骤

这里首先放一张模型整个的结构图,如下所示:

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution论文阅读笔记_第1张图片

这幅图中,我们不需要去过多的关注特征提取模块,即图b,而图a的RDB模块也只是图b中的一个子模块,因此也不需要过多关注,其只是起到提取低像素图像特征的作用。

需要重点关注的是图c的Meta Upscale Module,这个才是文章的重点(注意那个HW*3那个矩阵是属于图c中的输入内容,并不是图a的输出,有些人容易在这里看错),这里我个人认为HW * (inC * outC * k * k)写为HW * (outC * inC * k * k)可能更利于理解,之后会对此进行说明。

好了,这里详细说一下Meta Upscale Module。首先我们说一下单一图像超分辨率的任务就是给定一张有高分辨率图片IHR降级后的低分辨率图片ILR,即上图中的LR,以IHR为groud-truth产生一副高分辨率图像ISR。上图中FLR表示的是由低分辨率图像所提取的特征,假设放大尺度为r,即将低分辨率图像放大r倍。对于最终输出的高分辨率图像ISR中的任意一个像素点(i, j),其像素值由什么决定呢?实际就是由原低分辨率图片ILR相对应位置(i', j')的特征以及(i, j)所对应的卷积核(由Meta Upscale Module中的模型预测得到)来决定。因此Meta Upscale Module可以看作是由FLR到ISR的一个映射函数,其第一步要做的就是将ISR中的一个像素(i, j)映射到ILR对应像素(i', j'),第二部需要找到(i, j)对应的卷积核(由Meta Upscale Module中的模型预测得到),并使用此卷积核将原ILR的(i', j')对应的FLR上的特征映射到ISR中的(i, j),这样便可以获取到ISR的所有像素值。用数学负号表示就是:

其中ISR(i, j)表示ISR上(i, j)位置的像素值,FLR(i', j')表示ILR的(i', j')位置的特征,而W(i, j)就是ISR上的(i, j)像素对应的卷积核。Φ(.) 实际就是特征映射函数去计算ISR的像素值,实际就是Meta Upscale Module

由于对于输出的ISR的每一个像素都对应一个其特有的卷积核,因此对于不同的放大尺度r,输出的ISR的尺寸也就不一样,因此卷积核的个数以及卷积核中的参数都应当不一样。因此,为了实现单一模型实现任意尺度放大的目标,Meta Upscale Module基于尺度信息和坐标信息对于输出的ISR的每一个像素所对应的卷积核W(i, j)进行动态预测。

对于Meta Upscale Module,这里由3个重要的函数:

(1)坐标投影函数,如下图

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution论文阅读笔记_第2张图片

第一个一行和第3行那两幅图是表示尺度为2和尺度为1.5时由SR到LR的位置投影,而第2和4表示尺度为2和1.5时由LR到SR的投影,可以看到当尺度为1.5时,有时LR的一个像素对应SR的两个像素,而有的对应一个像素。

那么由ISR中的坐标(i', j')投影到ILR上的(i, j)的计算公式如下所示:

论文认为ISR的像素(i', j')是由ILR上的像素(i, j)的特征所决定的。式子中T表示转换函数,⌊⌋表示向下取整。

(2)权重预测函数

权重预测模块用于预测输出的ISR图像中每个像素所对应的卷积核。典型的upscale module对于每一个放大尺度r其预定义了卷积核数量,并通过从训练数据中进行训练学习来学得卷积核中的参数。与典型的upscale-module不同的是,文中中提出的Meta Upscale Module通过预测来获取卷积核,将其公式化如下所示:

W(i, j)表示ISR上的(i, j)所对应的卷积核,Vij表示一个与i, j相关的向量(实际还有尺度信息r),φ(.)其实就是前面提到的权重预测网络,其输入为Vij,θ表示权重预测网络中的参数。

Vij的计算公式如下所示:

可以看到,Vij这个向量中,实际不是使用的(i, j),而是使用的ISR上(i, j)相对于原ILR图(i', j')的偏移量。这从模型整个结构图中的c部分也可以看出,R(i) = i / r - ⌊i / r⌋,所以实际Vij = (R(i), R(j))。而为加入多尺度信息,这里在Vij中加入尺度因子信息1 / r,因此Vij = (R(i), R(j), 1 / r)。
这里从模型结构图中c部分可以看到Vij组成的矩阵,其形状为HW * 3,其中HW为ISR的尺寸,也就是说每一个像素(i, j)对应一行。同时我们也可以看出,权重预测网络的输出尺寸为
HW * (inC * outC * k * k),表示一共预测了HW个形状为(inC * outC * k * k)的卷积核,卷积核尺寸为k * k,即ISR中的每一个(i', j')对应有一个卷积核。前文中我说HW * (inC * outC * k * k)写为HW * (outC * inC * k * k)可能更利于理解是因为从c部分图中,特征的形状为N * inC * inH * inW,其中N应当为batch size,这样卷积核通道数可以和特征通道数对应起来,outC为最终ISR的通道数。

(3)特征映射函数

特征映射模块用于将ILR中像素对应的特征与权重预测函数所预测的卷积核像作用,最终产生ISR的像素值。即从FLR上提取ILR上的(i', j')的特征,然后预测所有ISR上(i, j)所对应的卷积核,最终选取(i, j)对应的卷积核与(i', j')的特征进行卷积运算得到ISR上的(i, j)处的像素值,使用数学符号表示如下所示:

其中FLR(i', j')表示ILR上的像素(i', j')在FLR上的特征,W(i, j)就是(i, j)所对应的卷积核。

最终整个Meta Upscale Module的算法流程如下图所示:

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution论文阅读笔记_第3张图片

到这里,整个算法的基本流程和原理已经介绍完了。这里对整个流程做个总结,整体步骤为:

(1)选取ISR上的像素(i, j)

(2)找到ILR上对应位置像素(i', j')在FLR上的特征FLR(i', j')

(3)权重预测网络进行权重预测,得到ISR上任意像素(i, j)所对应的卷积核

(4)选取(i, j)对应的卷积核W(i, j)与FLR(i', j')进行运算得到ISR上(i, j)位置的像素值

最后看一下模型的最终效果图:

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution论文阅读笔记_第4张图片

可以看到,模型效果还是很不错的。

你可能感兴趣的:(算法)