解卷积解析
Deconvolution Networks(论文解析)
作者:elfin 资料来源:deconvolution论文
1、简介
Deconvolution Networks是在AI领域第一次使用Deconvolution的先驱,但是它并没有提出解卷积层的概念,而是再其下一篇文章中提出(参考其他论文)。两篇文章的资源参考:
-
Deconvolution Networks:链接:https://pan.baidu.com/s/1enZN1n1HGZW3e1En7ap-mA
提取码:g3ii -
Adaptive Deconvolutional Networks for Mid and High Level Feature Learning
链接:https://pan.baidu.com/s/1b9T7QVyph7wHsN9l9S_QRg
提取码:88w9
2、摘要
除了边缘原语之外,构建健壮的中低层图像表示是一个长期存在的目标。许多现有的特征检测器在空间上聚集边缘信息,破坏边缘交叉、平行和对称等线索。我们提出了一个学习框架,其中捕捉这些中级线索的特征会自发地从图像数据中出现。我们的方法是基于稀疏约束下的卷积分解,并且是完全无监督的。通过建立这种分解的层次结构,我们可以学习丰富的特征集,这些特征集对于图像的分析和合成都是一种健壮的图像表示。
3、模型
我们首先考虑应用于图像的单个解卷积网络层。解卷积层的输入为特征图\(y^{i}\),由\(K_{0}\)个通道组成,分别为通道:\(y_{1}^{i}、y_{2}^{i}、\cdots、y_{K_{0}}^{i}\) 。我们使用\(K_{1}\)个隐特征图\(z_{k}^{i}\)与过滤器\(f_{k,c}\)的线性和表示这个特征图的一个通道\(c\):
此后,除非另有说明,否则符号对应于矩阵。如果\(y_{c}^{i}\)是一个\(N_{r} \times N_{c}\) 图且过滤器为\(H \times H\) ,则这个隐特征图的size为\(\left ( N_{r} + H -1 \right )\times \left ( N_{c} + H -1 \right )\) 。但是上面的公式\((1)\)是一个没有证明的系统,为了得到一个唯一的解,我们在\(z_{k}^{i}\)上引入了一个正则化项来鼓励潜在隐特征图中的稀疏性。这让我们得到一个如下的总体损失函数形式:
其中,我们假设重建项为高斯噪声,正则化项为\(p\)范数。\(\lambda\)是平衡的一个超参数。请注意,我们的模型本质上是自顶向下的:给定潜在的特征映射,我们可以合成一幅图像。
注:
- 自顶向下是指由低分辨率向高分辨率变换的模型,这种结构可以重现源图的图像轮廓、主要特征;
- 自底向上是指由高分辨率向低分辨率变化的模型,这种模型可以提取特征,特征的感受野越来越大。
许多方法侧重于自底向上推理,但我们致力于获得高质量的潜在表征。
在第3.2节描述的学习中,我们使用一组图像\(y=\left \{ y^{1},\cdots ,y^{I} \right \}\),求\(\mathop{\arg\min}_{f,z}C_{1}\left ( y \right )^{2}\),每个图像的潜在特征图和滤波器。请注意,每个图像都有自己的一组特征图,而过滤器对所有图像都是公用的。
3.1 体系构建
上述架构从多通道输入图像产生稀疏特征图。通过处理特征图,可以很容易地将其堆叠起来形成层次结构。第\(l\)层的损失函数可以推出为如下的形式:
其中:
-
\(z_{c,l-1}^{i}\)是上一层的特征图;
-
\(g_{k,c}^{l}\)是一个固定的二进制矩阵,它决定了特征图之间的复杂度;
-
如下图所示,我们由\(l-1\)层得到很多新的特征图,并由此稀疏化得到高分辨率的\(l\)层特征图;
我们不在层之间执行任何池、子采样或分裂规范化操作,尽管它们很容易合并。
3.2 学习过滤器
为了学习过滤器,我们首先固定过滤器的值,最小化当前层的损失\(C_{l}\left ( y \right )\),然后固定特征图最小化\(C_{l}\left ( y \right )\)得到过滤器。这个过程实际上就是神经网络的前向传播与后向传播。
特征图推导:
给定\(l\)层输入与过滤器,我们可以得到\(l\)层的特征图。关于\(l\)层的特征图估计我们可以使用:
特征图的偏导:
注意这里的\(c\)可以理解为通道指标。
上面的公式我们可以使用矩阵乘法的形式给出:
关于矩阵\(A\)的解我们可以显示地给出:
另一方面关于\(x_{k,l}^{i}\)我们可以由如下公式取值得到:
过滤器的偏导:
根据上面的偏导公式我们就可以实现对参数进行更新迭代了。
下面是算法的整个过程:

有特征图与卷积核之后,要重构“图像”实际就是实现高分辨率、高超分辨率的特征图,这个正是解卷积网络层的主要功能。关于解卷积建议参考https://www.cnblogs.com/dan-baishucaizi/p/14397940.html。
4、小结
由上面的公式与参考文章https://www.cnblogs.com/dan-baishucaizi/p/14397940.html,我们大概可以get到其本质,那么作者到底是怎么定义它的?
在文献Adaptive Deconvolutional Networks for Mid and High Level Feature Learning中,首先我们知道解卷积的主要作用是重构图像,注意这个重构的图像是抽象的高级语义。下面的图片有效地展示了其功能:

明显随着模型框架的层数堆叠,对象的主要轮廓信息被学习到并重构可视化!
重构这种图像有什么用,实际上在语义分割、实例分割等方向上,这非常有用,因为我们知道在高分辨率下能够重构实例,那么分割也不是问题。换句话说,计算机只需要寻找上面图片中的轮廓即可,而计算机重构这张图片难道不整数利用了这种位置信息吗?所以这可以证明其实现分割不是难事!
5、deconvolution正式提出
解卷积一词在深度学习领域的正式提出,是在Adaptive Deconvolutional Networks for Mid and High Level Feature Learning中。
5.1 作者提出的可视化框架

这里有卷积层、池化层组成!
5.2 接卷积定义
如上图所示,输出的重构\(\hat{y}_{1}\)(c是通道索引)是可以由上一层的2D特征图(单通道)与过滤器卷积后求和得到:
星号表示2D卷积操作。上面的公式到底是什么?下面是我的白话解释:
- 解卷积层的输出的每一通道都是由\(K_{1}\)个过滤器与解卷积层的输入进行卷积后,再求和生成的!
- 注意这里的求和一般不是简单的数值相加,而是将卷积操作(下采样)后的特征图进行稀疏化再合并(实现上采样的效果)!
为了简洁起见,我们将层\(l\)的卷积和求和操作合并到一个卷积矩阵\(F_{l}\),并将2D特征图\(z_{k,l}\)合并为3D特征图\(z_{l}\) 。则有:
完!