总结Deep Convolutional Neural Network for Image Deconvolution
一、该论文主要工作
- 设计了一个深度卷积神经网络来捕获degradation image的特点
- 该卷积神经网络以一种新奇的方法结合了传统基于优化的方案和神经网络结构
- 引入可分离的卷积结构
- 该卷积神经网络分为两个模块,这两个模块都使用监督方式来训练
二、Degradation image的形成
Degradation image就包括图像模糊、图像压缩等等一系列的操作
|
(1) |
其中
是非线性压缩算子 k是已知的卷积核
三、分析
我们的目标是训练网络结构,可以通过最小化下面的式子(代价函数)得到:
|
(2) |
我们最近使用了两个深度神经网络来求解这个问题,但是失败了。一个是SSDAE,另一个是CNN,这两个神经网络都被设计用来去燥。对于SSDAE,我们使用的图像块大小为 ,CNN使用了[16]的作者提供的代码实现。我们收集了数百万幅清晰的图像块和它们对应的模糊图像。
3.1 求解pseudo inverse
反卷积任务本质上可以近似的使用卷积操作来表示,我们考虑下面的线性模糊模型:
|
(3) |
空间域的卷积操作可以转换为频域的乘法操作:
|
(4) |
表示离散傅里叶变换,
代表元素方式的乘法操作,在傅里叶域,x可以通过下面的式子求得:
|
(5) |
表示傅里叶逆变换,求x可以被写成使用与y卷积,当产生噪音的时候,我们加入正则项来避免除零操作,这也让pseudo inverse在频域下降的非常快,经典的Wiener反卷积就等于使用Tikhonov正则项,Wiener反卷积可以被表示为:
|
(6) |
SNR表示信噪比,表示pseudo inverse kernel。强噪音会导致很大的 ,这个忽悠很强的regularized inversion。
总之,与足够大的卷积核卷积可以近似的来表示反卷积操作。SSDA和CNN失败的原因如下:
- SSDA使用全连接不能很好的捕获卷积的本质
- CNN性能更好,因为反卷积操作可以使用图像与大卷积核卷积来近似表示
- 先前的CNN使用了小卷积核,然而它在我们的反卷积任务里面并不是一种很好的配置
四、网络结构
直接将CNN里面的小卷积核替换成更大的卷积核会导致训练困难,因此本文提出了自己设计的卷积核,并使用核分离(矩阵分解)操作来简化训练问题。
4.1 核分离
核分离就是矩阵分解,可以使用SVD算法来实现,原始的pseudo deconvolution可以被表示为如下:
|
(7) |
上式表示,2D卷积操作可以看做单独的1D卷积操作的加权和。我们使用和
分别表示U和V的第j列,
表示第j个奇异值
4.2 图像反卷积CNN(DCNN)
我们基于上面的理论来描述我们的卷积神经网络,该网络可以表示为:
|
(8) |
其中 是第
层到
层的映射(也就是
的卷积核,卷积后得到
层),
代表偏差向量,
表示非线性函数(也就是**函数)。它可以是sigmoid函数或者是tanh(双曲线正切)函数。
本网络包含两个隐藏层,介绍如下:
- 第一个隐藏层
:由38个大小为
的一维核组成,38和121都是由经验得到的。
- 第二个隐藏层
:由38个大小为
的一维核组成,通道数为38,分别对应着
层的38个输出
为了得到最后的结果,本文应用了一个 的模糊核,类似于使用奇异值的线性结合。也就是说,最后一层是使用
大小的模糊核,一共38个通道,分别对应着上一层的38个输出。
4.3 完整的网络结构
完整的网络结构分为两个子网络,第一个子网络是反卷积CNN网络,第二个子网络是去燥CNN神经网络。第一个子网络的输出作为第二个子网络的输入,中间没有非线性**函数。
数据集是从Flickr下载的2500幅清晰图像,然后随机从这些图像中采样出了两百万幅图像块。然后自己去模糊它们,最后生成的图像用来给我们的网络进行训练。
在训练过程中,这两个子网络是单独训练的。
网络结构如图:
图 1 完整的卷积神经网络 |
可以看到上面一共有6层,分为两个子网络,分别是Deconvolution Sub-network(反卷积神经网络)和Outlier Rejection Sub-network(去燥神经网络),下面分别介绍这两个子网络:
第一个子网络 |
|
第一层卷积操作 |
输入 |
第二层卷积操作 |
输入 |
(单独训练第一个子网络时会有这层卷积) |
为了给第一个子网络进行监督训练,在单独训练该子网络时会有一个 |
第二个子网络,将上一个子网络的第二层卷积输出作为该子网络的输入 |
|
第一层卷积操作 |
输入的图像为 |
第二层卷积操作 |
输入的图像为 |
第三层卷积操作 |
输入的图像为 |
训练集:包含了所有带噪音的degradation image,这里面就包括saturation, compression artifacts等。
按照上面表格所讲,第二个子网络的输入是 ,也就是第一个子网络的第二层卷积的输出,但是在单独训练第一个子网络的时候,第一个子网络会加上一层卷积,卷积核为
,单独训练第二个子网络时没有这一层卷积操作。
Appendix 1 矩阵分解——SVD
对于矩阵x,总能找到一个正交矩阵U和一个正交矩阵V,以及一个对角矩阵 ,使得
|
式子成立,其中,U被称为左奇异向量,V被称为右奇异向量,而对角矩阵 的主对角线上的值称为矩阵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( |
|||||
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网络全部是由的卷积核组成的,两层
的卷积核的感受野就跟一层
卷积核的感受野一样大,三层
相当于一层
。
A、B、C、D、E:不同的VGG网络
con3-512:代表卷积核为大小,一共512个卷积核
max-pool:代表池化层
FC-4096:一共4096个节点的全连接层
soft-max:多分类都有该函数,输出每一种分类的概率