总结Deep Convolutional Neural Network for Image Deconvolution

一、该论文主要工作

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

二、Degradation image的形成

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

 \hat y = {\psi _b}[\Phi (\alpha x \otimes k + n)]

(1)

其中$\phi (z) = \min (z,{z_{\max }})$  ${\psi _{\rm{b}}}[ \cdot ]$是非线性压缩算子  k是已知的卷积核

三、分析

我们的目标是训练网络结构{\rm{f}}( \cdot ),可以通过最小化下面的式子(代价函数)得到:

\frac{1}{​{2\left| {\rm{N}} \right|}}\sum\limits_{i \in N}^{ } {\left\| {f({​{\hat y}_i}) - {​{\hat x}_i}} \right\|}

(2)

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

3.1 求解pseudo inverse

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

 {\rm{y}} = x \otimes k

(3)

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

 {\cal F}(y) = {\cal F}(x) \cdot {\cal F}(k)

(4)

${\cal F}( \cdot )$表示离散傅里叶变换,$ \cdot $ 代表元素方式的乘法操作,在傅里叶域,x可以通过下面的式子求得:

 {\rm{x}} = {​{\cal F}^{ - 1}}({\cal F}(y)/{\cal F}(k)) = {​{\cal F}^{ - 1}}(1/{\cal F}(k)) \otimes y

(5)

表示傅里叶逆变换,求x可以被写成使用{​{\cal F}^{ - 1}}(1/{\cal F}(k))与y卷积,当产生噪音的时候,我们加入正则项来避免除零操作,这也让pseudo inverse在频域下降的非常快,经典的Wiener反卷积就等于使用Tikhonov正则项,Wiener反卷积可以被表示为:

 {\rm{x}} = {​{\cal F}^{​{\rm{ - }}1}}(\frac{1}{​{​{\cal F}({\rm{k}})}}\{ \frac{​{​{​{\left| {​{\cal F}(k)} \right|}^2}}}{​{​{​{\left| {​{\cal F}(k)} \right|}^2} + \frac{1}{​{SNR}}}}\} ) \otimes y = {k^\dag } \otimes y

(6)

SNR表示信噪比,${​{\rm{k}}^\dag }$表示pseudo inverse kernel。强噪音会导致很大的 ,这个忽悠很强的regularized inversion。

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

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

四、网络结构

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

4.1 核分离

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

 {k^\dag } \otimes y{\rm{ = }}\sum\limits_{i = 1}^n {​{​{\rm{s}}_j} \cdot {u_j} \otimes (v_j^T \otimes y)}

(7)

上式表示,2D卷积操作可以看做单独的1D卷积操作的加权和。我们使用${​{\rm{u}}_j}$${​{\rm{v}}_j}$分别表示U和V的第j列,${​{\rm{s}}_i}$表示第j个奇异值

4.2 图像反卷积CNN(DCNN)

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

 {​{\rm{h}}_3} = {W_3} \otimes {h_2};\;{h_l} = \sigma ({W_{\rm{l}}} \otimes {h_{l - 1}} + {b_{l - 1}}),\;l \in \{ 1,2\} ;\;{h_0} = \widehat y

(8)

其中{W_{\rm{l}}} 是第${(l - 1)^{th}}$层到${l^{th}}$层的映射(也就是${(l - 1)^{th}}$的卷积核,卷积后得到${l^{th}}$层),${​{\rm{b}}_{l - 1}}$代表偏差向量,$\sigma ( \cdot )$表示非线性函数(也就是激活函数)。它可以是sigmoid函数或者是tanh(双曲线正切)函数。

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

  1. 第一个隐藏层${h_1}$ :由38个大小为$121 \times 1$的一维核组成,38和121都是由经验得到的。
  2. 第二个隐藏层${h_2}$:由38个大小为$1 \times 121$的一维核组成,通道数为38,分别对应着${h_1}$层的38个输出

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

4.3 完整的网络结构

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

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

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

网络结构如图:

图 1 完整的卷积神经网络

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

第一个子网络

第一层卷积操作

输入$184 \times 184$大小的图像,然后将该图像与一维核$1 \times 121$卷积之后得到的feature map大小为$64 \times 184$,因为一共有38个卷积核,所以有38个feature map

第二层卷积操作

输入$64 \times 184$大小的图像,因为上面的输出,所以一共有38个通道,即输入的图像为$64 \times 184 \times 38$,因此该层设计的卷积核为$121 \times 1 \times 38$(分别代表卷积核的大小为$121 \times 1$,卷积核的通道数为38,因此$121 \times 1 \times 38$代表一个卷积),卷积核的数量跟上面一样,一共有38个,最后输出的图像为$64 \times 64 \times 38$

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

为了给第一个子网络进行监督训练,在单独训练该子网络时会有一个$1 \times 1 \times 38$卷积核,输出一副$64 \times 64$ 的图像,然后就可以与清晰图像进行MSE代价函数优化。

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

第一层卷积操作

输入的图像为$64 \times 64 \times 38$ ,512个大小为$16 \times 16 \times 38$ 的卷积核,最后输出的图像为$49 \times 49 \times 512$

第二层卷积操作

输入的图像为$49 \times 49 \times 512$ ,512个大小为$1 \times 1 \times 512$ 的卷积核,最后输出的图像为$49 \times 49 \times 512$

第三层卷积操作

输入的图像为$49 \times 49 \times 512$ ,1个大小为$8 \times 8 \times 512$ 的卷积核,最后输出的图像为$56 \times 56$,该图像就是我们恢复的图像

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

按照上面表格所讲,第二个子网络的输入是$64 \times 64 \times 38$ ,也就是第一个子网络的第二层卷积的输出,但是在单独训练第一个子网络的时候,第一个子网络会加上一层卷积,卷积核为$1 \times 1 \times 38$,单独训练第二个子网络时没有这一层卷积操作。

 

 

 

Appendix 1 矩阵分解——SVD

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

 X = U\Sigma V

式子成立,其中,U被称为左奇异向量,V被称为右奇异向量,而对角矩阵$\Sigma $ 的主对角线上的值称为矩阵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($224 \times 224$ 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网络全部是由$3 \times 3$的卷积核组成的,两层$3 \times 3$ 的卷积核的感受野就跟一层$5 \times 5$卷积核的感受野一样大,三层$3 \times 3$相当于一层$7 \times 7$

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

con3-512:代表卷积核为$3 \times 3$大小,一共512个卷积核

max-pool:代表池化层

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值