深度学习中的卷积与反卷积
2017-07-16 16:31
162 查看
卷积与反卷积操作在图像分类、图像分割、图像生成、边缘检测等领域都有很重要的作用。为了讲明白这两种操作,特别是反卷积操作,本文将依照神经网络中的编码器——>解码器——>卷积——>反卷积 的思路来一步步介绍。
当输入向量的维度高于输出向量的维度时,神经网络就相当于一个编码器,实现了对高维向量的低维特征提取。例如下图从x到h的变换过程。
当输入向量维度低于输出向量维度时,神经网络就相当于一个解码器,实现了低维向量到高维向量的重构,如图中h到y的变换。
然而,普通的神经网络仅能对向量进行操作,常见的图像、音频等高维数据都需要展开成向量才能输入给神经网络,这大大破坏了数据在空间上的位置信息。
卷积与反卷积操作使得神经网络可以处理二维以上的数据。它最大的好处在于:1.保持了数据在空间上的位置信息;2.权重共享使得计算复杂度大大降低。
卷积操作的示意图:
蓝色图像为input feature map;绿色图像为output feature map
当有多个input and output feature maps时,卷积核用一个4-D数组表示:
output_channels,input_channels,filter_rows,filter_columns
output feature maps的个数与output_channels数目相等。
卷积操作的计算方式如下:
已知:
input size i
kernel size k
stride s
padding size p
则输出大小为:
输出size与输入size相同(i.e., o = i)
Full padding
输出size大于输入size
将大小为(3,3)的卷积核表示成如下图所示的(16,4)矩阵C.T(表示矩阵C的转置):
其中w的下标i,j分别表示卷积核的第i行第j列元素。
卷积的矩阵操作
将输入4*4的原始图像A展开成(16,1)向量,则将卷积核作用于图像A等同于下面的矩阵操作:
C * A = B
其中,B为卷积后得到的(4,1)向量,再reshape成(2,2)矩阵即为输出。
误差的反向传播
反卷积的矩阵操作
若输入图像A大小(2,2),则首先展开成(4,1)大小的向量,则将卷积核作用于图像A等同于下面的矩阵操作:
C.T * A = B
其中,B为卷积后得到的(16,1)向量,再reshape成(4,4)的矩阵即为反卷积操作的输出结果。
误差的反向传播
与卷积操作中误差反向传播时左乘C.T不同,此时需要左乘C。
下图为论文《Adaptive Deconvolutional Networks for Mid and High Level Feature Learning》通过deconvolutional networks学习图片特征的过程。右边为卷积通道,左边为反卷积通道。F、P分别表示卷积及pooling,F.T、U分别表示反卷积及unpooling。
网络通过调整feature maps(z)及filters(f)使得根据feature maps(z)及filters(f)重构的图像y^与原始图像y的差别最小:
网络学习过程:先固定filter学习feature map(inference),
再固定feature map学习filter(learning)。大致步骤如下图:图片中的红框代表inference,蓝框代表learning。
参考:
https://www.zhihu.com/question/43609045
http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic
编码器与解码器
神经网络本质上就是一个线性变换,通过将输入的多维向量与权重矩阵相乘,得到一个新的多维向量。当输入向量的维度高于输出向量的维度时,神经网络就相当于一个编码器,实现了对高维向量的低维特征提取。例如下图从x到h的变换过程。
当输入向量维度低于输出向量维度时,神经网络就相当于一个解码器,实现了低维向量到高维向量的重构,如图中h到y的变换。
然而,普通的神经网络仅能对向量进行操作,常见的图像、音频等高维数据都需要展开成向量才能输入给神经网络,这大大破坏了数据在空间上的位置信息。
卷积与反卷积操作使得神经网络可以处理二维以上的数据。它最大的好处在于:1.保持了数据在空间上的位置信息;2.权重共享使得计算复杂度大大降低。
卷积
卷积操作的作用类似神经网络中的编码器,用于对高维数据进行低维特征提取。卷积操作的示意图:
蓝色图像为input feature map;绿色图像为output feature map
当有多个input and output feature maps时,卷积核用一个4-D数组表示:
output_channels,input_channels,filter_rows,filter_columns
output feature maps的个数与output_channels数目相等。
卷积操作的计算方式如下:
已知:
input size i
kernel size k
stride s
padding size p
则输出大小为:
特殊的卷积操作
Half(same) padding输出size与输入size相同(i.e., o = i)
Full padding
输出size大于输入size
反卷积
反卷积通常用于将低维特征映射成高维输入,与卷积操作的作用相反。卷积与反卷积中的矩阵操作
将大小为(3,3)的卷积核表示成如下图所示的(16,4)矩阵C.T(表示矩阵C的转置):
其中w的下标i,j分别表示卷积核的第i行第j列元素。
卷积的矩阵操作
将输入4*4的原始图像A展开成(16,1)向量,则将卷积核作用于图像A等同于下面的矩阵操作:
C * A = B
其中,B为卷积后得到的(4,1)向量,再reshape成(2,2)矩阵即为输出。
误差的反向传播
反卷积的矩阵操作
若输入图像A大小(2,2),则首先展开成(4,1)大小的向量,则将卷积核作用于图像A等同于下面的矩阵操作:
C.T * A = B
其中,B为卷积后得到的(16,1)向量,再reshape成(4,4)的矩阵即为反卷积操作的输出结果。
误差的反向传播
与卷积操作中误差反向传播时左乘C.T不同,此时需要左乘C。
下图为论文《Adaptive Deconvolutional Networks for Mid and High Level Feature Learning》通过deconvolutional networks学习图片特征的过程。右边为卷积通道,左边为反卷积通道。F、P分别表示卷积及pooling,F.T、U分别表示反卷积及unpooling。
网络通过调整feature maps(z)及filters(f)使得根据feature maps(z)及filters(f)重构的图像y^与原始图像y的差别最小:
网络学习过程:先固定filter学习feature map(inference),
再固定feature map学习filter(learning)。大致步骤如下图:图片中的红框代表inference,蓝框代表learning。
参考:
https://www.zhihu.com/question/43609045
http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic
相关文章推荐
- 深度学习(四)卷积神经网络入门学习(1)
- 深度学习里神奇的1*1卷积核
- 深度学习(三十八)卷积神经网络入门学习(2.0)
- 非监督特征学习与深度学习(九)----使用卷积进行特征提取
- 深度学习系列(十):从卷积计算到卷积神经网络CNN
- 深度学习(四)卷积神经网络入门学习
- 卷积操作中的矩阵乘法(gemm)—— 为什么矩阵乘法是深度学习的核心所在
- 深度学习(九)之卷积网络②
- 深度学习1——深度学习(四)卷积神经网络入门学习(1)
- 深度学习2——深度学习(三十八)卷积神经网络入门学习(2.0)
- 深度学习中的卷积计算及caffe的实现
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层
- 深度学习(四)卷积神经网络入门学习(1)
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算
- 京东DNN Lab首席科学家:用深度学习搞定80%的客服工作
- 深度学习系列文章之二上:win7+Ubantu双系统装机步骤(硬盘安装)
- 学习Tensorflow,反卷积
- CNN中的卷积操作
- 深度学习(三十八)卷积神经网络入门学习(2.0)
- 长文干货!走近人脸检测:从?VJ?到深度学习(上)