重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。
一、参考资料
github代码:WaveCNet
通俗易懂理解小波变换(Wavelet Transform)
二、相关介绍
关于小波变换的详细介绍,请参考另一篇博客:通俗易懂理解小波变换(Wavelet Transform)
1. DWT和IDWT原理
小波变换是可逆的,小波变换可以通过小波分解和重构,恢复原始图像详细。

对于输入图像 
     
      
       
       
         I 
        
       
      
        I 
       
      
    I,进行两级小波变换,可以得到:
  
      
       
        
        
          L 
         
        
          L 
         
        
          2 
         
        
          , 
         
        
          ( 
         
        
          L 
         
        
          H 
         
        
          2 
         
        
          , 
         
        
          H 
         
        
          L 
         
        
          2 
         
        
          , 
         
        
          H 
         
        
          H 
         
        
          2 
         
        
          ) 
         
        
          , 
         
        
          ( 
         
        
          L 
         
        
          H 
         
        
          1 
         
        
          , 
         
        
          H 
         
        
          L 
         
        
          1 
         
        
          , 
         
        
          H 
         
        
          H 
         
        
          1 
         
        
          ) 
         
        
          = 
         
        
          D 
         
        
          W 
         
        
          T 
         
        
          ( 
         
        
          D 
         
        
          W 
         
        
          T 
         
        
          ( 
         
        
          I 
         
        
          ) 
         
        
          ) 
         
        
       
         LL2, (LH2, HL2, HH2), (LH1, HL1, HH1) = DWT(DWT(I)) 
        
       
     LL2,(LH2,HL2,HH2),(LH1,HL1,HH1)=DWT(DWT(I))
 舍弃最高频的子带LH1, HL1和HH1,保留相对低频的LL2, (LH2, HL2, HH2)。最后对保留的二级小波系数进行逆变换,重构图像:
  
      
       
        
         
         
           I 
          
         
           ′ 
          
         
        
          = 
         
        
          I 
         
        
          D 
         
        
          W 
         
        
          T 
         
        
          ( 
         
        
          L 
         
        
          L 
         
        
          2 
         
        
          , 
         
        
          L 
         
        
          H 
         
        
          2 
         
        
          , 
         
        
          H 
         
        
          L 
         
        
          2 
         
        
          , 
         
        
          H 
         
        
          H 
         
        
          2 
         
        
          ) 
         
        
       
         I^{\prime}= IDWT(LL2, LH2, HL2, HH2) 
        
       
     I′=IDWT(LL2,LH2,HL2,HH2)
三、小波池化
Wavelet Pooling小波池化的思考
 小波变换和曲波变换用于池化层
以文献[1]为例,详细介绍小波池化。
1. 引言
池化是舍弃信息来实现正则化的效果。传统的 Max Pooling,Average Pooling都有一些局限性。Max pooling 是一个有效的池化方法,但可能过于简单;Average Pooling会产生模糊。当主要的特征幅度值低于不重要的特征时,重要的特征在max pooling中就丢失了。而Average Pooling接收了幅值大的特征和幅值小的特征,会稀释幅值大的特征。具体如下图所示:

