深度学习中的反卷积网络理解

前段时间学习了FCN,里面有提到反卷积,上采样,不是很理解。但是FCN通常用在分割,目标检测等应用很广。

最近又接触了一下DCGAN里面的生成器就是反卷积网络,和FCN是同一类的,所以想学习一下。

deconvolution networks大致可以分为以下几个方面:

(1)unsupervised learning,其实就是covolutional sparse coding[1][2]:这里的deconv只是观念上和传统的conv反向,传统的conv是从图片生成feature map,而deconv是用unsupervised的方法找到一组kernel和feature map,让它们重建图片。

(2)CNN可视化[3]:通过deconv将CNN中conv得到的feature map还原到像素空间,以观察特定的feature map对哪些pattern的图片敏感,这里的deconv其实不是conv的可逆运算,只是conv的transpose,所以tensorflow里一般取名叫transpose_conv。

(3)upsampling[4][5]:在pixel-wise prediction比如image segmentation[4]以及image generation[5]中,由于需要做原始图片尺寸空间的预测,而卷积由于stride往往会降低图片size, 所以往往需要通过upsampling的方法来还原到原始图片尺寸,deconv就充当了一个upsampling的角色。

1. covolutional sparse coding

首先介绍第一个方面covolutional sparse coding,主要介绍Deconvolutional

Network的两篇文章[1][2],都是由New York University的Matthew D. Zeiler, Rob Fergus等人提出来的(他们提出的ZF-net也是ILSVRC 2013的冠军,Matthew
D. Zeiler是Rob Fergus的PhD,毕业后去了自己的人工智能初创公司clarifai,而Rob Fergus也加入了Facebook AI Research),最后再简单介绍deconv的一些应用。

第一篇文章Deconvolutional Networks[1]主要用于学习图片的中低层级的特征表示,属于unsupervised
feature learning,和传统的auto-encoder,RBM比较类似,和它最像的还是sparse coding。

第二篇文章Adaptive Deconvolutional Networks for Mid and High Level Feature Learning[2]也是通过deconvolutional
network学习图片的特征表示,和上一篇不同的是加入了pooling,unpooling,deconv(transpose conv,deconv的参数只是原卷积的转置,并不原卷积的可逆运算)。这篇文章才是可视化常用的反卷积,上篇文章的deconv只是说conv的方向从feature map到图片,也还是feedforward的概念,不是这篇里用的conv和transpose conv。

这篇文章就是要学习图片的所有层级的特征,还是用unsupervised的方法。以往的其它方法在逐层学习的时候图片原始像素丢掉了,学习的target只是上一层的feature map,所以高层的filter和输入图片的连接就没那么强了,导致学得不好,所以它要end to end的学习,学习都是以原始像素作为target学习。


2. CNN可视化
deconv第二个方面是用来做CNN的可视化。ZF-Net[3]中用到了deconv来做可视化,它是将CNN学习到的feature map用得到这些feature map的卷积核,取转置,将图片特征从feature map空间转化到pixel空间,以发现是哪些pixel激活了特定的feature map,达到分析理解CNN的目的。

3. upsampling
分别简单介绍两篇文章, FCN和 DCGAN。FCN[4]主要用来做pixel-wise的image segmentation预测,先用传统的CNN结构得到feature map,同时将传统的full connected转换成了对应参数的卷积层,比如传统pool5层的尺寸是7×7×512,fc6的尺寸是4096,传统的full connected weight是7×7×512×4096这样多的参数,将它转成卷积核,kernel size为7×7,input channel为512,output channel为4096,则将传统的分别带有卷积和全连接的网络转成了全卷积网络(fully convolutional network, FCN)。FCN的一个好处是输入图片尺寸大小可以任意,不受传统网络全连接层尺寸限制,传统的方法还要用类似SPP结构来避免这个问题。FCN中为了得到pixel-wise的prediction,也要把feature map通过deconv转化到像素空间。论文中还有一些具体的feature融合,详情可参见论文。

DCGAN[5]中使用deconv就更自然了,本身GAN就需要generative model,需要通过deconv从特定分布的输入数据中生成图片。GAN这种模式被Yann LeCun特别看好,认为是unsupervised learning的一个未来。

以上先做个总体概要,后面文章将做具体分析。


参考链接:https://www.zhihu.com/question/43609045/answer/132235276

你可能感兴趣的:(深度学习)