SDWNet学习

  1. 1. SDWNet学习
    1. 1.1. 摘要内容
      1. 1.1.1. 提出问题:
      2. 1.1.2. 解决方式:
      3. 1.1.3. 文章贡献:
      4. 1.1.4. 面临的挑战:
    2. 1.2. 网络结构
      1. 1.2.1. 浅层特征提取
      2. 1.2.2. 扩张卷积模块
      3. 1.2.3. 小波重构模块
        1. 1.2.3.1. 关于小波
      4. 1.2.4. 损失函数
    3. 1.3. 相关资料

SDWNet学习

又是一篇去模糊的论文,SDWNet: A Straight Dilated Network with Wavelet Transformation for image Deblurring。翻译过来就是SDWNet:一种基于小波变换的直扩网络图像去模糊。网络结构简单,去模糊效果也挺好。

摘要内容

提出问题:

现存的很多方法都是应用Encode-Decode结构去设计复杂的网络以获得更好的表现。这些方法用重复的上采样和下采样结构来获得更大的感受野,但是导致了在采样的过程中纹理信息的丢失,而且有的设计多阶段的结构导致收敛困难。

解决方式:

使用空洞卷积以获得具有高空间分辨率的大的感受野。减少了上下采样次数的一个简单网络结构。提出小波变换模块,帮助恢复高频的纹理信息。

文章贡献:

  1. 提出扩张卷积模块,用不同的膨胀率的扩张卷积来获得不同感受野特征。该模块便于网络获取非位置特征,并恢复清晰图
  2. 提出小波重构模块,利用在频域中恢复的信息,对空间域做补充。让恢复的图像包含更多的细节。
  3. 提出基于CNN的去模糊网络。该网络有效解决了训练难和收敛慢的问题。

面临的挑战:

这块没啥可讲的。和前面的提出问题差不多。(写论文的传统技能,车轱辘话)简单说:1. 传统的重复堆叠Encode-Decode结构,导致纹理损失。2. GAN联合生成器和判别器,网络性能不稳定。3. 由粗到细结构复杂,收敛过慢。

网络结构

architecture

SDWNet主要有三个部分组成。浅层特征提取,扩张卷积模块,重构模块。

浅层特征提取

首先使用的7 x 7的卷积核提取浅层特征。代码中先使用的7 x 7的卷积,后一层为3 x 3卷积。后面连接的是扩展卷积块。

扩张卷积模块

该模块中由多个DCB组成,使用了不同扩张率的扩张卷积用来获得不同的感受野,多个DCB来学习广泛的上下文信息。浅层上,用1,2,4,8的扩张率。最后一层使用1,3,5,7的扩张率,避免图像去模糊中的网格效应。然后使用扩张率为1的扩张卷积来融合来自不同感受野的特征。最后将融合特征叠加在输入特征上输出。利用了跳跃连接,充分使用了浅层信息。

DCB

小波重构模块

在恢复高频信息上小波变换是一个有效的工具。提出小波重构模块作为并行重构的一个分支。用来在最终输出图像中保留所需的精细纹理。

不同于其他的小波变换方法,其他方法是直接预测四个子带的小波方法。而SDWNet是共享网络给四个子带,有效避免了不同子带间的相互作用引起伪影。该模块主要使用小波变换将空间域信息转小波域进行恢复。最后将恢复的四个子带,用小波逆变换恢复为输出特征图。

WRM

关于小波

小波变换直接说操作的话就是,如下的分别作为2x2卷积核,步长为2,黑色部分的值减掉白色部分的值。就是小波分解之后的子带了。最开始我还以为小波是很复杂的东西,不太会。直到看到代码,我把他的操作画成图。才发现这玩意不就是Haar特征么???据说haar特征最开始是一个数学家发明,只能分高频和低频两个,然后还申请了专利。为了不给专利费,OpenCV又整了两个特征,然后就是免费用了。。。哈哈哈哈。

waveLet

百度找到关于小波变换的操作:关于小波变换

损失函数

使用的是Charbonnier loss和SSIMloss

charboinner

ssim

total

相关资料

SDWNet论文

代码