SRGAN的原理及Pytorch實現


follow this repo: https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/SRGAN

paper: https://arxiv.org/pdf/1609.04802.pdf

 

介紹

號稱是第一個將GAN應用於圖像超分辨率的論文

Super-Resolution, SR

Single Image Super Resolution, SISR

low-resolution, LR

high-resolution, HR

mean square error, MSR

peak signal-to-noise ratio, PSNR

mean-opinion-score, MOS

結構

全部在圖里面了

 

有一點出入的地方是,論文文字中residual block是16塊,圖中只畫了5塊(可能是畫不下吧

喔 zz了,B=16

Subpixel模塊

PixelShuffler操作,這里是用於Upsampling,擴大圖片尺寸2倍

Subpixel模塊是一種在超分辨率中經常使用的upscale方法,又叫做pixel shuffle。我們知道,對CNN的feature map進行放大的方法有轉置卷積,但是如果直接用轉置卷積的話,在超分辨率中通常會帶入過多人工因素。而Subpixel模塊會大大降低這個風險。

 

就是,如果我們想把圖片放大2倍的話,那么我們需要生成2^2=4個一樣大小的feature map,最后將這4個特征圖拼成一個大圖

  

loss改進

MSE/PSNR  不行

VGG feature map mse  行

作者認為PSNR高不一定好,PSNR低一點的可能更加符合人的視覺效果

為此作者設計了mean-opinion test(平均意見得分檢驗),請26個評分員對圖片按5個梯度打分

 

比如第3幅的PSNR比第2幅低,但是看起來更逼真(比如帽子部分

一些思考

(1) vgg loss真的好嗎?

高PSNR值並不符合人眼直觀感受的缺點很早已經被注意到,但從未有有效的算法替代MSE類算法來進行相關工作,問題的根源在於MSE的高效性難以被超越;

SRGAN 似乎恢復了一些細節,但也有人認為這些其實時高頻噪聲,噪聲在圖像處理中的作用十分值得關注,但該領域已經進入半死不活的狀態,期待有理論上的突破。

from https://zhuanlan.zhihu.com/p/27859358

qs 感覺就是加了復雜的vgg loss,變得既不優雅又低效 

效果提升也不明顯,而是是個主觀打分

論文作者說vgg越深越好,vgg loss就是符合人類視覺效果的終點嗎

vgg隨便選嗎,需要是同類數據集訓練出來的嗎?

 

(2) residual block的深度怎么確定

論文中用的16層,作者后來又說>16層會更好,一直residual會學到多的知識嗎 

其他

SRResNet可以單獨用來做SR,這里是用作SRGAN的Generator

這么看GAN更像是一種訓練方法,或者說是一種訓練技巧,只是在訓練過程中會用到Discirminator,而在推斷階段,僅僅用到的Generator

 

因為是全卷積網絡,可以適應任何尺寸的圖片

 

 

參考鏈接:https://blog.csdn.net/Rocky6688/article/details/104369905


免責聲明!

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



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