在文章:
Fully Convolutional Networks for Semantic Segmentation
网址:https://arxiv.org/abs/1411.4038
中有下面的一段话:
3.3. Upsampling is backwards strided convolution
Another way to connect coarse outputs to dense pixels is interpolation. For instance, simple bilinear interpolation computes each output yij
from the nearest four inputs by a linear map that depends only on the relative positions of the input and output cells.
In a sense, upsampling with factor f is convolution with a fractional input stride of 1/f. So long as f is integral, a natural way to upsample is therefore backwards convolution (sometimes called deconvolution) with an output stride of f. Such an operation is trivial to implement, since it simply reverses the forward and backward passes of convolution.
Thus upsampling is performed in-network for end-to-end learning by backpropagation from the pixelwise loss.
Note that the deconvolution filter in such a layer need not be fixed (e.g., to bilinear upsampling), but can be learned. A stack of deconvolution layers and activation functions can even learn a nonlinear upsampling.
In our experiments, we find that in-network upsampling is fast and effective for learning dense prediction. Our best segmentation architecture uses these layers to learn to upsample for refined prediction in Section 4.2.
在某种程度上,用一个系数f进行上采样,等价于一个卷积,其stride等于1/f.只要f是整数,
一个很自然的进行上采样的方法就是反向卷积(backwards convolution,也叫deconvolution),
其输出stride为f,要实现这个操作很麻烦,且琐碎,因为他只是将卷积的前向与反向进行了翻转.
因此,上采样在网络中的作用是进行端到端的学习,通过像素级别的loss来反向传播
注意到反卷积滤波器是不需要固定的(例如双线性上采样),却是可以学习的.
一系列反卷积层和激活函数的堆叠甚至能够学习到一个非线性的上采样
在我们的实验中,我们发现,网络中的上采样在用于学习稠密预测时,是快速而且高效的.
我们最好的图像分割网络结构使用这些层来学习上采样
上面是对这段英文的翻译,下面是自己的总结(按自己的理解,不知道有没有错):
一个反卷积神经网络,类似于神经网络,但是经过训练后,任何隐藏层的特征能够用于重建上一层,
(并且通过层间的重复,最后输入能够被输出重建)
这使得他能够进行无监督的学习,这可以学习到通用的高级别的特征,
反卷积类似于卷积,但是他的作用是通过反向训练,达到从输出重构输入的效果,而这也是full
convolution network中使用卷积替代最后的全连接层,并将这些用于替代的卷积输入输出做相应处理:
使得输出变成和输入图像一样大小,并将卷积前的输入进行padding处理.最后总结一句,卷积,反卷积,都是卷积操作,导致名称不同的是
卷积所处的位置,同时卷积输入和输出的大小,以及卷积前对输入所做的处理