深度學習超分辨率:ESPCN模型


  之前介紹了第一篇超分辨率模型在深度學習中的實現——SRCNN模型,具體的介紹請參看我這一篇博客:https://www.cnblogs.com/Robin-tao/p/12942977.html

SRCNN的缺點是:(1) 是依賴於圖像區域的context;(2)是訓練收斂速度太慢;(3)是網絡只適用於單一尺度。這些缺點在基於殘差網絡的SR應用中解決了,簡稱為VDSR模型。

今天來介紹ESPCN網絡模型

 

1 ESPCN模型介紹

 

                    圖1-SRCNN 模型圖

圖1是SRCNN的網絡模型,對於左端網絡輸入來說,已經是雙三次插值的高分辨率圖像(注:在SRCNN中,網絡的輸入是經過雙三次插值方法到HR圖像相同尺寸的圖像,這個輸入圖像算是“粗糙”的高分辨率圖像)。這已經是在高分辨率空間了。也就是說剩下的Patch extraction 和Non-Linear mapping 和 Reconstruction都是在高分辨率空間中完成的操作。

 

但ESPCN指出,由於SRCNN是在最后一步是重構高分辨率圖像塊,作為輸入是經過雙三次插值的,已經高分辨率圖像(圖像尺寸和HR圖像一樣),在中間的2個網絡相當於在高分辨率空間中進行處理,這增加了運算的復雜度。

后面有文獻總結了不同上采樣模型的策略,如圖2所示:

                    圖2-4種上采樣網絡結構

ESPCN就是圖2上面4種上采樣網絡結構(b),也就是Post-upsampling SR結構。SRCNN是采用了(a):Pre-upsampling SR結構。至於剩下2種網絡結構后面的模型會采用,咱以后繼續說

 

ESPCN的網絡結構

                  圖3 ESPCN模型結構圖

 

 網絡模型的pytorch代碼

 

 

                 圖4  ESPCN 網絡代碼

 

ESPCN提出在網絡的最末端實現LR到HR的分辨率,並從LR特征圖中獲得高分辨率的HR數據。這樣就不需要在更大的HR分辨率下執行大部分SR操作。也就是輸入是低分辨率圖像(未經過插值處理,尺寸和HR圖像不一樣),在隱藏層中都是低分辨率圖像進行處理,也就是在隱藏層沒有添加任何關於高分辨率的先驗信息。到了亞像素卷積層,才映射到高分辨率空間。

將$\boldsymbol{r}^2\times \boldsymbol{H}\times \boldsymbol{W} $的特征圖像,重新排列成的$1\times \boldsymbol{rH}\times \boldsymbol{rW}$ 高分辨率圖像。亞像素卷積層如圖5所示

 

                                           圖5 亞像素卷積層

 

亞像素卷積層,並沒有做卷積操作,而是直接將$\boldsymbol{r}^2$ 個通道的特征圖,重新進行排列,這樣就完成了LR到HR的恢復。主要學習映射的步驟已經隱含在之前的隱藏層網絡中。

亞像素卷積層能夠將LR數據映射到HR空間中,與傳統的卷積層相比,所需的計算量很小。

pytorch中的API即完成了網絡中的最后一層,亞像素卷積層,

 

nn.PixelShuffle()

功能是:

Pixelshuffle會將shape為 ( _ ,  r * r * C ,  H , W) 的Tensor reshape成( _ ,  C ,  r * H ,  r * W) 的Tensor。

輸入輸出的shape如下:
- Input: (N,C∗upscale_factor2,H,W)
- Output: (N,C,H∗upscale_factor,W∗upscale_factor)

 

 2 總結

 ESPCN的創新點:

(1)采用亞像素對高分辨率信息進行恢復。

(2)采用Post-upsampling SR上采樣模型。

(3)選擇tanh而不是relu作為激活函數。

 

3 結果(摘自原論文)

對幾種方法的PSNR比較

 

 

結果圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM