总结Deep Convolutional Neural Network for Image Deconvolution

一、该论文主要工作

  1. 设计了一个深度卷积神经网络来捕获degradation image的特点
  2. 该卷积神经网络以一种新奇的方法结合了传统基于优化的方案和神经网络结构
  3. 引入可分离的卷积结构
  4. 该卷积神经网络分为两个模块,这两个模块都使用监督方式来训练

二、Degradation image的形成

Degradation image就包括图像模糊、图像压缩等等一系列的操作

 总结Deep Convolutional Neural Network for Image Deconvolution

(1)

其中总结Deep Convolutional Neural Network for Image Deconvolution  总结Deep Convolutional Neural Network for Image Deconvolution是非线性压缩算子  k是已知的卷积核

三、分析

我们的目标是训练网络结构总结Deep Convolutional Neural Network for Image Deconvolution,可以通过最小化下面的式子(代价函数)得到:

总结Deep Convolutional Neural Network for Image Deconvolution

(2)

我们最近使用了两个深度神经网络来求解这个问题,但是失败了。一个是SSDAE,另一个是CNN,这两个神经网络都被设计用来去燥。对于SSDAE,我们使用的图像块大小为总结Deep Convolutional Neural Network for Image Deconvolution ,CNN使用了[16]的作者提供的代码实现。我们收集了数百万幅清晰的图像块和它们对应的模糊图像。

3.1 求解pseudo inverse

反卷积任务本质上可以近似的使用卷积操作来表示,我们考虑下面的线性模糊模型:

 总结Deep Convolutional Neural Network for Image Deconvolution

(3)

空间域的卷积操作可以转换为频域的乘法操作:

 总结Deep Convolutional Neural Network for Image Deconvolution

(4)

总结Deep Convolutional Neural Network for Image Deconvolution表示离散傅里叶变换,总结Deep Convolutional Neural Network for Image Deconvolution 代表元素方式的乘法操作,在傅里叶域,x可以通过下面的式子求得:

 总结Deep Convolutional Neural Network for Image Deconvolution

(5)

表示傅里叶逆变换,求x可以被写成使用总结Deep Convolutional Neural Network for Image Deconvolution与y卷积,当产生噪音的时候,我们加入正则项来避免除零操作,这也让pseudo inverse在频域下降的非常快,经典的Wiener反卷积就等于使用Tikhonov正则项,Wiener反卷积可以被表示为:

 总结Deep Convolutional Neural Network for Image Deconvolution

(6)

SNR表示信噪比,总结Deep Convolutional Neural Network for Image Deconvolution表示pseudo inverse kernel。强噪音会导致很大的 ,这个忽悠很强的regularized inversion。

总之,与足够大的卷积核卷积可以近似的来表示反卷积操作。SSDA和CNN失败的原因如下:

  1. SSDA使用全连接不能很好的捕获卷积的本质
  2. CNN性能更好,因为反卷积操作可以使用图像与大卷积核卷积来近似表示
  3. 先前的CNN使用了小卷积核,然而它在我们的反卷积任务里面并不是一种很好的配置

四、网络结构

直接将CNN里面的小卷积核替换成更大的卷积核会导致训练困难,因此本文提出了自己设计的卷积核,并使用核分离(矩阵分解)操作来简化训练问题。

4.1 核分离

核分离就是矩阵分解,可以使用SVD算法来实现,原始的pseudo deconvolution可以被表示为如下:

 总结Deep Convolutional Neural Network for Image Deconvolution

(7)

上式表示,2D卷积操作可以看做单独的1D卷积操作的加权和。我们使用总结Deep Convolutional Neural Network for Image Deconvolution总结Deep Convolutional Neural Network for Image Deconvolution分别表示U和V的第j列,总结Deep Convolutional Neural Network for Image Deconvolution表示第j个奇异值

4.2 图像反卷积CNN(DCNN)

我们基于上面的理论来描述我们的卷积神经网络,该网络可以表示为:

 总结Deep Convolutional Neural Network for Image Deconvolution

(8)

其中总结Deep Convolutional Neural Network for Image Deconvolution 是第总结Deep Convolutional Neural Network for Image Deconvolution层到总结Deep Convolutional Neural Network for Image Deconvolution层的映射(也就是总结Deep Convolutional Neural Network for Image Deconvolution的卷积核,卷积后得到总结Deep Convolutional Neural Network for Image Deconvolution层),总结Deep Convolutional Neural Network for Image Deconvolution代表偏差向量,总结Deep Convolutional Neural Network for Image Deconvolution表示非线性函数(也就是**函数)。它可以是sigmoid函数或者是tanh(双曲线正切)函数。

本网络包含两个隐藏层,介绍如下:

  1. 第一个隐藏层总结Deep Convolutional Neural Network for Image Deconvolution :由38个大小为总结Deep Convolutional Neural Network for Image Deconvolution的一维核组成,38和121都是由经验得到的。
  2. 第二个隐藏层总结Deep Convolutional Neural Network for Image Deconvolution:由38个大小为总结Deep Convolutional Neural Network for Image Deconvolution的一维核组成,通道数为38,分别对应着总结Deep Convolutional Neural Network for Image Deconvolution层的38个输出

为了得到最后的结果,本文应用了一个总结Deep Convolutional Neural Network for Image Deconvolution 的模糊核,类似于使用奇异值的线性结合。也就是说,最后一层是使用总结Deep Convolutional Neural Network for Image Deconvolution大小的模糊核,一共38个通道,分别对应着上一层的38个输出。

4.3 完整的网络结构

完整的网络结构分为两个子网络,第一个子网络是反卷积CNN网络,第二个子网络是去燥CNN神经网络。第一个子网络的输出作为第二个子网络的输入,中间没有非线性**函数。

