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