并且,Average Pooling或Max Pooling是不可逆的。一旦进行平均池化或者最大池化,新的特征空间无法保留原先特征空间的所有信息。而小波池化是可逆的,能恢复所有的原始特征。
2. DWT与IDWT网络层
设计DWT和IDWT网络层的关键问题在于数据的前向(forward propagations)和后向传播(backward propagations)。本章节以1D正交小波和1D信号为例,分析DWT和IDWT。同理,可以推广到其他小波和2D/3D信号,只有细微的变化。
2.1 前向传播(Forward propagation)
对于1D信号  
     
      
       
       
         s 
        
       
         = 
        
       
         { 
        
        
        
          s 
         
        
          j 
         
        
        
        
          } 
         
         
         
           j 
          
         
           ∈ 
          
         
           Z 
          
         
        
       
      
        \mathbf{s}=\{s_{j}\}_{j\in\mathbb{Z}} 
       
      
    s={sj}j∈Z,通过DWT的低通滤波(low-pass filters)分解为低频成分  
     
      
       
        
        
          s 
         
        
          1 
         
        
       
         = 
        
       
         { 
        
        
        
          s 
         
         
         
           1 
          
         
           k 
          
         
        
        
        
          } 
         
         
         
           k 
          
         
           ∈ 
          
         
           Z 
          
         
        
       
      
        \mathbf{s}_{1}=\{s_{1k}\}_{k\in\mathbb{Z}} 
       
      
    s1={s1k}k∈Z,通过DWT的高通滤波(high-pass filters)分解为高频成分  
     
      
       
        
        
          d 
         
        
          1 
         
        
       
         = 
        
       
         { 
        
        
        
          d 
         
         
         
           1 
          
         
           k 
          
         
        
        
        
          } 
         
         
         
           k 
          
         
           ∈ 
          
         
           Z 
          
         
        
       
      
        \mathbf{d}_{1}=\{d_{1k}\}_{k\in\mathbb{Z}} 
       
      
    d1={d1k}k∈Z。
  
      
       
        
         
         
           { 
          
          
           
            
             
              
               
               
                 s 
                
                
                
                  1 
                 
                
                  k 
                 
                
               
              
                = 
               
               
               
                 ∑ 
                
               
                 j 
                
               
               
               
                 l 
                
                
                
                  j 
                 
                
                  − 
                 
                
                  2 
                 
                
                  k 
                 
                
               
               
               
                 s 
                
               
                 j 
                
               
              
                , 
               
              
             
            
           
           
            
             
              
               
               
                 d 
                
                
                
                  1 
                 
                
                  k 
                 
                
               
              
                = 
               
               
               
                 ∑ 
                
               
                 j 
                
               
               
               
                 h 
                
                
                
                  j 
                 
                
                  − 
                 
                
                  2 
                 
                
                  k 
                 
                
               
               
               
                 s 
                
               
                 j 
                
               
              
                , 
               
              
             
            
           
          
         
         
        
          ( 
         
        
          1 
         
        
          ) 
         
        
       
         \left.\left\{\begin{array}{c}s_{1k}=\sum_jl_{j-2k}s_j,\\d_{1k}=\sum_jh_{j-2k}s_j,\end{array}\right.\right. \quad (1) 
        
       
     {s1k=∑jlj−2ksj,d1k=∑jhj−2ksj,(1)
 其中, 
     
      
       
       
         l 
        
       
         = 
        
       
         { 
        
        
        
          l 
         
        
          k 
         
        
        
        
          } 
         
         
         
           k 
          
         
           ∈ 
          
         
           Z 
          
         
        
       
      
        \mathbf{l}=\{l_{k}\}_{k\in\mathbb{Z}} 
       
      
    l={lk}k∈Z , 
     
      
       
       
         h 
        
       
         = 
        
       
         { 
        
        
        
          h 
         
        
          k 
         
        
        
        
          } 
         
         
         
           k 
          
         
           ∈ 
          
         
           Z 
          
         
        
       
      
        \mathbf{h}=\{h_{k}\}_{k\in\mathbb{Z}} 
       
      
    h={hk}k∈Z 分别表示正交小波(orthogonal wavelet)的低通滤波(low-pass filters)和高通滤波(high-pass filters)。由 
     
      
       
       
         公式 
        
       
         ( 
        
       
         1 
        
       
         ) 
        
       
      
        公式(1) 
       
      
    公式(1) 可知,DWT包含两个过程:滤波和下采样。
使用IDWT,可以从  
     
      
       
        
        
          s 
         
        
          1 
         
        
       
         , 
        
        
        
          d 
         
        
          1 
         
        
       
      
        s_1,d_1 
       
      
    s1,d1 重构  
     
      
       
       
         s 
        
       
      
        s 
       
      
    s。
  
      
       
        
         
         
           s 
          
         
           j 
          
         
        
          = 
         
         
         
           ∑ 
          
         
           k 
          
         
         
         
           ( 
          
          
          
            l 
           
           
           
             j 
            
           
             − 
            
           
             2 
            
           
             k 
            
           
          
          
          
            s 
           
           
           
             1 
            
           
             k 
            
           
          
         
           + 
          
          
          
            h 
           
           
           
             j 
            
           
             − 
            
           
             2 
            
           
             k 
            
           
          
          
          
            d 
           
           
           
             1 
            
           
             k 
            
           
          
         
           ) 
          
         
        
          . 
         
         
        
          ( 
         
        
          2 
         
        
          ) 
         
        
       
         s_j=\sum_k\left(l_{j-2k}s_{1k}+h_{j-2k}d_{1k}\right). \quad (2) 
        
       
     sj=k∑(lj−2ks1k+hj−2kd1k).(2)
 用矩阵和向量表示, 
     
      
       
       
         公式 
        
       
         ( 
        
       
         1 
        
       
         ) 
        
       
      
        公式(1) 
       
      
    公式(1) 和  
     
      
       
       
         公式 
        
       
         ( 
        
       
         2 
        
       
         ) 
        
       
      
        公式(2) 
       
      
    公式(2) 可以重写为:
  
      
       
        
         
          
           
            
            
              s 
             
            
              1 
             
            
           
          
          
           
            
             
            
              = 
             
            
              L 
             
            
              s 
             
            
              , 
             
             
             
             
               d 
              
             
               1 
              
             
            
              = 
             
            
              H 
             
            
              s 
             
            
              , 
             
             
            
           
          
          
           
            
            
              ( 
             
            
              3 
             
            
              ) 
             
            
           
          
         
         
          
           
           
             s 
            
           
          
          
           
            
             
            
              = 
             
             
             
               L 
              
             
               T 
              
             
             
             
               s 
              
             
               1 
              
             
            
              + 
             
             
             
               H 
              
             
               T 
              
             
             
             
               d 
              
             
               1 
              
             
            
              , 
             
             
            
           
          
          
           
            
            
              ( 
             
            
              4 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{aligned}\mathbf{s}_1&=\mathbf{L}\mathbf{s},\quad\mathbf{d}_1=\mathbf{H}\mathbf{s},\quad&(3)\\\mathbf{s}&=\mathbf{L}^T\mathbf{s}_1+\mathbf{H}^T\mathbf{d}_1,\quad&(4)\end{aligned} 
        
       
     s1s=Ls,d1=Hs,=LTs1+HTd1,(3)(4)
 其中
  
      
       
        
         
         
           L 
          
         
           = 
          
          
          
            ( 
           
           
            
             
              
              
                ⋯ 
               
              
             
             
              
              
                ⋯ 
               
              
             
             
              
              
                ⋯ 
               
              
             
             
              
               
              
             
             
              
               
              
             
             
              
               
              
             
             
              
               
              
             
            
            
             
              
              
                ⋯ 
               
              
             
             
              
               
               
                 l 
                
                
                
                  − 
                 
                
                  1 
                 
                
               
              
             
             
              
               
               
                 l 
                
               
                 0 
                
               
              
             
             
              
               
               
                 l 
                
               
                 1 
                
               
              
             
             
              
              
                ⋯ 
               
              
             
             
              
               
              
             
             
              
               
              
             
            
            
             
              
               
              
             
             
              
              
                ⋯ 
               
              
             
             
              
               
               
                 l 
                
                
                
                  − 
                 
                
                  1 
                 
                
               
              
             
             
              
               
               
                 l 
                
               
                 0 
                
               
              
             
             
              
               
               
                 l 
                
               
                 1 
                
               
              
             
             
              
              
                ⋯ 
               
              
             
            
            
             
              
               
              
             
             
              
               
              
             
             
              
               
              
             
             
              
               
              
             
             
              
              
                ⋯ 
               
              
             
             
              
              
                ⋯ 
               
              
             
            
           
          
         
           ) 
          
         
        
          , 
         
         
        
          ( 
         
        
          5 
         
        
          ) 
         
        
       
         \left.\mathbf{L}=\left(\begin{array}{ccccccc}\cdots&\cdots&\cdots&&&&\\\cdots&l_{-1}&l_0&l_1&\cdots&&\\&\cdots&l_{-1}&l_0&l_1&\cdots\\&&&&\cdots&\cdots\end{array}\right.\right),\quad(5) 
        
       
     L= 
               ⋯⋯⋯l−1⋯⋯l0l−1l1l0⋯l1⋯⋯⋯ 
              ,(5)
H = ( ⋯ ⋯ ⋯ ⋯ h − 1 h 0 h 1 ⋯ ⋯ h − 1 h 0 h 1 ⋯ ⋯ ⋯ ) . ( 6 ) \left.\mathbf{H}=\left(\begin{array}{ccccccc}\cdots&\cdots&\cdots&&&\\\cdots&h_{-1}&h_0&h_1&\cdots&\\&&\cdots&h_{-1}&h_0&h_1&\cdots\\&&&&\cdots&\cdots\end{array}\right.\right).(6) H= ⋯⋯⋯h−1⋯h0⋯h1h−1⋯h0⋯h1⋯⋯ .(6)
对于2D信号 
     
      
       
       
         X 
        
       
      
        \mathbf{X} 
       
      
    X,DWT通常对每行(row) 和每列(column)进行1D DWT操作,也就是:
  
      
       
        
         
          
           
            
             
             
               X 
              
              
              
                l 
               
              
                l 
               
              
             
            
              = 
             
            
              L 
             
            
              X 
             
             
             
               L 
              
             
               T 
              
             
            
              , 
             
             
             
               ( 
              
             
               7 
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
             
             
               X 
              
              
              
                l 
               
              
                h 
               
              
             
            
              = 
             
             
              
              
                H 
               
              
                X 
               
              
                L 
               
              
             
               T 
              
             
            
              , 
             
             
             
               ( 
              
             
               8 
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
             
             
               X 
              
              
              
                h 
               
              
                l 
               
              
             
            
              = 
             
             
              
              
                L 
               
              
                X 
               
              
                H 
               
              
             
               T 
              
             
            
              , 
             
             
             
               ( 
              
             
               9 
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
             
             
               X 
              
              
              
                h 
               
              
                h 
               
              
             
            
              = 
             
             
              
              
                H 
               
              
                X 
               
              
                H 
               
              
             
               T 
              
             
            
              , 
             
             
             
               ( 
              
             
               10 
              
             
               ) 
              
             
            
           
          
         
        
       
         \begin{gathered} \mathbf{X}_{ll} =\mathbf{L}\mathbf{X}\mathbf{L}^{T}, \left(7\right) \\ \mathbf{X}_{lh} =\mathbf{HXL}^{T}, \left(8\right) \\ \mathbf{X}_{hl} =\mathbf{LXH}^{T}, \left(9\right) \\ \mathbf{X}_{hh} =\mathbf{HXH}^{T}, \left(10\right) \end{gathered} 
        
       
     Xll=LXLT,(7)Xlh=HXLT,(8)Xhl=LXHT,(9)Xhh=HXHT,(10)
 对应的IDWT可以表示为:
  
      
       
        
        
          X 
         
        
          = 
         
         
         
           L 
          
         
           T 
          
         
         
         
           X 
          
          
          
            l 
           
          
            l 
           
          
         
        
          L 
         
        
          + 
         
         
         
           H 
          
         
           T 
          
         
         
         
           X 
          
          
          
            l 
           
          
            h 
           
          
         
        
          L 
         
        
          + 
         
         
         
           L 
          
         
           T 
          
         
         
         
           X 
          
          
          
            h 
           
          
            l 
           
          
         
        
          H 
         
        
          + 
         
         
         
           H 
          
         
           T 
          
         
         
         
           X 
          
          
          
            h 
           
          
            h 
           
          
         
        
          H 
         
        
          . 
         
         
        
          ( 
         
        
          11 
         
        
          ) 
         
        
       
         \mathbf{X}=\mathbf{L}^T\mathbf{X}_{ll}\mathbf{L}+\mathbf{H}^T\mathbf{X}_{lh}\mathbf{L}+\mathbf{L}^T\mathbf{X}_{hl}\mathbf{H}+\mathbf{H}^T\mathbf{X}_{hh}\mathbf{H}.\quad(11) 
        
       
     X=LTXllL+HTXlhL+LTXhlH+HTXhhH.(11)
2.2 反向传播(Backward propagation)
对于DWT的反向传播,首先对  
     
      
       
       
         公式 
        
       
         ( 
        
       
         3 
        
       
         ) 
        
       
      
        公式(3) 
       
      
    公式(3) 进行微分操作:
  
      
       
        
         
          
          
            ∂ 
           
           
           
             s 
            
           
             1 
            
           
          
          
          
            ∂ 
           
          
            s 
           
          
         
        
          = 
         
         
         
           L 
          
         
           T 
          
         
        
          , 
         
         
         
          
          
            ∂ 
           
           
           
             d 
            
           
             1 
            
           
          
          
          
            ∂ 
           
          
            s 
           
          
         
        
          = 
         
         
         
           H 
          
         
           T 
          
         
        
          . 
         
         
        
          ( 
         
        
          12 
         
        
          ) 
         
        
       
         \frac{\partial\mathbf{s}_1}{\partial\mathbf{s}}=\mathbf{L}^T,\quad\frac{\partial\mathbf{d}_1}{\partial\mathbf{s}}=\mathbf{H}^T.\quad(12) 
        
       
     ∂s∂s1=LT,∂s∂d1=HT.(12)
 类似的,对于1D IDWT的反向传播,微分操作可以表示为:
  
      
       
        
         
          
          
            ∂ 
           
          
            s 
           
          
          
          
            ∂ 
           
           
           
             s 
            
           
             1 
            
           
          
         
        
          = 
         
        
          L 
         
        
          , 
         
         
         
          
          
            ∂ 
           
          
            s 
           
          
          
          
            ∂ 
           
           
           
             d 
            
           
             1 
            
           
          
         
        
          = 
         
        
          H 
         
        
          . 
         
         
        
          ( 
         
        
          13 
         
        
          ) 
         
        
       
         \frac{\partial\mathbf{s}}{\partial\mathbf{s}_1}=\mathbf{L},\quad\frac{\partial\mathbf{s}}{\partial\mathbf{d}_1}=\mathbf{H}.\quad(13) 
        
       
     ∂s1∂s=L,∂d1∂s=H.(13)
 2D/3D DWT和IDWT的反向传播过程稍微复杂一点,但与1D DWT和IDWT类似。本文使用有限滤波器,例如Haar小波,它的低通滤波和高通滤波可以表示为: 
     
      
       
       
         l 
        
       
         = 
        
        
        
          1 
         
         
         
           2 
          
         
        
       
         { 
        
       
         1 
        
       
         , 
        
       
         1 
        
       
         } 
        
       
      
        \mathbf{l}=\frac{1}{\sqrt{2}}\{1,1\} 
       
      
    l=21{1,1}, 
     
      
       
       
         h 
        
       
         = 
        
        
        
          1 
         
         
         
           2 
          
         
        
       
         { 
        
       
         1 
        
       
         , 
        
       
         − 
        
       
         1 
        
       
         } 
        
       
      
        \mathbf{h}=\frac{1}{\sqrt{2}}\{1,-1\} 
       
      
    h=21{1,−1}。
在网络层中,对于多通道数据进行逐通道的DWT和IDWT操作。
3. WaveCNets网络模型
3.1 基于小波的通用去噪方法
给定一个2D的噪声数据 X \mathbf{X} X,随机噪声主要表现在其高频成分中。如下图所示,基于小波的通用去噪方法包括三个步骤:
- 利用DWT将噪声数据 X \mathbf{X} X 分解为低频成分 X l l \mathbf{X}_{ll} Xll 和高频成分 X l h , X h l , X h h \mathbf{X}_{lh},\mathbf{X}_{hl},\mathbf{X}_{hh} Xlh,Xhl,Xhh;
- 过滤掉高频成分;
- 利用IDWT对处理后的成分进行重构数据。

3.2 最简单的基于去噪方法的小波
本文选择最简单的基于去噪方法的小波,也就是丢弃高频成分,如下图所示:

其中, D W T l l \mathrm{DWT}_{ll} DWTll 表示将特征图映射到低频成分的转换。
3.3 基于小波的下采样方法
本文通过用 D W T l l \mathrm{DWT}_{ll} DWTll 替换传统的下采样,设计出WaveCNets网络模型。如下图所示,(a) 表示传统的下采样方法,(b) 表示基于小波的下采样方法。

在WaveCNets网络中,将max-pooling 和 average-pooling 直接替换为  
     
      
       
        
         
         
           D 
          
         
           W 
          
         
           T 
          
         
         
         
           l 
          
         
           l 
          
         
        
       
      
        \mathrm{DWT}_{ll} 
       
      
    DWTll 。同时,将 strided-convolution卷积替换为步长为1的卷积,也就是:
  
      
       
        
         
          
           
            
            
              MaxPool 
             
             
             
               s 
              
             
               = 
              
             
               2 
              
             
            
           
          
          
           
            
             
            
              → 
             
             
             
               DWT 
              
              
              
                l 
               
              
                l 
               
              
             
            
              , 
             
             
            
           
          
          
           
            
            
              ( 
             
            
              14 
             
            
              ) 
             
            
           
          
         
         
          
           
            
            
              Conv 
             
             
             
               s 
              
             
               = 
              
             
               2 
              
             
            
           
          
          
           
            
             
            
              → 
             
             
             
               DWT 
              
              
              
                l 
               
              
                l 
               
              
             
            
              ∘ 
             
             
             
               Conv 
              
              
              
                s 
               
              
                = 
               
              
                1 
               
              
             
            
              , 
             
             
            
           
          
          
           
            
            
              ( 
             
            
              15 
             
            
              ) 
             
            
           
          
         
         
          
           
            
            
              AvgPool 
             
             
             
               s 
              
             
               = 
              
             
               2 
              
             
            
           
          
          
           
            
             
            
              → 
             
             
             
               DWT 
              
              
              
                l 
               
              
                l 
               
              
             
            
              , 
             
             
            
           
          
          
           
            
            
              ( 
             
            
              16 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{aligned}\text{MaxPool}_{s=2}&\to\text{DWT}_{ll},\quad&(14)\\\text{Conv}_{s=2}&\to\text{DWT}_{ll}\circ\text{Conv}_{s=1},\quad&(15)\\\text{AvgPool}_{s=2}&\to\text{DWT}_{ll},\quad&(16)\end{aligned} 
        
       
     MaxPools=2Convs=2AvgPools=2→DWTll,→DWTll∘Convs=1,→DWTll,(14)(15)(16)
 其中  
     
      
       
       
         M 
        
       
         a 
        
       
         x 
        
       
         p 
        
       
         o 
        
       
         o 
        
        
        
          l 
         
        
          s 
         
        
       
      
        \mathrm {Maxpool_s} 
       
      
    Maxpools、 
     
      
       
       
         C 
        
       
         o 
        
       
         n 
        
        
        
          v 
         
        
          s 
         
        
       
      
        \mathrm {Conv_s} 
       
      
    Convs、 
     
      
       
       
         A 
        
       
         v 
        
       
         g 
        
       
         P 
        
       
         o 
        
       
         o 
        
        
        
          l 
         
        
          s 
         
        
       
      
        \mathrm {AvgPool_s} 
       
      
    AvgPools 分别表示 max-pooling,strided-convolution和average-pooling,s表示步长(stride)。
3.4 WaveCNets模型的优势
D W T l l \mathrm{DWT}_{ll} DWTll 对特征图进行去噪,移除高频成分,特征图尺寸减半。 D W T l l \mathrm{DWT}_{ll} DWTll 输出的低频成分,保存了特征图的主要信息,并提取出可识别的特征。在WaveCNets下采样过程中, D W T l l \mathrm{DWT}_{ll} DWTll 可以抵抗噪声的传播,有利于维持特征图中目标的基本结构。因此, D W T l l \mathrm{DWT}_{ll} DWTll 可以加快深度网络的训练,有利于更好的噪声鲁棒性和提高分类模型的精度。
4. (TensorFlow)代码实现
Tensorflow实现小波池化层
四、参考文献
[1] Li Q, Shen L, Guo S, et al. Wavelet integrated CNNs for noise-robust image classification[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 7245-7254.



















