反卷积的基本工作原理是,针对训练后的CNN网络中的每一层,都附加一个反卷积层DeconvNet用于将感知区回溯path back到图像像素。在CNN的工作流程中,我们把一幅图像输入给CNN,一层一层地计算其激活值activations,这是前向传递。现在,假设我们想要检查第四卷积层中的这个激活值保存起来,并把本层中的其他激活值设为0,随后将这个特征图层作为反卷积网络的输入。这个反卷积网络与原先的CNN有相同的滤波器设置。输入的特征图层通过一系列的反池化(最大池化求反)、整流以及滤波,随后到达输入端。
隐藏在这整套流程之下的原因是,我们想要知道给定某个特征图时,什么样的图像结构能够激活它。论文中卷积ConvNet的第一层通常是由一些用于检测简单边缘、颜色等信息的低阶特征检测子组成。第二层则是更多的圆形特征。在第一卷积层之后,我们应用一个2*2池化层用于下采样。它带来的效果是第二层的滤波器的视野(检测范围scope)更宽了。
ZFNet的网络可视化的方法有助于研究人员理解CNN内部工作原理及其网络架构。
卷积操作可以转化为图像与一个矩阵的乘积来实现,反卷积也称为转置卷积,它的操作刚好和这个相反,正向传播的时左乘"矩阵的转置",反向传播的时候左乘矩阵。注意这里的反卷积核信号处理里的反卷积不是一回事,它只能得到和原始图像尺寸相同的图像,并不是卷积运算的逆运算。反卷积运算有一些实际的用途,包括卷积网络的可视化、全卷机网络中的上采样、图像生成等。
参考:https://www.zhihu.com/question/43609045