首页IT科技图像超分辨率重建实验报告(图像超分辨率重建(pytorch))

图像超分辨率重建实验报告(图像超分辨率重建(pytorch))

时间2025-05-04 12:10:42分类IT科技浏览3840
导读:本文代码 本文代码主体来自CVPR2020论文《Closed-loop matters: Dual regression networks for single image super-resolution》...

本文代码

         本文代码主体来自CVPR2020论文《Closed-loop matters: Dual regression networks for single image super-resolution》,但原作者并未提供论文亮点--如何使用unpair数据进行训练的代码            ,所以我在其基础上补齐了该过程的代码           。

        代码仓库:https://github.com/VitaminyW/Super_Solution

        PS:对代码存在问题可以通过私信或评论区提问                 。

一           、数据预处理

为了训练模型实现8倍超分                 ,本工作中使用BICUBIC算法对高清图像进行下采样8倍     ,从而获得作为网络输入的低分辨率图像      。

BICUBIC算法:双三次插值又称立方卷积插值         。三次卷积插值是一种更加复杂的插值方式                 。该算法利用待采样点周围16个点的灰度值作三次插值         ,不仅考虑到4个直接相邻点的灰度影响                  ,而且考虑到各邻点间灰度值变化率的影响         。其权重函数如下所示        ,

       其中a=-0.5      ,x为待插值点与插值点的距离      。插值过程可由下式所示                  ,

       其中代表距离待插值点的像素值                 。

图1. 0200.png下采图像展示

二                 、算法原理

图2.DRN网络结构图

2.1  算法目标

      在超分辨率问题中           ,存在着两个问题:

      a. 从超分辨率图像到低分辨率图像存在着非常多种下采样方式   ,即真实世界的低分辨率图像形成的原因多种多样            。

      b. 深度学习是一种基于数据的学习方式                  ,若数据集的输入是由某种特定下采方式得到的              ,则模型可能会学习到该特定下采方式的伪逆   。

2.2  解决方法以及算法原理

      a. 正向过程

           网络通过借鉴UNet网络的结构方式,通过多级下采样提取图像特征               ,并通过concat方式结合原有图像特征与上采特征图进行上采样                 ,从而产生多个高分辨率图像                 。若网络存在3个层级   ,则每个层级分别对应1倍      、2倍以及4倍分辨率重建网络               。最后通过MSE或MAE损失函数可以促使网络学习如何进行正向重建。

      b. 对偶过程

           正向过程是求解由低分辨率到高分辨率的解            ,即该问题解空间较大                 ,所以需要较为复杂的网络结构              。对偶过程指在学习数据中由高分辨率到低分辨率的下采过程     ,该过程解空间较小         ,可以使用较为简单的网络结构进行学习                  。

      c. 半监督学习

           由于对偶过程输入的为网络重建出来的高分辨率图像                  ,其学习标签为低分辨率图像        ,所以该过程不依赖于是否拥有真实超分标签      ,从而网络可以进行半监督学习   。

      d. 损失函数

        其中表示第i张低分辨率图像                  ,表示第张高分辨率图像           ,代表网络重建   ,分别代表正向过程和反向过程的评估函数                  ,代表指示是否有对应的的函数              ,若有为1,否则为0. 由函数               ,在编程中易得pair数据与unpair数据分别计算损失函数进行反向传播           。

三         、代码流程

3.1 详细步骤:

3.1.1 构建数据集                 ,数据集结构如下图所示:

下采样代码位于代码目录的dataProcessing.ipynb

图3. 数据集结构

3.1.2 设置option.py文件

        将--data_dir,--data_train,--data_val参数修改为对应数据集路径与名称                 。也可选择通过命令行输入      。

3.1.3 运行训练代码

        使用终端打开main.py所在文件目录   ,输入以下指令进行训练         。

python main.py –batch_size 32 –n_GPUs 4 –save ./experiment/training_result --model DRN-S

3.1.4 由于原文作者未提供使用unpaired数据进行网络fine-tune代码            ,本工作根据论文逻辑                 ,编写了 main_fine_tune.py代码     ,输入以下指令进行训练

python main.py –batch_size 32 –n_GPUs 4 –save ./experiment/fine_tune_result --pre_train {预训练正向模型的参数保存地址} --pre_train_dual {预训练对偶模型的参数保存地址} --model DRN-S

3.1.5 由于原文作者未提供重建unpaired数据的代码         ,本工作根据代码逻辑编写了对应main_reconstruction.py代码                  ,输入指令进行预测                 。

python main_reconstruction.py --no_augment --model DRN-S --test_only --save ./reconstruction --save_results --batch_size 1 --save ./reconstruction --pre_train {fine-turn后正向模型的参数保存地址} --pre_train_dual {fine-turn后对偶模型的参数保存地址}

3.2 过程截图

a. ./experiment/training_result文件夹下:

图4.train输出内容展示

b. ./experiment/fine_tune_result

图5.fine-tune输出内容展示

c. ./reconstruction

图6.reconstrution输出内容展示

四                 、部分结果展示

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
伪静态网站和静态网站哪个好用些(免费轻松实现网站伪静态-WordPress伪静态插件推荐) 极致网络科技有限公司(极致CMS快速助力企业网站搭建)