最近在学习FCN的网络,因此Deconvolutional Networks部分是非常需要看的,其实就是图像重构问题。
通过实验给出的一些重要参数设置H =7, λ=1, p=1, β0 =1, βInc =6, βMax =105, E =3。
深度网络结构是由多个单层网络叠加而成的,而常见的单层网络按照编码解码情况可以分为下面3类:
- 既有encoder部分也有decoder部分:比如常见的RBM系列(由RBM可构成的DBM, DBN等),autoencoder系列(以及由其扩展的sparse autoencoder, denoise autoencoder, contractive autoencoder, saturating autoencoder等)。
- 只包含decoder部分:比如sparse coding, 和deconvolution network.
- 只包含encoder部分,那就是普通的feed-forward network.
Deconvolution network的中文名字是反卷积网络,那么什么是反卷积呢?其概念从字面就很容易理解,假设A=B*C 表示的是:B和C的卷积是A,也就是说已知B和C,求A这一过程叫做卷积。那么如果已知A和B求C或者已知A和C求B,则这个过程就叫做反卷积了,deconvolution.
Deconvolution network是和convolution network(简称CNN)对应的,在CNN中,是由input image卷积feature filter得到feature map, 而在devonvolution network中,是由feature map卷积feature filter得到input image. 所以从这点看,作者强调deconvolution network是top-down是有道理的(具体可参考Zeiler的Deconvolutional networks)作者利用各种优化方法提取图像的feature map,避免了普通Convolutional Neural Network中得encoder部分。
运行论文代码:
如果matlab版本比较高的时候或出现[fullpath,b,c,d] = fileparts(path);错误,将第四个参数去掉就可以了,matlab版本低的时候不会出现这个函数问题。第二个RandStream.setGlobalStream(RandStream('mt19937ar','seed',sum(100*clock)));原来的默认设置废弃了,只能改成这个了。
代码下载:here
实验结果:
训练过程中的滤波器、Map、
测试的过程:
下面是测试图和加噪声图及重构之后的效果: