1. 介紹
論文的出發點是要發掘patch上的自相關分布,通過生成器G生成LR downsample后的版本和LR自己相應的patch在分布上更相似(通過D網絡判別學到),從而學習出LR的降質過程,和ZSSR一樣,這個工作也是在單圖上進行訓練和測試,不同的是,這里像ZSSR一樣使用bicubic作為默認降質,而是利用GAN利用自身分布去學習自己降質的過程。其中G網絡用來學習降采樣,當G網絡被訓練好之后,可以獲得降質的kernel參數,該參數可以被用來引導進行超分辨(類似於ZSSR)。論文提出的方法是image specific的,即可以根據測試圖片自身的特性生成相應的核,並利用該核作用在自己使用如ZSSR的方法進行超分辨,這應該是論文最大的insight(之前的方法image specific的sr都是使用默認bicubic核進行降質,而通用SR方法都是事先訓練好然后再用在測試圖片上,這樣它們的分布可能不一樣)。整體的框架如下所示:
2. 算法細節
2.1 生成網絡
生成網絡主要模擬降采樣核:
由於非線性網絡和實際理論不符,故使用線性網絡(不加激活函數)。同時,作者發現 deep linear network 在優化上,比單層網絡好很多。所以最終,生成網絡是stride 2的6層線性全卷機網絡:前3層卷積核為 7x7, 5x5, 3x3,后3層卷積核為 1x1,最后一層順便做stride 2的下采樣;整體相當於感受野為 13x13 的卷積核。
對於G網絡,這里是一個深度線性網絡,雖然理論上一層的stride網絡也會work,但是實際其表現不行,可能是因為一層網絡更難優化。其次也去除了relu層,因為加入其中不符合G網絡downsample縮放的目的,會引入額外的artifacts(作者也不放實驗說明這點)。
2.2 判別網絡
判別網絡是為了學習區域像素的分布,以判別是否來自真實圖像分布。作者使用了全卷積 Patch Discriminator,通過輸出一個heat-map(D map)來判別每一塊 7x7 圖像塊的分布。其中包含操作:Spectral normalization,Batch normalization,ReLU激活層,Sigmoid輸出層,但不包含 stride、pooling等操作。
D網絡輸入的是label(從LR中直接crop出來)或者是generator里輸出的結果,輸出是一個0-1矩陣,反映的是否該像素周邊的patch(判別器感受野計算出來是7x7大小的patch)是真正LR里crop出來的。
2.3 損失函數
整體訓練的loss如下所示:
其中R是對kernel進行約束,使其更符合kernel分布的先驗規律,該部分如下所示:
最后,對G網絡里的卷積層參數進行矩陣連乘,從而生成一個kernel,使用這個kernel可以對圖像進行downsample,從而進行SR。一些實驗結果如下所示: