【论文复现】SRGan
前言
似乎是第一篇用Gan做超分?挺有借鉴意义的,原文为Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial
摘要
简单来说就是用MSE做loss容易丢失高频信息,他们提出用内容损失更好就是特征图的MSE,并且提出MOS作为评价指标自己定的一个评分标准,用来吹水,然后使用Gan来训练能够避免高频信息丢失,MOS更好确实人眼效果更好。
网络
SRResNet
就是一个ResNet堆叠然后使用2个pixel shuffler层放大了4倍。
看到网上有些人把BN换成了IN,PRelu换成了LeakyRelu,其实是个trick,IN在gan里面表现更好。
SRGan
使用有预训练的SRResNet作为生成器,训练一个新卷积网络作为判别器。
训练
先单独使用MSE loss训练SRResNet,有一定效果后作为生成器的预训练权重,然后训练gan,有些细节:
- Adam beta0 使用0.9
影响不大 - lr 训练到一半时降一半
个人因为没有训练那么多epoch就没有降 - lr 使用ImageNet参数normalize,hr归一到-1~1。
方便统一数量级 - MSE loss 除一个常数,也是方便统一数量级但是新的pytorch mse默认求平均,本身就很小感觉不用除
但是统一数量级很值得借鉴 - 生成器的loss为内容损失+1e-4 判别器交叉熵损失
- 文章还说一个图片拆成16个96X96,但我只是随机crop了96X96,然后flip,多次训练。
代码
最后附上我实现的代码,见Github,参考了这篇 blog,数据集使用的是coco2014的val 4w张图片,验证集是bsd100。个人亲测训练集太小(使用bsd500 train)效果不好 也有可能是我数据增强写的不好?。
本文作者: dummerfu
本文链接:https://dummerfu.top/p/39020.html
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议 转载请注明出处!
本文链接:https://dummerfu.top/p/39020.html
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议 转载请注明出处!
Comment