天天看點

深度學習超分辨率重建(三): TensorFlow—— ESPCN

基于TensorFlow的代碼下載下傳:https://github.com/drakelevy/ESPCN-TensorFlowhttps://

文章連結:(Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network, CVPR2016)

環境配置:深度學習(一):虛拟機Linux系統搭建CPU TensorFlow

基礎理論學習友善了解:deeplearning.ai 吳恩達網上課程學習(十五)——卷積神經網絡及其TensorFlow代碼實作

1. ESPCN

像SRCNN那樣的方法,由于需要将低分辨率圖像通過上采樣插值得到與高分辨率圖像相同大小的尺寸,再輸入到網絡中,這意味着要在較高的分辨率上進行卷積操作,進而增加了計算複雜度。本文提出了一種直接在低分辨率圖像尺寸上提取特征,計算得到高分辨率圖像的高效方法。ESPCN網絡結構如下圖所示

深度學習超分辨率重建(三): TensorFlow—— ESPCN

ESPCN的核心概念是亞像素卷積層(sub-pixel convolutional layer)。網絡的輸入是原始低分辨率圖像,通過三個卷積層以後,得到通道數為 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 的與輸入圖像大小一樣的特征圖像。再将特征圖像每個像素的 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 個通道重新排列成一個 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 的區域,對應高分辨率圖像中一個 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 大小的子塊,進而大小為 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 的特征圖像被重新排列成 

深度學習超分辨率重建(三): TensorFlow—— ESPCN

 的高分辨率圖像。這個變換雖然被稱作sub-pixel convolution, 但實際上并沒有卷積操作。通過使用sub-pixel convolution, 圖像從低分辨率到高分辨率放大的過程,插值函數被隐含地包含在前面的卷積層中,可以自動學習到。隻在最後一層對圖像大小做變換,前面的卷積運算由于在低分辨率圖像上進行,是以效率會較高

我了解的亞像素卷積層包含兩個過程,一個普通的卷積層和後面的排列像素的步驟。就是說,最後一層卷積層輸出的特征個數需要設定成固定值,即放大倍數r的平方,這樣總的像素個數就與要得到的高分辨率圖像一緻,将像素進行重新排列就能得到高分辨率圖。

在ESPCN網絡中,圖像尺寸放大過程的插值函數被隐含地包含在前面的卷積層中,可以自動學習到。由于卷積運算都是在低分辨率圖像尺寸大小上進行,是以效率會較高。

訓練時,可以将輸入的訓練資料,預處理成重新排列操作前的格式,比如将21×21的單通道圖,預處理成9個通道,7×7的圖,這樣在訓練時,就不需要做重新排列的操作。另外,ESPCN激活函數采用tanh替代了ReLU。損失函數為均方誤差。

2.代碼學習:

理論學完後統一更新。。。

參考連結:

https://blog.csdn.net/u010327061/article/details/80043667

http://www.dataguru.cn/article-10906-1.html

https://blog.csdn.net/zuolunqiang/article/details/52401802

繼續閱讀