064 - 文章阅读笔记:【BSRGAN】针对真实图像退化的盲图像超分辨率BSRGAN复现 - CSDN - AI Studio
本文最后更新于:3 个月前
原文链接:
针对真实图像退化的盲图像超分辨率BSRGAN复现 - CSDN - AI Studio
于 2022-08-08 20:40:22 发布
ps:本文为依据个人日常阅读习惯,在原文的基础上记录阅读进度、记录个人想法和收获所写,关于原文一切内容的著作权全部归原作者所有。
alec:
BSRGAN:Designing a Practical Degradation Model for Deep Blind Image Super-Resolution(ICCV 2021)
【痛点】
现有的方法是针对某一种特定的退化方式,模型对于广泛的退化类型无法适应,导致模型在对非训练集的数据做测试的时候,效果不好。
【创新点】
作者选择对图像退化方式进行创新,手工设计了尽量能模拟真实世界中图像退化的退化模型,应用该退化模型处理高分辨率数据以生成成对的数据进行训练。
现有的方法大多是对某一特定的退化类型有效,本文的出发点是如何设计一个模型能够处理范围更广的退化呢?
解决思路是随机安排3种退化方式的顺序,同时每种退化方式设置几种不同的方法(比如下采样可以采用:双三次、最近邻、双线性等等)。这些顺序和因子的随机选取能够保证最终模型组成更加广义的退化模型。
实现的步骤如下:
- 将模糊,降采样和噪声复杂化(实用化)。模糊:采用两种模糊,分别是各向同性高斯模糊和各向异性高斯模糊;降采样:nearest、bilinear、bicubic以及up-down scaling;噪声:3D高斯噪声、JPEG噪声、相机噪声。
- 随机打乱模糊,降采样和噪声的顺序
[√] 1.项目背景
- 超分辨率模型大家应该都不会陌生,从董超老师等人2014年发表的深度学习做超分的模型SRCNN已经有8年了,期间有许多优秀的作品发表。本项目讲解的是张凯老师(超分与降噪方向知名DnCNN、IRCNN、FFDNet、SRMD、DPSR、USRNet、DPIR等极具影响力文章的作者)等人在ICCV2021上发表的论文《Designing a Practical Degradation Model for Deep Blind Image Super-Resolution》
- 该论文提出的超分辨率模型BSRGAN,目的是想构建一个能够实际应用的超分模型,作者选择对图像退化方式进行创新,手工设计了尽量能模拟真实世界中图像退化的退化模型,应用该退化模型处理高分辨率数据以生成成对的数据进行训练
- 本项目复现了手工设计的退化模型以及超分模型,将pytorch训练好的BSRGAN权重转为paddle的权重,超分辨率的效果如下:
- 效果是不是挺好的?来看看这是怎么做到的吧!
[√] 2.BSRGAN解读
- 注:这部分内容参考
- 论文作者张凯老师本人的解读:一种手工设计的广义盲图像超分退化模型
- BSRGAN超分辨网络
- 业界首个针对广义盲图像超分的人工设计退化模型
[√] 2.1 BSRGAN论文出发点
- 通常图像退化模型的定义公式为:
$$
y = (x \otimes k)↓_s + n
$$
其中,$k$为模糊核,$↓_s$代表下采样,而$n$则是表示噪声。近年来已经有很多学者意识到图像退化模型对超分辨率的重要性,涌现出基于更广泛的退化模型的盲超分辨方法、基于不成对数据的超分辨方法、以及基于相机采集的成对训练数据的超分辨方法,但是现有的方法大多只针对某一特定退化类型的图像有效。
- 因此,文章的出发点是如何设计一个模型能够处理范围更广的退化呢?
[√] 2.2 解决思路
- 解决的思路依然是从图像退化模型的公式出发,围绕着上述退化模型的3个因子:$k、 ↓_s、 n$,随机安排各因子的执行顺序,同时,每个因子又有不同的方法(例如:$↓_s$可以采用以下任一种方式:双三次、最近邻、双线性等等),可以从这些方法中为每个因子随机选取一种组成更广义的退化模型
[√] 2.3 退化模型
- 退化模型如下图所示:
- 实现的步骤如下:
- 将模糊,降采样和噪声复杂化(实用化)。模糊:采用两种模糊,分别是各向同性高斯模糊和各向异性高斯模糊;降采样:nearest、bilinear、bicubic以及up-down scaling;噪声:3D高斯噪声、JPEG噪声、相机噪声。
- 随机打乱模糊,降采样和噪声的顺序
[√] 2.4 超分网络
超分模型并不是BSRGAN的核心,现有的超分辨率模型均可以作为训练退化模型生成的图像的选择。
选择了ESRGAN作为基线模型
,并做了几点改动:
- 由于本文的目的是:在未知退化前提下,解决更广义的盲图像超分。训练数据方面采用DIV2K、Flickr2K、WED以及源自FFHQ的2000人脸图
- 采用了更大的图像块72×72
- 损失方面采用了L1、VGG感知、PatchGAN三个损失的组合,组合系数1,1,0.1
在训练超参方面,优化器为Adam,batch=48,固定学习率1e-5,整个训练在4块V100上大约花费10天
[√] 3.手工设计的退化模型复现
- 退化模型相关代码已经用paddle复现了,放在
BSRGAN/utils/utils_blindsr.py
文件中,接近800行,所以不在notebook中展示,感兴趣自行查看源码 - 本项目这部分展示如何使用退化模型,将高分辨率生成低分辨率图像
1 |
|
1 |
|
1 |
|
lq = LQ = low quality?
hq = HQ = high quality?
1 |
|
[√] 4.直接体验BSRGAN
- 由于训练十分消耗时间,4张V100训练10天才行,所以本项目就不复现和训练有关的代码了,提供转换的权重,直接体验BSRGAN,感受真实世界低分辨率图像超分重建的快感
1 |
|
1 |
|
- 指定低分辨率图像所在文件夹,以及BSRGAN权重所在路径,即可以预测
- 预测图像保存在低分辨率图像所在文件夹的同一根目录下
1 |
|
1 |
|
[√] 5.总结
- 本项目展示了BSRGAN用于训练数据的退化模型,而退化模型也是BSRGAN成功的关键
- 提供了BSRGAN的paddle模型权重,不需要训练即可体验针对真实图像退化的盲超分辨率重建模型