数据集是从Flickr下载的2500幅清晰图像,然后随机从这些图像中采样出了两百万幅图像块。然后自己去模糊它们,最后生成的图像用来给我们的网络进行训练。

在训练过程中,这两个子网络是单独训练的。

网络结构如图:

总结Deep Convolutional Neural Network for Image Deconvolution

图 1 完整的卷积神经网络

可以看到上面一共有6层,分为两个子网络,分别是Deconvolution Sub-network(反卷积神经网络)和Outlier Rejection Sub-network(去燥神经网络),下面分别介绍这两个子网络:

第一个子网络

第一层卷积操作

输入总结Deep Convolutional Neural Network for Image Deconvolution大小的图像,然后将该图像与一维核总结Deep Convolutional Neural Network for Image Deconvolution卷积之后得到的feature map大小为总结Deep Convolutional Neural Network for Image Deconvolution,因为一共有38个卷积核,所以有38个feature map

第二层卷积操作

输入总结Deep Convolutional Neural Network for Image Deconvolution大小的图像,因为上面的输出,所以一共有38个通道,即输入的图像为总结Deep Convolutional Neural Network for Image Deconvolution,因此该层设计的卷积核为总结Deep Convolutional Neural Network for Image Deconvolution(分别代表卷积核的大小为总结Deep Convolutional Neural Network for Image Deconvolution,卷积核的通道数为38,因此总结Deep Convolutional Neural Network for Image Deconvolution代表一个卷积),卷积核的数量跟上面一样,一共有38个,最后输出的图像为总结Deep Convolutional Neural Network for Image Deconvolution

(单独训练第一个子网络时会有这层卷积)

为了给第一个子网络进行监督训练,在单独训练该子网络时会有一个总结Deep Convolutional Neural Network for Image Deconvolution卷积核,输出一副总结Deep Convolutional Neural Network for Image Deconvolution 的图像,然后就可以与清晰图像进行MSE代价函数优化。

第二个子网络,将上一个子网络的第二层卷积输出作为该子网络的输入

第一层卷积操作

输入的图像为总结Deep Convolutional Neural Network for Image Deconvolution ,512个大小为总结Deep Convolutional Neural Network for Image Deconvolution 的卷积核,最后输出的图像为总结Deep Convolutional Neural Network for Image Deconvolution

第二层卷积操作

输入的图像为总结Deep Convolutional Neural Network for Image Deconvolution ,512个大小为总结Deep Convolutional Neural Network for Image Deconvolution 的卷积核,最后输出的图像为总结Deep Convolutional Neural Network for Image Deconvolution

第三层卷积操作

输入的图像为总结Deep Convolutional Neural Network for Image Deconvolution ,1个大小为总结Deep Convolutional Neural Network for Image Deconvolution 的卷积核,最后输出的图像为总结Deep Convolutional Neural Network for Image Deconvolution,该图像就是我们恢复的图像

训练集:包含了所有带噪音的degradation image,这里面就包括saturation, compression artifacts等。

按照上面表格所讲,第二个子网络的输入是总结Deep Convolutional Neural Network for Image Deconvolution ,也就是第一个子网络的第二层卷积的输出,但是在单独训练第一个子网络的时候,第一个子网络会加上一层卷积,卷积核为总结Deep Convolutional Neural Network for Image Deconvolution,单独训练第二个子网络时没有这一层卷积操作。

 

 

 

Appendix 1 矩阵分解——SVD

对于矩阵x,总能找到一个正交矩阵U和一个正交矩阵V,以及一个对角矩阵 ,使得

 总结Deep Convolutional Neural Network for Image Deconvolution

式子成立,其中,U被称为左奇异向量,V被称为右奇异向量,而对角矩阵总结Deep Convolutional Neural Network for Image Deconvolution 的主对角线上的值称为矩阵X的奇异值,并按照从大到小降序排列。

Appendix 2 VGG网络

表格 1 各种VGG网络结构

ConvNet configuration

A

A-LRN

B

C

D

E

11 weight layers

11 weight layers

13 weight layers

16 weight layers

16 weight layers

19 weight layers

input(总结Deep Convolutional Neural Network for Image Deconvolution RGB image)

con3-64

con3-64

con3-64

con3-64

con3-64

con3-64

 

LRN

con3-64

con3-64

con3-64

con3-64

max-pool

con3-128

con3-128

con3-128

con3-128

con3-128

con3-128

 

 

con3-128

con3-128

con3-128

con3-128

max-pool

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

con3-256

 

 

 

con1-256

con3-256

con3-256

 

 

 

 

 

con3-256

max-pool

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

 

 

 

con1-512

con3-512

con3-512

 

 

 

 

 

con3-512

max-pool

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

con3-512

 

 

 

con1-512

con3-512

con3-512

 

 

 

 

 

con3-512

max-pool

FC-4096

FC-4096

FC-1000

soft-max

解释:VGG网络全部是由总结Deep Convolutional Neural Network for Image Deconvolution的卷积核组成的,两层总结Deep Convolutional Neural Network for Image Deconvolution 的卷积核的感受野就跟一层总结Deep Convolutional Neural Network for Image Deconvolution卷积核的感受野一样大,三层总结Deep Convolutional Neural Network for Image Deconvolution相当于一层总结Deep Convolutional Neural Network for Image Deconvolution

A、B、C、D、E:不同的VGG网络

con3-512:代表卷积核为总结Deep Convolutional Neural Network for Image Deconvolution大小,一共512个卷积核

max-pool:代表池化层

FC-4096:一共4096个节点的全连接层

soft-max:多分类都有该函数,输出每一种分类的概率