1. 程式人生 > >卷積與反捲積的理解

卷積與反捲積的理解

在文章:
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處理.最後總結一句,卷積,反捲積,都是卷積操作,導致名稱不同的是
卷積所處的位置,同時卷積輸入和輸出的大小,以及卷積前對輸入所做的處理