这是2017 siggraph的一篇论文,寒假boss让我看这篇论文我没怎么看懂。最近在公司实习,发现该论文的成果已经移到手机端上了,效果还非常不错。这里我重新温习了一下这篇论文,发现有许多可以借鉴的地方,是一篇非常不错的论文,这里重新叙述一下,谈谈我的理解。
首先说一下这篇文章的整体思路,这篇文章对于图像增强的方法是,将图像首先做下采样,继续卷积下采样几次然后分别学习其全局特征和局部特征,并且结合之后再将其转换到双边网格之中。此外,对输入图像做仿射变换得到引导图,并将其用来引导前面的双边网格做空间和颜色深度上的插值,恢复到和原来图像一样大小。最后将得到的这个feature对原图像做仿射变换,得到输出图像。也就是说,整个过程就是再学习最后的那个变换矩阵。整体架构图如下所示:

在Introduction里,论文提出了其三个策略,分别是:
1. 将大部分的预测在低分辨的双边网格下进行,每个像素包括的x,y维和第三维可以表示颜色功能,可以用来在对3D双边网格做slicing操作的时候考虑到输入的颜色。
2. 学习输入到输出的变换过程,而不是直接学习输出,因此整个结构学习的是一个仿射变换。
3. 虽然大部分的操作是在低分辨下进行的,但是损失函数最终建立在原来的分辨率上,从而使得低分辨下的操作去优化原分辨下的图像。
这篇文章主要是在先前的基础上进一步改进的,包括联合双边上采样(JBU),这里是通过将双边滤波器作用在高分辨的引导图去产生局部平滑但是也保留边缘的上采样;双边引导上采样(BGU)则是引入了在双边网格里进行局部仿射变换,再通过引导图进行上采样。这篇论文实际上就是将BGU里的仿射变换操作通过网络进行学习。
进入正题,网络主要学习低分辨率下的仿射变换。图像增强不仅与图像局部特征有关,和图像的整体特征也有关例如直方图、平均亮度和场景类别(其实这里它就是想消除artifacts,不加global消除不了)。因此这里低分辨流的部分分成了局部特征和全局特征两个路径,最后融合成一个特征用来代表仿射变换。而对于高分辨流,这里主要的任务是在尽可能减少计算量的前提下,保留更多所需的高频部分和边缘信息,这里引入了双边网格里的slicing节点,该节点在引导图的基础上,在低分辨率网格的仿射系数中执行与数据相关的查找,从而实现上采样恢复到和原分辨率一样大的变换,最后作用在每个像素上并输出作用后的结果。
低分辨的特征提取
1.Low-level 特征
这部分没什么好说的,就是对图像进行下采样,通过一系列stride=2的卷积来实现(实际操作是先将图像resize成256x256再做这个特征下采样的),公式如下:

上式中,式中,I=1,…, nS n S 为每个卷积层的索引,c,c′为为卷积层的channels的索引.w′为卷积核权重矩阵, bi b i 为bias.激活函数σ采用ReLU,卷积时采用zero-padding。
从这里可以看出,图像实际上是缩小了 2nS 2 n S 倍,这个 nS n S 有两个作用,1.其驱动学习低分辨输入和最后网格里仿射系数的学习, n