论文学习笔记: Convolutional Neural Pyramid for Image Processing

来源:互联网 发布:java中实例化是什么 编辑:程序博客网 时间:2024/05/16 10:58

论文学习笔记: Convolutional Neural Pyramid for Image Processing


原文链接:Convolutional Neural Pyramid for Image Processing


前言

今年刚出的文章,面对的是image restoration的问题。

既然是图像修复, 那么进行修复工作的依据,也就是信息来源,必然是图像的其他完好的区域。所能获取相关图像信息的范围越大,特征越丰富,进行修补工作显然是越容易的。

在卷积网络中,感受野这一概念被用来表示一个特征的信息来源在原图上的分布。其定义为 : 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。

关于感受野的概念和计算,可以参看这篇文档 : 卷积神经网络物体检测之感受野大小计算

按照原文摘要中的说法:

But corresponding neural networks for regression either stack many layers or apply large kernels to achieve it, which is computationally very costly.

为了获得更大的感受野,采用的方法往往是

  • 堆叠很多数量的网络层数
  • 采用大尺度的卷积模板

这就会消耗大量的计算资源。虽然还有像dilated convolution这样的稀疏的卷积模板,试图缓解计算量和感受野大小的矛盾,但其本质还是采用更大的卷积模板。

同时,原文也提到:

This analysis also reveals the fact that color and edge information vanishes in late hidden layers.

即采用更多的网络层数会使一些较小尺度的特征在逐层传播的过程中逐渐消失。

这篇文章提出的金字塔卷积网络, Convolutional Neural Pyramid(CNP),将CNN与图像处理中常用的尺度金字塔的概念结合了起来,能够在不显著增加计算量的情况下,扩大特征的感受野,同时保留不同尺度的特征,按照原文所给的实验结果,其图像修复、除噪、增强的效果和效率是明显优于其他的网络结构的。


论文概述

网络结构

先贴上最关键的网络结构图:

image_1bpu1vnkdmnj1p4v5e5tsb1b14t.png-159.7kB

可以看到,CNP将网络分成了许多级,各级之内进行的是一样的运算:提取特征(Feature Extraction)、映射(mapping)、重建(Reconstruction)。
各级的编号从0开始到N-1,编号越大,其代表的级内特征的尺度越大,也就是感受野越大。特征通过下采样(Down-sampling)的方法从低层传递到高层,通过上采样(Up-sampling)从高层回到低层。
由于原文应用的目标是图像的还原,所以输出的尺寸需要调整。故在用CNP网络得到了特征之后添加了一个调整尺度的网络结构(Adjustment)

特征提取 – Feature Extraction

和网络结构图中(b)图表现的一样,每一个特征提取模块由两个使用了PReLU作为激活函数的卷积层组成。关于PReLU的信息,可以参照:深度学习——PReLU激活

卷积层使用的是3×3的卷积模板,输出为56维。按照网络结构,i+1级的输入来自于i级的特征提取模块的输出。也就是说,对于第i级,特征在到达mapping的时候,已经经过了2(i+1)层的卷积运算,同时还进行了i次的降采样。

这种结构的安排是该论文的创新点之一,即自适应网络深度(Adaptive depth)。按照一般经验,感受野越大,所描述的特征尺度越大,需要经过的卷积层也越多,但是也会带来更大的计算量;进行的降采样次数越多,特征的尺度越大,但是整体的数据尺寸会减小,同时减小了计算量。卷积层的增加和降采样的叠加在这一结构下同步进行,两者同时增大了特征的尺度,但是其计算量并没有显著增加,因为他们互相抵消了

映射 –Mapping

映射模块由一个收缩层(Shrinking),S个非线性层(Nonlinear)和一个扩展层(Expanding)组成。这三种层都是卷积层,不同点在于卷积模板的尺寸。

收缩层采用了11的卷积核,将特征压缩到12维,非线性层采用了33卷积核,继续保持12维的特征,扩展层采用了11的卷积核,并且把特征扩展回56维。

S是一个超参数,文中有实验对其进行了调整验证,发现增大S对网络性能的提升并不大,从计算量性价比角度考虑,建议S=1

重建 –Reconstruction

重建操作是对第i级以及第i+1级的输出特征进行聚合的过程。原文测试了两种方法:串联(concatenating two outputs)和求和(element-wise sum of the outputs)。经过测试发现两者的效果并没有太大区别,从计算效率考虑,建议选用加和的方法。

下采样和上采样 –Down- and Up-sampling、

下采样

原文中的下采样比率为0.5, 并测试了两种下采样方法:最大池化和步长为2的卷积操作

For simplicity, we only consider resizing ratio 0.5 in our network. Two downsampling schemes
are tested – max pooling and convolution with a 3 × 3 kernel with stride 2. The simple max pooling works better in experiments due to preservation of the max response.

测试发现最大池化(max pooling)由于保存了图像的最大响应,其效果要优于步长为2的卷积操作。(而且计算量也更小)

上采样

上采样部分也是该论文的创新点之一。一般的“一步到位式”的上采样需要的卷积核的尺寸直接和采样输入和输出的大小有关。由于本文中的N1级的特征尺度和0级的特征尺度相差实在过大(2i倍),如果一步到位,所需要的卷积核会非常大,而且同时会带来学习困难和不精确的问题。

所以该论文采用了渐进式上采样(Progressive Upsampling)方法,在第i级上进行的上采样的对象是第i级和第i+1级两者输出特征的聚合结果。经过上采样之后,再与第i1层的输出特征进行聚合,再进行下一步的上采样。

这样的渐进式的上采样只需要很小的卷积核,计算简单,易于学习。

原文提到:

Further, information in level i − 1 is upsampled with the guidance from level i since the upsampling kernel is learned between the two neighboring levels.

以及

We simply implement the upsampling operation as a deconvolution layer in Caffe

显示出这一上采样的模板是可以通过学习优化的,而且内置于Caffe,这一学习的细节未在文中给出,本人对Caffe也没什么了解,所以还需要再加探索。

关于基于卷积核的上采样,可以参考:图像卷积与反卷积,有动图,很直观。

CNP整体算法

image_1bpu5g69p44n1apc1nv5hvbpki1a.png-76.3kB

还是很简洁明了的。

测试部分

原文进行了大量的应用测试。
主要包括深度图像(Depth image)的修复及修复效果和CNP的级数N之间的关系:
image_1bpu5kmmc4gom5qhqk1dk01h8c1n.png-533.8kB

可以发现对大尺度的特征的调用能够显著地提升修复的效果。

同时也进行了除噪操作,其除噪效果明显要由于其他的方法。其中衡量除噪效果用了峰值信噪比(PSNR),可以参看峰值信噪比


学习总结

该论文致力于解决的是不同尺度的特征共存与计算量之间的妥协问题。

在传统的深度网络中,小尺度特征出现在靠前的网络中,大尺度特征出现在靠后的网络中,前者容易在网络层间传播的过程中逐渐消失,无法体现在最终的结果上。虽然当下热门的ResNet方案将不同层之间添加直连会一定程度解决这一问题,但是与此同时会使计算量的问题更加恶化。

CNP巧妙地将增加网络深度与降采样对特征尺度的增幅作用叠加,同时用两者对计算量的相反的影响互相抵消互补,使整体的计算量保持在一个较为恒定的范围。

所以,CNP方法对模式尺度差异问题的处理,很妙啊~

最后:

images (3).jpg-6.2kB

阅读全文
0 0